Google 要求从2021年下半年开始提交的新应用必须使用 Android App Bundle 来打包才能上 Google Play。超过 150MB 还必须使用 Play Asset Delivery (PAD) 的方式来代替之前的扩展文件 (*.obb) 方式。
Google 已经提供了针对 Unity 构建的方法,但是由于我们的项目打包比较特殊并且会生成 Android Studio 工程,所以采用了 针对原生代码或 Java 代码构建。
资源包(Assets Pack)
在 PAD 文档中,需要将游戏中的资源分成资源包(Asset Pack)上传到 Google Play。资源包有多种分发模式:install-time
,fast-follow
,on-demand
三种模式。
其中 install-time
有点类似与之前的 *.obb
模式,在安装好应用的同时将资源分发。只需要提交一个文件(.aab)即可,不需要提供 `.apk和
*.obb` 了。
install-time
资源包在用户安装应用时分发。这些资源包以拆分 APK(APK 集的一部分)的形式提供。它们也称为“预先”资源包;您可以在应用启动时立即使用这些资源包。这些资源包会增加 Google Play 商店上列出的应用大小。用户无法修改或删除这些资源包。更新应用时,
install-time
Asset Pack 会作为基础应用更新的一部分进行更新(开发者无需执行任何操作)。所有
install-time
Asset Pack 的总下载大小上限为 1 GB。一个 Android App Bundle 中的所有 Asset Pack 的总下载大小上限为 2 GB。
工程修改
- 导入 Play Core 库
1 | dependencies { |
- 更新 Gradle 插件版本到
4.0.0
或更高。
1 | buildscript { |
- 在项目根目录中,为 Asset Pack 创建一个文件夹。例如:
unityinstalltime
。 - 在 Asset Pack 目录中,创建
build.gradle
并添加:
1 | // In the asset pack’s build.gradle file: |
- 在项目的应用
build.gradle
文件中,添加每个 Asset Pack 的名称,如下:
1 | // In the app build.gradle file: |
- 在项目的
setting.gradle
文件中,添加 Asset Pack,如下:
1 | // In the settings.gradle file: |
- 在 Asset Pack 目录下,创建子目录
src/main/assets
,例如下图:
- 将
src/main/assets
中的内容剪切至unityinstalltime/src/main/assets
目录中。例如下图:
- 完成。
构建
使用 Android Studio 的菜单 Build -> Build Bundle(s)/APK(s) -> Build Bundle(s)
来生成,或者使用 Gradle 构建 Android App Bundle。命令如下:
1 | ./gradlew bundleRelease |
成功之后即可在项目的 build/outputs/bundle/release
目录下找到生成的 *.aab 文件。
aab 文件仍然是 zip 文件,可以解压缩打开,结构目录可以参考链接。
例如我们生成的 aab 文件目录如下:
1 | base |
其中 base
文件夹和之前的 apk
差不多,assets
被移到了 unityinstalltime
里。
安装测试
生成的 aab
文件可以使用 bundletool
来安装到设备,或者上传至 Google Play 进行测试。bundletool
下载地址。
安装步骤:
- 使用
bundletool
生成apks
文件。这块output
的文件名后缀必须为apks
。
1 | bundletool build-apks --bundle=Unity-AAB-Demo-release.aab --output=Unity-AAB-Demo-release.apks |
- 将生成的
apks
文件安装到设备上。
1 | bundletool install-apks --apks=Unity-AAB-Demo-release.apks |
参考链接
- Android App Bundle 简介,developer.android.com。
- Play Asset Delivery,developer.android.com。
- 针对原生代码或 Java 代码构建,developer.android.com。
- 使用 Gradle 构建 Android App Bundle,developer.android.com。
- bundletool,developer.android.com。