15 votes

Comment savoir à quelle architecture est destiné un APK ?

J'écris un script pour tester une grande quantité d'apks. Certains fonctionnent sur x86 et d'autres sur arm. Existe-t-il un moyen de savoir quels apks sont destinés à quelle architecture ?

J'ai parcouru le rapport sur le badgeage aapt avec aapt dump badging application.apk . Pour certaines des versions compatibles avec le bras, je vois native-code: 'armeabi-v7a' mais pas pour tous, et je ne vois aucune indication de l'architecture sur laquelle fonctionnent les apks compatibles x86.

J'ai également essayé d'utiliser apktool pour décomposer l'apk et examiner le AndroidManifest.xml. Je ne vois rien non plus qui concerne l'architecture de la puce.

Je cherche quelque chose sur une plateforme linux.

Des idées ?

24voto

Joe Points 475

Un moyen (plutôt rudimentaire) de voir pour quelle architecture les bibliothèques natives d'un APK sont construites est de le dézipper (ce n'est qu'un fichier zip) et de jeter un œil au dossier libs - si l'application contient des bibliothèques natives, elles seront réparties dans les sous-dossiers suivants (avec les bibliothèques compilées à l'intérieur) :

Voir Paquet d'applications Android pour plus d'informations sur la structure d'un APK, et la source de la liste ci-dessus. Une liste plus complète (incluant MIPS64), ainsi que des informations sur des choses spécifiques à l'architecture, peut être trouvée sur une version archivée du site web de l Développeur Android Gestion ABI page, capturée le 18 avril 2016.

Il est intéressant de noter que le fait de cibler une seule ABI (où une application comprend des bibliothèques natives conçues pour une architecture) ne signifie pas nécessairement que l'application ne fonctionnera pas sur des appareils utilisant d'autres architectures. L'architecture ARMv8-a, par exemple, est rétrocompatible avec ARM et ARMv7-a, et les appareils Android x86 d'Intel contiennent une couche de traduction propriétaire qui permet au code ARM de s'exécuter sur des appareils x86 (ce qui permet aux applications exclusivement ARM de fonctionner sur des plates-formes x86). Une liste des ABI qu'un appareil Android peut exécuter se trouve dans la page d'accueil du site Web d'Android. ro.product.cpu.abilist qui peut être obtenue dans un shell (par exemple, via une application de terminal sur l'appareil, ou par l'intermédiaire de adb en utilisant adb shell ) en utilisant le getprop commandement : getprop ro.product.cpu.abilist .

1 votes

Et s'il n'y a pas de lib répertoire ?

1voto

captain_majid Points 11

Vous pouvez également utiliser APKSharp :

Un outil Windows pour débloquer, afficher tous les détails et gérer les APK sur n'importe quel Android, il contient des AAPT pour Windows et Android.

0 votes

Merci pour la réponse, mais je cherche un outil linux

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X