uni-app Android平台CPU类型配置与优化指南

Viewed 0

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,否则应用可能白屏,请根据上述配置调整。

0 Answers