# Android打包
- uni-app接入需要使用离线打包方式才能正确接入广告.
- Android离线打包可生成 自定义基座 和 正式包
- 请使用下载页指定版本的
HBuilderX,否则将出现不可预知的问题
# 打包前准备:
- IDE(开发工具):
HBuilderX(请使用下载页指定的HBuilderX: 见下载页 )、Android Studio 4.0+ - Android打包工程: 见下载页
- UNI 官方SDK for Android: 见下载页#IDE下载地址 (如果使用了uni官方的插件需要此包,请按照此压缩包内的
Feature-Android.xls来添加其他插件,收费插件不支持离线打包因此无法使用)
离线打包步骤如下:
# 1. 生成本地打包App资源
在 HBuilderX 中打包APP资源,如下图

# 2. 导入Android工程
解压UniAndroidPackage.7z,使用Android Studio 导入解压后的UniAppFNAd工程,如下图

等待导入完成后,将左侧视图切换为 Project 如下图:

# 3. 导入uni项目资源
将第1步导出的资源复制到app/assets/apps下,如下图所示:

# 4.配置应用名称
打开app/res/main/values/strings.xml文件,修改app_name字段值,该值为安装到手机上桌面显示的应用名称,建议与manifest.json中name(基础配置中的应用名称)对应,参见下图:

# 5. 配置dcloud_control.xml文件
修改dcloud_control.xml中的appid为拷贝过来的5+APP的id,确保dcloud_control.xml中的appid与manifest.json中的id与文件夹名一致,如下图所示:

# 6. 配置应用图标和启动界面
| 文件名称 | 作用 |
|---|---|
| icon.png | 应用的图标 |
| push.png | 推送消息的图标 |
| splash.png | 应用启动页的图标 |
将icon.png、push.png、splash.png放置到drawable,drawable-nodpi,drawalbe-ldpi,drawable-mdpi,drawable-hdpi,drawable-xhdpi,drawable-xxhdpi文件夹下,不同文件夹下对应不同图片尺寸
若无严格体验要求只需放在drawable或者drawable-nodpi文件夹下即可

注意
splash.png在不同设备上显示效果不一样,为防止出现拉伸的状况,建议使用Android studio生成.9.png类型图片
# 7. 配置包名和签名
在app/build.gradle文件中修改applicationId 和signingConfigs内配置
注意
包名和签名证书必须和在后台中提交的一致,否则广告将不能播放

# 8.配置权限
如果添加了插件(参考官方权限文档 (opens new window)),或者在uni工程中的"manifest.json"修改了 App权限,需要配置权限(没有添加插件和修改配置请忽略).
打开manifest.json文件,切换到“代码视图”
在 app-plus -> distribute -> android -> permissions 下找到权限:

将权限复制到 在Android Studio 打包工程中 AndroidManifest.xml 的manifest标签中(请自行去掉转义字符 "\" 和 "," 请勿将打包工程内原有权限删除 ):

# 9. 生成APK(自定义基座、正式包)
注意
如果需要生成自定义基座,请先在第5步dcloud_control.xml文件中设置根节点的debug="true" syncDebug="true"如下图所示(打正式包时请删除,否则将会弹出提示"当前应用运行在调试基座中"")

点击右方 gradle => app => Tasks => assemble 即可生成apk (没有Tasks选项?点击常用问题解决4查看解决方案)

生成的app路径如下图:

android_debug.apk为调试包,即自定义基座(请勿将此包分发给用户使用)。
release文件夹下的APK为正式包,可分发给用户使用。
# 10. 自定义基座的使用
将生成的android_debug.apk复制到HbuilderX项目中的unpackage/debug目录中(没有此目录请创建),并在运行基座中选择自定义基座即可开始调试uni代码

若没有自定义调试基座选项,请检查是否正确放置了自定义基座
# 常见问题
# (1).编译版本不一致
若出现提示SDK版本与编译版本不一致(见下图):

请下载文档中指定版本的的HBuilderX HBuilderX 下载地址
使用该版本的HBuilderX打包即可(请勿升级HBuilderX版本)
# (2).插件或者某些功能更无法使用
- 如果使用了uni官方插件导致离线打包后无法正常使用插件,请参照下载页
Uni官方SDK For Android压缩包内的Feature-Android.xls来添加其他插件和官方插件离线打包文档(opens new window)添加插件; - 如果使用了第三方插件导致离线打包后无法正常使用插件,请参照对应插件的文档来添加插件(因收费插件官方不支持离线打包,如果您采用了收费插件,请根据情况选择不使用收费插件或者不接入广告);
# (3).无法使用某些API
打包后无法正常运行或者无法使用某些API,请检查是否使用了2.8.11之后新增的API,如果是,请用其他方式代替该API
# (4).gradle窗口中没有Tasks
在Android Studio中打开设置页面( File => Settings ), 取消勾选Do not build Gradle task list during Gradle sync

然后点击Android Studio上方的Sync Project with Gradle Files等待任务执行完毕Tasks即可展示(见下图).
