|
简介
从 2021 年 8 月起,新应用需要使用Android App Bundle才能在 Google Play 中发布。现在,Play Feature Delivery或Play Asset Delivery支持大小超过 150 MB 的新应用 Google Play 会使用您的 App Bundle 针对每种设备配置生成并提供经过优化的 APK,因此只会下载特定设备所需的代码和资源来运行您的应用。您不必再构建、签署和管理多个 APK 来优化对不同设备的支持,而用户也可以获得更小且更优化的下载文件包。 使用环境
Unity 版本:2018.4.36
包体资源
分发模式
谷歌为开发者提供了三种分发模式:
install-time:用户在 Google Play 平台上下载时包含的资源,应用启动后可以立即使用
fast-follow:资源包会在用户安装应用后立即自动下载,不需要用户打开应用,但需要判断是否下载完成
on-demand:资源包会在应用运行时下载
资源设置
针对 Unity 打包使用代码添加文件夹的方式进行设置
var assetPackConfig = new AssetPackConfig();
assetPackConfig.AddAssetsFolder("asset_base", "Assets/GoogleOutput", AssetPackDeliveryMode.InstallTime); 打包
针对 Unity 打包
1.Unity 导入 Google 提供的插件,可根据自己项目需求选择下载适合的插件包,本文只涉及 App Bundle 的构建,将使用 com.google.android.appbundle 和com.google.play.assetdelivery插件包。
适用于 Unity 的 Google Play 插件版本github.com/google/play-unity-plugins/releases
2.编写打包脚本EditorUserBuildSettings.buildAppBundle = true;
EditorUserBuildSettings.exportAsGoogleAndroidProject = false;
var assetPackConfig = new AssetPackConfig();
assetPackConfig.AddAssetsFolder("asset_base", "Assets/GoogleOutput", AssetPackDeliveryMode.InstallTime);
Bundletool.BuildBundle(new BuildPlayerOptions() {
target = BuildTarget.Android,
targetGroup = BuildTargetGroup.Android,
locationPathName = Path.Combine(Application.dataPath, "..", "Build/Android", "android-app-bundle.aab"),
scenes = new[] {
"Assets/Scenes/SampleScene.unity",
},
options = BuildOptions.None
}, assetPackConfig); 针对 Java 打包
1.针对 Java 打包需要我们导出 Android 工程,并进行一定配置后,使用 Gradle 构建 app bundle
2.编写打包脚本EditorUserBuildSettings.buildAppBundle = false;
EditorUserBuildSettings.exportAsGoogleAndroidProject = true;
BuildPipeline.BuildPlayer(new[] {
"Assets/Scenes/SampleScene.unity",
}, Path.Combine(Application.dataPath, "..", "Build/Android", "android-app-bundle"), BuildTarget.Android, BuildOptions.None); 3.导出后的工程目录如图:
Unity 导出 Android 工程目录
4.由于构建 App Bundle 需要 Gradle 插件版本在 4.0.0 以上,如果你的版本不满足需要自己去更新 Gralde 插件,并且需要将 build.gradle 配置文件中的 com.android.tools.build:gradle:x.x.x 改为你所使用的版本。
Android Gradle 插件版本说明 | Android 开发者 | Android Developersdeveloper.android.com/studio/releases/gradle-plugin?hl=zh-cn
Gradle | Releasesgradle.org/releases/
5.在根目录下创建文件夹来放你想要放进 aab 包体的资源,这里我们创建一个asset_base的文件夹
6.在 asset_base 目录下创建 build.gradle 文件,并进行配置plugins {
id 'com.android.asset-pack'
}
assetPack {
packName = "asset_base" // Directory name for the asset pack
dynamicDelivery {
deliveryType = "install-time" //分发模式
}
} 7.在根目录的 build.grade 文件中配置你的资源包名称// In the app build.gradle file:
android {
...
assetPacks = [":asset-pack-name", ":asset-pack2-name"]
} 8.在根目录的 settings.gradle 文件中,配置你的资源包名称9.在 asset_base 下创建 src/main/assets 目录,在该目录下放入你的资源目录
10.在根目录下执行 gradle wrapper 命令,成功后可以在根目录下看到 gradle 文件夹
11.在根目录下执行 .\gradlew bundleRelease 命令,成功后可以在根目录下看到 build 文件,aab 文件就在该目录下
本地测试
1.由于 Android 手机并不能直接安装 .aab 文件,为了更快的上手测试,我们还需要将 .aab 转成 apks,在通过 bundletool 工具安装到手机上,其中 bundle-tool 也需要自己准备好。
Releases · google/bundletool (github.com)github.com/google/bundletool/releases
2.aab 装成 apks 文件java -jar bundletool-all.jar build-apks --bundle=*.aab --output=*.apks 3.apks 安装到手机java -jar bundletool-all-1.9.1.jar install-apks --apks=*.apks 工程项目
本文的项目工程已上传至 github,有需要的同学请自取。
tangslover/google-aab (github.com)github.com/tangslover/google-aab
参考文章
About Android App Bundles | Android Developersdeveloper.android.com/guide/app-bundle |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|