解决aab上传GooglePlay超过150M的问题及aab包测试方法
Google .aab打包问题处理(大于150M及aab安装) - 简书 (jianshu.com)assetPack{deliveryType = "install-time"//PAD资源分发 安装时分发}}
Google .aab打包问题处理(大于150M及aab安装)
Google .aab打包问题处理(大于150M及aab安装) - 简书 (jianshu.com)https://www.jianshu.com/p/8e3de2c6300c
这里原因是因为aab里base文件夹大小 导致他用base文件夹来做基础apk就会很大(150M以内) 并不是指aab文件大小
解决方案:把base里的资源拆到其他的module里作为install-pak 也就是谷歌推出的PAD 资源包。
1:对你的android studio 工程 右键 新建一个module。
2:打开重命名后的module 里的 build.gradle文件,添加以下代码:
applyplugin:'com.android.library'
applyplugin:'com.android.asset-pack'
assetPack{
packName = "install_time_asset_pack"
dynamicDelivery{
deliveryType = "install-time" //PAD资源分发 安装时分发
}
}
3:修改项目setting.gradle 确保有引用改名后的module (没有引用会导致aab包突然减小很大的体积 属于丢资源了)。
4:修改主项目的 build.gradle (就是项目目录下的 build.gradle),注意:unity2019.4.13以上版本是依赖库导入在unityLibrary下面的build.gradle,//PAD资源分发是添加再 launcher下面的build.gradle。
加入依赖implementation 'com.google.android.play:core:1.10.0' //PAD资源分发
assetPacks = [":install-time-asset_pack"] //PAD资源分发
注意这里的complieSdkVersion 和 targetSdkVersion一定要>= 30 不然会提示 assetPacks build失败
检查一下项目 build.gradle gradle版本是否>= 4.0 android Studio 版本 这个要大于4.0。
5:开始拷贝主项目里的assets 目录里的所有文件资源 拷贝到 install-time-asset_pack 对应asset 目录里。install-time-asset_pack 没有assets 目录就新建一个。
6:检查一下是否支持androidX 在 gradle.properities 里添加。
android.useAndroidX=true
android.enableJetifier=true
7:开始打aab包测试,完美解决base文件夹大于150M。
官网关于PAD机制的介绍
Android 开发者 | Android Developers (google.cn)https://developer.android.google.cn/guide/app-bundle/asset-delivery
Play Asset Delivery
Play Asset Delivery (PAD) 将 app bundle 的优势带到游戏中。它允许超过 150 MB 的游戏替换旧版扩展文件 (OBB),方法是将包含游戏所需的所有资源的单个工件发布到 Play。PAD 提供了灵活的分发模式、自动更新、压缩和增量修补功能,并且可免费使用。使用 PAD,所有资源包均在 Google Play 上托管和提供,因此您无需使用内容分发网络 (CDN) 向玩家提供游戏资源。
Play Asset Delivery 使用资源包,资源包由资源(如纹理、着色器和声音)组成,但不包含可执行代码。通过 Dynamic Delivery,您可以按照以下三种分发模式自定义如何以及何时将各个资源包下载到设备上:安装时分发、快速跟进式分发和按需分发。
如果您希望直接跳至在游戏中实现 PAD,请参阅后续步骤。
分发模式
install-time
资源包在用户安装应用时分发。这些资源包以拆分 APK(APK 集的一部分)的形式提供。它们也称为“预先”资源包;您可以在应用启动时立即使用这些资源包。这些资源包会增加 Google Play 商店上列出的应用大小。用户无法修改或删除这些资源包。
fast-follow
资源包会在用户安装应用后立即自动下载;用户无需打开应用即可开始 fast-follow
下载。此类下载不会阻止用户访问应用。这些资源包会增加 Google Play 商店上列出的应用大小。
on-demand
资源包会在应用运行时下载。
Google Play 商店会以归档文件(而非拆分 APK)的形式提供配置为 fast-follow
和 on-demand
的资源包。这些资源包随后会在应用的内部存储空间中展开。您可以使用 Play Core API 查询以这种方式提供的资源包的位置。应用无法假设这些文件的存在或其位置,因为它们可能会被用户删除,或由 Play Core SDK 在游戏会话之间移动。尽管这些文件可由应用写入,您也应将其视为只读文件,因为资源包补丁程序依赖于这些文件的完整性。
资源更新
更新应用时,install-time
Asset Pack 会作为基础应用更新的一部分进行更新(开发者无需执行任何操作)。
对于 fast-follow
和 on-demand
Asset Pack 的应用更新,则遵循以下步骤:
- 系统将应用的补丁程序(包括所有资产)下载到设备上的安全位置。
- 更新应用二进制文件;这包括所有
install-time
Asset Pack。 - 之前下载的所有 Asset Pack 变为无效。
- 将资产的补丁程序复制并应用到存储在应用内部存储空间中的资产。
在大多数情况下,当用户打开游戏时,整体更新已完成,用户可以立即开始玩更新后的版本。在极少数情况下,当用户打开应用时,应用二进制文件可能已完成更新,但资产的补丁程序应用过程尚未完成,因此用户尚无法访问这些资产。为了应对此类情形,您需要针对这些资产提供相应的“正在更新”界面元素,或构建逻辑来处理尚无法访问的无效资源。由于只有在所有 Asset Pack 类型均已下载后,应用二进制文件才会更新,因此补丁程序的应用操作会在本地以离线方式进行,且应快速完成。
纹理压缩格式定位
纹理压缩是一种有损图像压缩,可让 GPU 使用专用硬件直接从压缩纹理进行渲染,从而减少所需的纹理内存和内存带宽用量。借助纹理压缩格式定位功能,您可以在 Android App Bundle 中添加使用多种纹理压缩格式压缩的纹理,并且依靠 Google Play 自动为每种设备提供采用最佳纹理压缩格式的资源。
应用版本更新
新版本的应用上传到 Google Play 后,如果用户未在设备上更新该应用,他们可以打开之前的应用版本。在这种情况下,如有必要,应用可以通过调用 In-App Updates API 选择强制更新或建议更新。借助此 API,您可以从应用内触发更新,而不是让用户从 Google Play 商店触发更新。
下载大小上限
Asset Pack 因具有较高的大小上限而成为大型游戏的理想之选:
- 每个
fast-follow
和on-demand
Asset Pack 的下载大小上限为 512 MB。 - 所有
install-time
Asset Pack 的总下载大小上限为 1 GB。 - 一个 Android App Bundle 中的所有 Asset Pack 的总下载大小上限为 2 GB。
- 一个 Android App Bundle 中最多可以使用 50 个资源包。
如果您使用的是纹理压缩格式定位,那么这些下载限制会分别应用于每个独一无二的纹理格式。
后续步骤
您可以使用以下某种编程语言将 Play Asset Delivery 构建到您的游戏或应用中:
AAB(Android App Bundle)测试与安装
Aab(Android App Bundle)测试与安装 - 简书 (jianshu.com)https://www.jianshu.com/p/a580f87e9df5
书接上文
Apk转Aab(Android App Bundle)
测试与安装
此时我们已经拿到了一个aab的包,符合Google Play的上架要求,那么我们要确保这个aab的包是否正常呢?作为一个严谨的程序员还是得自己测一下。
上传Google Play
上传Google Play的内部测试,通过添加测试用户从Google Play去下载到手机测试。更加能模拟真实的用户环境。
bundletool安装aab(推荐)
每次都上传到Google Play上面去测试,成本太高了,程序员一般没上传权限,运营也不在就没法测试了。此时我们可以使用bundletool模拟aab的安装。
连接好手机,调好adb,执行bundletool命令进行安装
1.从 aab 生成一组 APK
java -jar bundletool-all-1.6.1.jar build-apks
--bundle=base.aab
--output=base.apks
--ks=<签名文件路径>
--ks-pass=pass:<签名文件密码>
--ks-key-alias=<签名文件别名>
--key-pass=pass:<签名文件密码>
2.将 APK 部署到连接的设备
java -jar bundletool-all-1.6.1.jar install-apks --apks=base.apks
还原成apk
竟然apk可以转化成aab,同样aab也可以生成apk,而且更加简单
java -jar bundletool-all-1.6.1.jar build-apks
--mode=universal
--bundle=base.aab
--output=test.apks
--ks=<签名文件路径>
--ks-pass=pass:<签名文件密码>
--ks-key-alias=<签名文件别名>
--key-pass=pass:<签名文件密码>
此时就可以或得一个test.apks的压缩包,解压这个压缩包就有一个universal.apk,和开始转化的apk几乎一样
结束语
过程中有问题或者需要交流的同学、独立开发者同学、都可以私信我拉群(加好友的备注下,因为Apk转Aab和独立开发俱乐部,是分开的两个群)
更多参考:
Google AAB测试_我要变身啦~~的博客-CSDN博客_aab测试https://blog.csdn.net/qq_37685768/article/details/120137224AndroidStudio 导出AAB格式上传谷歌提示超过150M 解决方案_皮皮陶的博客-CSDN博客_您的 app bundle 包含的以下配置会使应用的初始安装大小超过 150 mb 的上限https://blog.csdn.net/qq_37254346/article/details/122433696
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)