Android:如何找到APK定位的平台版本?

zer*_*lus 59 android

给定一个APK,是否有可能确定它所针对的Android平台版本?

chi*_*uki 77

用途aapt:

aapt list -a package.apk | grep SdkVersion
Run Code Online (Sandbox Code Playgroud)

您将看到十六进制版本号.例如:

  A: android:minSdkVersion(0x0101020c)=(type 0x10)0x3
  A: android:targetSdkVersion(0x01010270)=(type 0x10)0xc
Run Code Online (Sandbox Code Playgroud)

对于此apk,minSdkVersion0x3即3,并且targetSdkVersion0xc即12.

  • `aapt`在`sdk\build-tools\XX.XX`中可用. (11认同)
  • @ Thupten的回答说使用`aapt dump badging`代替`aapt list -a`,它提供了更可读的输出. (5认同)

mil*_*s82 26

使用apktool

java -jar apktool.jar d app.apk
Run Code Online (Sandbox Code Playgroud)

然后查看生成的apktool.yml文件:

sdkInfo:
  minSdkVersion: '11'
  targetSdkVersion: '17'
Run Code Online (Sandbox Code Playgroud)

您可以在此处将SDK版本与Android版本进行匹配.在上面的示例中,最小Android版本为3.0,目标版本为4.2.

  • 感谢.yml提示.我使用了apktool,在AndroidManifest.xml中查看并且很困惑地发现我想要的信息丢失了!没想到要查看.yml文件. (3认同)

Thu*_*ten 20

只是aapt dump badging my_apk_file.apk用来获取有关你的apk的大量信息.grep按版本过滤 aapt dump badging my_apk_file.apk|grep Version

产量

sdkVersion:'9'
targetSdkVersion:'24'
Run Code Online (Sandbox Code Playgroud)


Rea*_*lly 8

您可以提取APK并在清单文件中查找平台目标.

  • 在编译之后,Manifest不是人类可读的.您可能必须使用某些工具来获取值. (16认同)

Tej*_*rma 7

您可以使用apkanalyzer,它包含在Android SDK工具中,更多信息参见https://developer.android.com/studio/command-line/apkanalyzer

打印最低的SDK版本。

apkanalyzer -h manifest min-sdk myapk.apk
Run Code Online (Sandbox Code Playgroud)

打印目标SDK版本

apkanalyzer -h manifest target-sdk myapk.apk
Run Code Online (Sandbox Code Playgroud)