如何判断APK打算用于哪种架构?


9

我正在编写一个脚本来测试大量的apk。有些在x86上运行,有些在手臂上运行。有什么方法可以告诉我哪些APK适用于哪种体系结构?

我浏览了有关aapt徽章的报告aapt dump badging application.apk。对于某些与手臂兼容的版本,我看到了,native-code: 'armeabi-v7a'但没有全部看到,并且看不到任何与x86兼容的apk运行的体系结构的迹象。

我也尝试过使用apktool分解apk并检查AndroidManifest.xml。我也看不到任何与芯片架构有关的东西。

有任何想法吗?

Answers:


17

查看APK的本机库所针对的体系结构的一种(相当粗略的)方法是将其解压缩(这只是一个zip文件)并查看libs文件夹-如果应用程序包含任何本机库,它们将被拆分为内部的以下子文件夹(其中的已编译库):

有关APK结构以及以上列表来源的更多信息,请参见Android应用程序包。可以在2016年4月18日捕获的Android Developer ABI Management页面的存档版本中找到更完整的列表(包括MIPS64)以及有关特定于体系结构的信息。

有趣的是,针对一个单一的ABI(其中一个应用程序包含为一种体系结构设计的本机库),并不一定意味着该应用程序不会在使用其他体系结构的设备上运行。例如,ARMv8-a 与ARM和ARMv7-a 向后兼容,英特尔的x86 Android设备包含专有的转换层,该转换层允许ARM代码在x86设备上执行(允许仅ARM的应用程序在x86平台上运行)。可以在ro.product.cpu.abilist属性中找到Android设备可以执行的ABI列表,可以使用以下命令在外壳程序中获取该ABI (例如,通过设备上的终端应用程序或使用,通过adb获取adb shell)。getpropgetprop ro.product.cpu.abilist

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.