Android平台配置CPU类型主要针对使用C/C++语言开发的so库,以提高运行效率。这些so库需要为不同的CPU类型平台单独编译生成对应指令的版本。而Java语言开发的代码运行在虚拟机中,由虚拟机适配CPU类型,不涉及此问题。
在5+ app或uni-app项目中,许多功能模块依赖so库,例如:
- Audio(录音):支持mp3格式。
- Geolocation(定位):基于百度地图。
- LivePush(直播推流)。
- Maps(地图):支持高德和百度地图。
- OAuth(登录鉴权):支持新浪微博。
- Push(消息推送):使用个推或UniPush。
- Share(分享):支持新浪微博。
- Speech(语音输入):基于百度技术,注意讯飞语音不支持64位CPU。
- Weex(原生渲染):适用于uni-app的自定义组件模式和nvue页面,需要HBuilderX 2.1.5及以上版本。
- Android X5 Webview(腾讯TBS):使用腾讯X5内核,注意不支持x86 CPU。
从HBuilderX 2.7.0版本开始,云端打包默认不再包含x86 CPU类型库,以减少apk包体积。同时,HBuilderX 2.1.5及以上版本支持Android平台适配64位CPU类型,满足Google Play从2019年8月1日起要求上传的App必须支持64位CPU的规定。
CPU类型
HBuilderX已适配支持以下主流CPU类型:
- armeabi-v7a:第7代及以上的ARM处理器(ARM32位),市面上大多数手机使用此CPU类型。
- arm64-v8a:第8代、64位ARM处理器(ARM64位),近年新设备使用此类型,可兼容armeabi-v7a的so库。
- x86:少部分平板和模拟器使用,如AS模拟器中选择了Intel x86时。注意,不支持64位x86指令(即x86_64)。
对于模拟器兼容性,常见情况如下:
- 雷电模拟器:3.x版本必须包含x86,否则无法正常运行;4.x版本无需x86。
- 夜神模拟器:必须包含x86。
- MuMu模拟器:无需x86。
- 逍遥模拟器:无需x86。
- BlueStacks(蓝叠模拟器):无需x86。
- 腾讯模拟器(手游助手):必须包含x86。
- 其他模拟器:建议包含x86以确保正常运行。
配置支持的CPU类型
您可以通过可视化界面或源码视图配置支持的CPU类型。
可视化界面配置:
在5+ app或uni-app项目中,打开manifest.json文件,进入“App常用其它设置” -> “Android设置” -> “支持CPU类型”,勾选需要支持的CPU类型。注意,uni-app x项目暂不支持可视化配置。
源码视图配置:
打开manifest.json文件并切换到“源码视图”,根据项目类型配置:
- 对于5+ app或uni-app项目,在"app-plus" -> "distribute" -> "android"节点的abiFilters属性中配置CPU类型,例如设置abiFilters为["armeabi-v7a", "arm64-v8a"]。
- 对于uni-app x项目,在"app" -> "distribute" -> "android"节点的abiFilters属性中配置。
离线打包配置:
使用Android Studio打开原生项目,在build.gradle文件的Android -> defaultConfig下添加支持的CPU类型。注意,离线打包仅支持arm64-v8a、armeabi-v7a和x86三种类型,建议根据需求选择。
默认值
- HBuilderX 3.92及以下版本:默认支持armeabi-v7a。
- HBuilderX 3.93及以上版本:默认调整为arm64-v8a,以充分发挥CPU性能,解决部分华为鸿蒙新设备(如Mate60、Mate X5等)应用启动慢的问题。
CPU类型选择建议
ARM64位(arm64-v8a)CPU可以兼容ARM32指令,因此仅选择armeabi-v7a也能在64位设备上运行,但无法完全发挥性能。选择时参考以下建议:
- 如果不在意apk大小,勾选所有三种类型。
- 若要充分发挥新设备性能,选择arm64-v8a。
- 若在意apk大小,选择armeabi-v7a(几乎兼容所有ARM设备)。
- 平衡性能和大小,建议选择armeabi-v7a和arm64-v8a。
- 若要兼容平板和模拟器,选择armeabi-v7a和x86。注意,并非所有模拟器仅支持x86,如雷电4.x和MuMu模拟器也支持ARM指令。
查看apk支持的CPU类型
使用解压工具打开apk文件,查看lib目录下的子文件夹名称,即可确认支持的CPU类型。
常见问题
在部分华为鸿蒙设备上启动应用慢的问题
部分华为新设备(如Mate60、Mate X5)的芯片在运行32位应用时限制CPU性能,导致启动缓慢。勾选arm64-v8a可以解决此问题,建议开发者尽量支持64位以适配更多新设备。
CPU类型配置了x86,云端打包后却没有包含x86
如果勾选了不支持x86的内置模块或uni原生插件,云端打包后将不包含x86。例如:
- 内置模块中的Android X5 Webview(腾讯TBS)不支持x86。
- uni原生插件的兼容性可在插件详情页面的“平台兼容性”中查看,或通过package.json的abis属性配置确认。
上架Google Play市场对CPU类型的要求
提交Google Play时要求支持64位CPU,建议选择armeabi-v7a和arm64-v8a,或仅选择arm64-v8a。注意不要勾选x86。
CPU类型错误安装提示
如果打包选择的CPU类型与设备不兼容,可能导致无法安装。例如,在Android Studio的x86模拟器上安装不包含x86的apk时,会弹出错误提示。
HBuilderX 2.7.0+ 云端打包默认CPU类型不再包含x86
从HBuilderX 2.7.0开始,云端打包默认排除x86以减少apk大小。对于uni-app项目,基础功能apk可减少5M以上;对于5+ App或Wap2App项目,减少体积取决于使用的三方SDK。注意,大多数模拟器(如夜神)需要包含x86,否则应用可能白屏,请根据上述配置调整。