Program Tip

Android : APK가 대상으로하는 플랫폼 버전을 찾는 방법은 무엇입니까?

programtip 2020. 12. 14. 20:47
반응형

Android : APK가 대상으로하는 플랫폼 버전을 찾는 방법은 무엇입니까?


APK가 주어지면 어떤 버전의 Android 플랫폼을 대상으로 하는지를 결정할 수 있습니까?


APK를 추출하고 매니페스트 파일에서 플랫폼 대상을 찾을 수 있습니다.


사용 aapt:

aapt list -a package.apk | grep SdkVersion

16 진수로 버전 번호가 표시됩니다. 예 :

  A: android:minSdkVersion(0x0101020c)=(type 0x10)0x3
  A: android:targetSdkVersion(0x01010270)=(type 0x10)0xc

이 APK를 들어, minSdkVersion이다 0x3, 즉 3, targetSdkVersion이다 0xc예 (12).


apktool 사용

java -jar apktool.jar d app.apk

그런 다음 생성 된 apktool.yml 파일에서이를 확인합니다.

sdkInfo:
  minSdkVersion: '11'
  targetSdkVersion: '17'

여기 에서 SDK 버전을 Android 버전과 일치시킬 수 있습니다 . 위의 예에서 최소 Android 버전은 3.0이고 대상 버전은 4.2입니다.


간단히 사용 aapt dump badging my_apk_file.apk하여 APK에 대한 많은 정보를 얻으십시오. 버전 별 grep 필터aapt dump badging my_apk_file.apk|grep Version

산출

sdkVersion:'9'
targetSdkVersion:'24'

apkanalyzer를 사용할 수 있으며 Android SDK 도구에 포함되어 있습니다. 자세한 정보는 여기 https://developer.android.com/studio/command-line/apkanalyzer

최소 SDK 버전을 인쇄합니다.

apkanalyzer -h manifest min-sdk myapk.apk

대상 SDK 버전을 인쇄합니다.

apkanalyzer -h manifest target-sdk myapk.apk

데릭이 위에서 말한 것처럼

apktool사용하여 apk를 디 컴파일하고 매니페스트 버전을 확인하십시오.

플랫폼 버전은 여기 에서 찾을 수 있습니다 .


grep이 없으면 다음을 사용할 수 있습니다.

aapt list -a package.apk >file.txt

file.txt에서 minSdkVersion 및 targetSdkVersion을 검색합니다.


다음 명령을 실행하여 API 레벨 (정수) 만 가져올 수 있습니다.

aapt dump badging "your_apk.apk" | awk '/targetSdkVersion/{gsub("targetSdkVersion:''|''","");  print $1}'

KitKat (API 19)에 대해 컴파일 된 경우 얻을 수있는 출력은 다음과 같습니다.

19

추신 : aapt는 폴더에 <Android-Sdk>/build-tools/<build-tools-version>/있습니다.


If you want to find these info from your mobile device you can install My APK app which gives you good information about apps You can get it at https://play.google.com/store/apps/details?id=com.andatsoft.myapk.fwa&hl=en

The app which you want to have these information about, must either installed on your mobile device or you must have the app apk on your mobile.


if you want it programmatically try use PackageManager class:

public PackageManager getPackageArchiveInfo(String archiveFilePath, int flags)

then read ApplicationInfo field and targetSdkVersion in it;


If you are using Nautilus, you can add a column provider and a property page provider for APK files. This will provide lots of informations, including SdkVersion.

Steps are explained on this link : http://bernaerts.dyndns.org/linux/76-gnome/324-gnome-nautilus-apk-column-property-provider-extension

Cheers.


You can use http://www.javadecompilers.com/apk to decomplier file apk and you can find it in Mandifest


Another bush util function:

function android-target-sdk-version {
    aapt list -a $1 | grep targetSdkVersion | grep -o '....$' | awk '{print $1+0}'
}

참고URL : https://stackoverflow.com/questions/8300822/android-how-to-find-which-platform-version-an-apk-targets

반응형