Google - Android App Bundles
2018 年的 Google I/O ,Google 向 Android 引入了新 App 动态化框架(即 Android App Bundle,缩写为AAB)
App 动态化框架,动态化概念指的是 Play Dynamic Delivery
上线要求:从 2021 年 8 月起,新应用需要使用 Android App Bundle 才能在 Google Play 中发布。
About Android App Bundles
Android App Bundle 是一种包含编译后代码和资源文件的新的上传格式(.aab)
补充:Android Application Bundle != Apk
App Bundle 纯粹是为了上传设计的文件,用户无法直接安装和使用它。
虽然AAB和Apk本质上都是压缩包,但是内部的目录结构完全不同,以下是一个Abb正常的aab文件结构
1 | –BundleConfig.pb : 打包bundle的时候,自动生成 |
Google Play Dynamic Delivery
简介:Google Play 推出新 app 交付模式,叫做动态交付 (Dynamic Delivery),它根据每个用户的设备信息,使用开发者上传的 app bundle 来生成对应的 apk 文件。
Play Asset Delivery
Play Asset Delivery (PAD)可以让依靠 Google Play 来托管和提供你的资产包,PAD提供灵活的分发模式,本质上减少包的体积,让用户更佳的体验,目前分发模式有3种,分别为
1.install-time 2.fast-follow 3.on-demand
分发模式 | 大小限制 | 简介 | 详情 |
---|---|---|---|
install-time => 安装时分发 | 总下载大小上限为1GB | 资源包在用户安装应用时进行分发,”预先”资源包 | 在应用启动是使用,用户无法修改或删除这些资源包 |
fast-follow => 快速跟进式分发 | 下载大小上限为512MB | 资源包在用户安装应用后立即自动下载 | 用户无需打开应用即可开始 fast-follow 下载。此类下载不会阻止用户访问应用。 |
on-demand => 按需分发 | 下载大小上限为512MB | 资源包会在应用运行时进行下载 |
注意 !!!:如果为资源包选择 install-time 分发类型,就无需在游戏中使用 Play Asset Delivery API。这些资源包与主应用 APK同时安装。
目前公司项目使用就是分发模式就是 install-time
由于google规定需要apk<150m,等于aab中的base目录<150m,如果超出限制,需要把多出的资源迁移到install-time,让google去动态下发资源
项目
由S1-EN项目举例,该项目使用模块化,该项目包含以下的模块
项目模块
模块 | 类型 | 简介 | 包含依赖 |
---|---|---|---|
EN | APP | 完整项目 | ENGameResource |
EN_HW | AAB | ENGameResource,install_time | |
ENGameResource | 游戏资源 | 对应替换游戏资源 | 无 |
ENAPPLib | LIB | 无 | |
install_time | AAB-分发模式 | 安装时分发 | 无 |
on_demand | AAB-分发模式 | 按需分发 | 无 |
1 | ABB = ENGameResource + EN_HW + install_time |
出包需求
我们以S1-EN 欧美出包来举例,一般需要出2个类型的包,一直为正常的APK,给运营测试,另外一种为AAB给发行上架应用。
对应出包格式和命名可以查看此目录
1 | \\192.168.1.181\apk\欧美\ |
一般我们是先出APK,后出AAB。
实际操作
我们是先从145打包机上,打包一个完整的APK,复制到本地进行解压出对应的游戏资源。
解压的过程可以自由发挥,在我的电脑我是内置了解压的Apk的程序。
使用APKDB编辑,会出现以下页面,回车即可
右键Apk->使用APKDB编辑->按下回车
实际上我们只需要用到截图中的几个目录
ABB = ENGameResource + EN_HW + install_time
所以对应项目替换的路径,看下图