Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
unidocs-zh
提交
1802dba0
unidocs-zh
项目概览
DCloud
/
unidocs-zh
通知
3172
Star
105
Fork
804
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
93
列表
看板
标记
里程碑
合并请求
67
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
unidocs-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
93
Issue
93
列表
看板
标记
里程碑
合并请求
67
合并请求
67
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
1802dba0
编写于
3月 14, 2022
作者:
DCloud-yyl
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add app-android-abifilters.md
上级
a106d025
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
129 addition
and
0 deletion
+129
-0
docs/app-android-abifilters.md
docs/app-android-abifilters.md
+129
-0
未找到文件。
docs/app-android-abifilters.md
0 → 100644
浏览文件 @
1802dba0
Android平台配置CPU类型针对的是为了提高运行效率使用C/C++语言开发生成的so库,需要为各cpu类型平台单独编译生成对应指令的so库。Java语言开发的代码运行在虚拟机中,由虚拟机适配CPU类型,不涉及到此问题。
HBuilder/HBuilderX中使用so库的功能(模块)
-
Audio(录音):支持mp3格式
-
Geolocation(定位):百度
-
LivePush(直播推流)
-
Maps(地图):高德、百度
-
OAuth(登录鉴权):新浪微博
-
Push(消息推送):个推、UniPush
-
Share(分享):新浪微博
-
Speech(语音输入):百度,
**注意:讯飞不支持64位**
-
Weex(原生渲染):uni-app(自定义组件模式、nvue页面),
**注意:HBuilderX2.1.5及以上版本支持**
> HBuilderX2.7.0+ 调整 云端打包默认不再包含 x86 CPU类型库,减少apk包体积[详情](id=nox86)
> HBuilderX2.1.5+ 开始支持Android平台的新增适配64位CPU类型,云端打包支持配置App支持的CPU类型
> 满足Google Play从2019年8月1日起上传的App必需支持64位CPU的要求。
### CPU类型
HBulderX已适配支持以下主流CPU类型:
-
armeabi-v7a
第7代及以上的ARM处理器(ARM32位),市面上大多数手机使用此CPU类型。
-
arm64-v8a
第8代、64位ARM处理器(ARM64位),最近两年新发的设备使用此CPU类型,可以兼容使用armeabi-v7a的so库。
-
x86
少部分平板使用x86,AS模拟器中选了intel x86时使用x86处理器,以及其它常用三方模拟器通常使用x86
**注意:不勾选x86在模拟器上可能无法正常运行,以下是常见模拟器是否需要包含x86的情况**
-
雷电模拟器:
3.
x必须包含x86,否则无法正常运行;4.x无需包含x86。
-
夜神模拟器:
必须包含x86,否则无法正常运行
-
MuMu模拟器:
无需包含x86
-
逍遥模拟器:
无需包含x86
-
BlueStacks(蓝叠模拟器):
无需包含x86
-
腾讯模拟器(手游助手):
必须包含x86,否则无法正常运行
-
其它模拟器:
未测试验证,建议包含x86,确保在模拟器正常运行
### 配置支持的CPU类型
**可视化界面配置**
打开项目的manifest.json文件,在 “App常用其它设置” -> “Android设置” -> “支持CPU类型” 项中勾选需要支持的CPU类型:
![](
https://native-res.dcloud.net.cn/images/uniapp/others/abifilters-manifest.png
)
**源码视图配置**
打开项目的manifest.json文件,切换到“源码视图”,根据项目类型进行配置
-
uni-app项目
在 "app-plus"->"distribute"->"android" 节点的 abiFilters 属性配置支持的CPU类型,示例如下:
```
js
"
app-plus
"
:
{
"
distribute
"
:
{
"
android
"
:
{
"
abiFilters
"
:
[
"
armeabi-v7a
"
,
"
arm64-v8a
"
]
//...
},
//...
},
//...
},
//..
```
#### 离线打包配置
使用Android studio打开Android原生项目,打开对应项目的build.gradle文件。
在Android -> defaultConfig下添加支持的CPU类型,如下示例:
```
defaultConfig{
ndk {
abiFilters 'arm64-v8a','armeabi-v7a'
}
}
```
**注意:离线打包仅支持arm64-v8a、armeabi-v7a、x86三种类型,建议根据自己需求选择打包的CPU类型**
### CPU类型选择建议
ARM64位(arm64-v8a)CPU可以兼容ARM32的指令,也就是说只选择armeabi-v7a类型的so库也可以在64位手机上运行,只是没有完全发挥CPU的性能。
选择支持的CPU类型时请参考以下建议:
-
如果不在意apk大小,三种CPU类型都勾选
-
如果在意apk大小,选择ARM32位即可(几乎在所有ARM指令的所有设备上都可正常运行)
-
如果要兼容一些平板和模拟器,选择ARM32位和X86
不是所有模拟都仅支持x86指令,如雷电(4.x)、MuMu等模拟器也是支持ARM指令。
### 查看apk支持的CPU类型
使用解压工具打开apk,在lib目录下可以查看到支持的CPU类型,如下图所示:
![](
https://native-res.dcloud.net.cn/images/uniapp/others/abifilters-apk.png
)
### 常见问题
#### 上架Google Play市场对CPU类型的要求
提交Google Play时要求支持64位,建议选择"armeabi-v7a"和"arm64-v8a"两个即可,也可以只选择"arm64-v8a"。
**注意:不要勾选"x86"**
#### CPU类型错误安装提示
如果打包选择的CPU类型与设备不兼容,会导致无法正常安装。
通过adb命令安装通常会提示如下错误:
```
Performing Streamed Install
adb: failed to install android_debug.apk: Failure [INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries, res=-113]
```
使用Android Studio自带的x86模拟器,将不包含x86 cpu类型的apk拖到模拟器安装时会弹出如下提示框:
![](
https://native-res.dcloud.net.cn/images/uniapp/others/abifilters-error.png
)
<a
id=
"nox86"
/>
#### HBuilderx2.7.0+ 云端打包默认CPU类型不再包含x86
目前市面上常见的手机都是使用ARM处理器,很少有设备使用x86处理器,因此从HBuilderX2.7.0开始云端打包调整为默认不再包含x86的CPU类型,减少apk包大小:
-
uni-app项目
基础功能apk减少5M+,使用的三方SDK及uni原生插件越多,减少的包尺寸越大,具体值取决于其包含的x86类型的so库大小
-
5+App、Wap2App项目
基础功能apk减少100K+,如果使用的三方SDK中存在so库则减少的尺寸较大,具体值取决于其包含的x86类型的so库大小
**注意:大多数模拟器(如夜神)必须包含x86,否则应用启动时可能会白屏,请根据上面教程进行配置**
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录