Як сказати, для якої архітектури призначений APK?


9

Я пишу сценарій для тестування великої кількості apks. Деякі працюють на x86, а деякі працюють на руку. Чи є спосіб я визначити, які apks призначені для якої архітектури?

Я ознайомився з доповіддю про aapt badging aapt dump badging application.apk. Для деяких версій, сумісних із зброєю, я бачу, native-code: 'armeabi-v7a'але не для всіх, і я не бачу жодних ознак того, на якій архітектурі працює версія x86, сумісна з apks.

Я також спробував використовувати apktool, щоб розбити apk і вивчити AndroidManifest.xml. Я також не бачу нічого, що стосується архітектури мікросхем.

Будь-які ідеї?

Відповіді:


17

Один (досить грубий) спосіб зрозуміти, для якої архітектури створені рідні бібліотеки APK, - розпакувати її (це лише zip-файл) і подивитися на папку libs - якщо програма містить будь-які рідні бібліотеки, вони будуть розбиті на наступні підпапки всередині (зі складеними бібліотеками всередині них):

Додаткову інформацію про структуру APK та джерело вищевказаного списку див. У програмі Android Application Package . Більш повний (включаючи MIPS64) список, а також деяку інформацію про специфічні для архітектури речі можна знайти на архівованій версії сторінки управління розробниками Android ABI , відзнятої 18 квітня 2016 року.

Цікаво, що націлювання на один єдиний ABI (де додаток включає в себе власні бібліотеки, призначені для однієї архітектури) не обов'язково означає, що додаток не працюватиме на пристроях, які використовують інші архітектури. Наприклад, ARMv8-a назад сумісний з ARM та ARMv7-a, а пристрої Android x86 Android містять власний перекладовий шар, який дозволяє ARM-коду виконуватись на пристроях x86 (дозволяючи додаткам, що працюють лише для ARM, працювати на платформах x86). Перелік АБИС , що Android пристрій може виконати , можна знайти в ro.product.cpu.abilistвласності, яка може бути досягнута в оболонці (наприклад , через термінальне додаток на пристрої, або через ADB , використовуючи adb shell) , використовуючи getpropкоманду: getprop ro.product.cpu.abilist.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.