一、简介
-
Android设备CPU类型,通常称为ABIs:armeabi: 第5代、第6代的ARM处理器,早期的手机用的比较多。armeabi-v7a: 第7代及以上的ARM处理器。arm64-v8a: 第8代64位ARM处理器,2016年之后中高端的手机,比如骁龙8系列、麒麟9系列、联发科1000+等。x86:平板、模拟器用得比较多。x86_64:64位的平板。
-
常说的
骁龙865、麒麟990不是CPU而是SoC(System On Chip),SoC除了CPU外,还有GPU,还有可选的浮点数加速器,专用于深度模型的加速器,等等。除此以外,SoC还包括运存,基带芯片等等一系列集成式的东西,比电脑上的CPU集成度更高。
二、查看设备或模拟器支持的 cpu 架构
-
方法一:下载
Devcheck,安装后,在系统信息这一栏中点击,可以查看当前的架构。 -
方法二:查看手机的
SOC,查找该SOC的信息,比如A55+A76,然后去查找对应的ARM信息。 -
方法三:配置好
adb环境,通过adb查询,该方案需提前准备:1、首先将手机与电脑连接。
2、打开手机的开发者模式 并 开启USB调试,这里每个手机的位置不完全相同,请自行百度。
3、查询需要
adb,如果本地有安卓环境,存在adb,可以直接使用本地的即可,不需要下载 ADB Kits,附:Mac 安卓(Android) 配置 adb 路径配置。如果没有安卓环境,则需要下载 ADB Kits,解压安装包,并在当前文件下打开
cmd(Windows窗口的文件夹下输入cmd就可以直接定位到当前路径);如果用不了,可以看看 单纯搭建 adb 环境与使用。然后打开命令行,输入以下代码查看手机
CPU的ABIs(操作过程中手机可能会弹窗usb调试授权,选择授权即可)-
只有一台设备或模拟器连接
# 查看设备列表 $ adb devices * List of devices attached * 76fbaa2d device # 只有一台设备或模拟器连接,可以直接执行会输出 cpu 类型 # 如果有环境,可以使用 adb 环境变量全局指令 # 如果没有环境,可以进入下载的 ADB Kits 文件件,使用 adb 指令 $ adb shell getprop ro.product.cpu.abi # 查看打印的字符 arm64-v8a -
多台设备或模拟器连接
# 查看设备列表 $ adb devices * List of devices attached * 76fbaa2d device * 127.0.0.1:6555 device # 如果多台设备或模拟器连接,需要指定输出某一台设备的 cpu 类型 $ adb -s 76fbaa2d shell getprop ro.product.cpu.abi $ adb -s 127.0.0.1:6555 shell getprop ro.product.cpu.abi # 查看打印的字符 arm64-v8a -
输出设备支持的更多 cpu 架构类型
# 查看设备列表 $ adb devices * List of devices attached * 76fbaa2d device * 127.0.0.1:6555 device * # 只有一台设备或模拟器连接,可以直接执行会输出所支持的所有 cpu 类型 $ adb shell getprop ro.product.cpu.abilist # 如果多台设备或模拟器连接,需要指定输出某一台设备的 cpu 类型 $ adb -s 76fbaa2d shell getprop ro.product.cpu.abilist $ adb -s 127.0.0.1:6555 shell getprop ro.product.cpu.abilist # 查看打印的字符 arm64-v8a,armeabi-v7a,armeabi
-
三、查看 apk 支持的 cpu 架构
-
细节:
如果使用
apktool没有找到lib文件夹或aapt也没有输出对应内容,这通常意味着该APK文件可能不包含原生库(native libraries),而是一个纯 Java 应用。纯 Java 应用不依赖于特定的CPU 架构,因此不会包含特定的CPU ABI文件夹,它可以在任意Android设备上运行而不依赖于特定的CPU ABI。
方法 1:使用 apktool【推荐】
-
apktool是另一个强大的工具,能够反编译 APK 文件。你可以使用它来查看 APK 的详细信息,包括支持的 ABI。-
原本安装
apktool,只要安装好Java Development Kit (JDK)会自带。但是可以简单来 按这篇文章下载好脚本包执行指令即可,包含apktool安装使用。 -
使用命令反编译 APK,
推荐按上面附带文章中的方式执行指令。$ java -jar apktool.jar d path/to/your/app.apk -
查看反编译后的文件:在反编译的目录中,查看
AndroidManifest.xml文件,通常可以找到支持的ABI信息。如果在
AndroidManifest.xml文件没有看到,查看apktool反编译后的lib目录,展开该目录通常会包含针对不同ABI的文件夹,如:lib/armeabi-v7a/lib/arm64-v8a/lib/x86/lib/x86_64/
这些文件夹的存在表示
APK支持对应的CPU ABI。
-
方法 2:使用 aapt 工具
-
aapt是Android SDK中的一个工具,可以用于分析APK文件。以下是使用aapt查看APK支持的CPU ABI的步骤:-
确保已安装 Android SDK:
aapt工具通常包含在Android SDK的build-tools目录下。附:aapt 与 aapt2 的区别与安装 -
打开终端或命令提示符。
-
运行以下命令:
$ aapt dump badging path/to/your/app.apk | grep native-code将
path/to/your/app.apk替换为你的 APK 文件的实际路径。 -
查看输出:该命令的输出将包含类似于以下内容的信息:
$ native-code: 'armeabi-v7a' 'arm64-v8a' 'x86' 'x86_64'这表示该
APK支持的CPU ABI列表。
-
方法 3:使用 APK 分析器(Android Studio)
-
如果你更喜欢图形界面,可以使用
Android Studio提供的APK分析器,但是好像需要知道证书账号密码。- 打开 Android Studio。
- 在菜单中选择
Build>Analyze APK...。 - 选择要分析的 APK 文件,然后点击
OK。 - 在 APK 分析器中,你可以查看
APK的详细信息,包括支持的CPU ABI。查找ABI或Native Libraries部分,查看支持的ABI列表。
四、扩展
-
其他指令
-
查看连接的手机设备,未连接会报错,报错参考。
$ adb devices # 如果设备显示错误,可以通过重启 adb 服务来刷新 $ adb kill-server $ adb start-server
-
-
参考文章