游戏 aab 包上传谷歌,提示超过 150 MB 时需要进行应用的资源分发,所以在重打包前要做好 Play Asset Delivery(游戏资源分发)的处理 。
一、Play Asset Delivery
关于 Play Asset Delivery 的详细介绍可以看官网文档,这里不再赘述。
二、资源分发的处理
由于接触的业务是 Unity 游戏,所以是 Unity 游戏+ Gradle 打包的方式;这里以 Android Studio 为打包工具。
-
首先新建一个或多个 Android Library。
新建 Android Library -
将游戏的资源文件,也就是
assets
中的AssetBundles
文件夹,放入src/main/assets
中,如果有多个 Library 需要注意分割好资源,注意不要将游戏配置文件放进去。 -
其次配置存放资源的 Android Library 的 build.gradle 文件如下,packName 则是 Android Library 的名称,deliveryType 则是资源分发模式。
apply plugin: 'com.android.asset-pack'
assetPack {
packName = "assetsPackGameRes" // Directory name for the asset pack
dynamicDelivery {
deliveryType = "install-time"
}
}
资源分发模式分为三种:
install-time
资源包在用户安装应用时分发。如果资源是进入游戏必要的,最好使用这种模式。
fast-follow
资源包在安装应用后自动下载。
on-demand
资源包在应用运行时下载
这里由于分发资源都是进入游戏所必须的,所以使用 install-time
(用户安装时分发),其他分发模式请参考官方文档。
- 然后在 app 的 build.gradle 中添加资源包配置,assetsPacks 是存放资源的 Android Library 的名称列表,可以配置多个资源包,注意分号别漏了。
plugins {
//...
}
android {
//...
defaultConfig {
//...
assetPacks = [':assetsPackGameRes',':assetsRes2']
}
}
dependencies {
//...
}
-
然后进行 aab 的打包、安装和测试,该步骤可以参考《aab打包、安装测试以及注意事项》。
-
最后,通过对比配置资源分发后的 aab 和原来的 aab ,aab 的总体积无变化,不是说要小于150M 吗?
别急,先解包可以发现,配置分发后的 aab 中多了资源包的文件夹,而且资源包占了绝大部分的体积 。本来体积很大的 base 现在只有不到100M,只要 base 不大于150M 就可以顺利提交审核了。
三、注意事项
- 审核提示超过 150 MB,是指当用户下载应用时,安装应用所需的压缩 APK(例如,基本 APK + 配置 APK)的总大小不得超过 150 MB;配置了资源分发后,Asset Pack 也就是 资源包 的大小不计入其中。
- Unity 游戏在 aab 安装后出现黑屏或者 not enough storage space to install 的提示,需要注意要将游戏启动相关的配置文件放在 app 目录下,而不是放在资源包 中,例如 Unity 游戏的
assets
中的bin
文件夹和 config 配置等。
网友评论