73 votes

Android : Comment trouver la version de la plateforme visée par un APK ?

Étant donné un APK, est-il possible de déterminer quelle version de la plate-forme Android il cible ?

106voto

chiuki Points 4334

Utilisez aapt :

aapt list -a package.apk | grep SdkVersion

Vous verrez les numéros de version en hexagone, par exemple :

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

Pour cet apk, minSdkVersion es 0x3 c'est-à-dire 3, et targetSdkVersion es 0xc c'est-à-dire 12.

18 votes

aapt est disponible en sdk\build-tools\XX.X.X .

6 votes

La réponse de @Thupten dit d'utiliser aapt dump badging au lieu de aapt list -a qui donne une sortie plus lisible.

0 votes

Existe-t-il un moyen d'utiliser cet outil pour savoir quelle architecture est prise en charge ? par exemple, x86 ou arm.

34voto

miles82 Points 1810

Utilisez apktool

java -jar apktool.jar d app.apk

Regardez ensuite dans le fichier apktool.yml généré pour cela :

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

Vous pouvez faire correspondre la version du SDK à la version d'Android. aquí . Dans l'exemple ci-dessus, la version minimale d'Android est 3.0 et la version cible est 4.2.

3 votes

Merci pour l'astuce du .yml. J'ai utilisé apktool, j'ai regardé dans AndroidManifest.xml et j'ai été confus de découvrir que l'information que je voulais était manquante ! Je n'ai pas pensé à regarder dans le fichier .yml.

0 votes

Exactement comme @ajh158 l'a mentionné, confus. Merci !

33voto

Thupten Points 344

Utilisez simplement aapt dump badging my_apk_file.apk pour obtenir beaucoup d'informations sur votre apk. grep filtre par Version aapt dump badging my_apk_file.apk|grep Version

Sortie avec $ANDROID_SDK_ROOT/build-tools/30.0.3/aapt :

package: name=... versionCode=... versionName=... compileSdkVersion='29' compileSdkVersionCodename='10'
sdkVersion:'11'
targetSdkVersion:'29'

L'apk de toute application installée $app (par exemple com.google.Android.apps.docs ) peuvent être récupérés sur votre appareil avec :

adb pull $(adb shell dumpsys package $app | grep path: | cut -c11-) $app.apk

15voto

Tejpal Sharma Points 150

Vous pouvez utiliser apkanalyzer, il est inclus dans les outils Android SDK, plus d'infos ici. https://developer.Android.com/studio/command-line/apkanalyzer

Imprime la version minimale du SDK.

apkanalyzer -h manifest min-sdk myapk.apk

Imprime la version du SDK cible

apkanalyzer -h manifest target-sdk myapk.apk

1 votes

8voto

RealCasually Points 1288

Vous pouvez extraire l'APK et rechercher dans le fichier manifeste la plateforme cible.

23 votes

Le manifeste n'est pas lisible par l'homme après avoir été compilé. Vous devrez peut-être utiliser un outil pour en extraire les valeurs.

0 votes

Des outils que vous connaissez ?

1 votes

Vous pouvez utiliser aapt list . voir la réponse de @Sylvain

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X