赞
踩
目录
2021年8月开始,应用要上Google Play需要提交aab格式包,相比之前的apk包构建要麻烦一些,好在android官网对aab构建文档比较详细,可以一看。以下是Android官网的aab介绍链接
先说aab包的结构,因为我没用过apk+obb格式的分包方法,所以就不做对比了。
Google对aab有两种资源分发方式,按资源分发(Play Asset Delivery,PAD)和按功能分发(Play Feature Deliery,PFD)。现在我只接触了Playable Asset Delivery的方式所以就以这种为例,这种方式提供三种资源的分发模式,install-time,fast-follow,on-demand。
install-time | 随安装包资源,这部分资源大小会显示在商店里,随应用下载时一起下载,正常情况下应用启动时这部分资源必定存在 |
fast-follow | 快速跟进资源,应用安装后会在后台自动下载,应用启动后时不保证下载完,需要自行实现逻辑调用官方接口判断资源是否存在 |
on-demand | 按需资源,应用运行中需要时再下载的资源,需要自行实现逻辑用官方接口进行资源请求 |
以上资源的单位是资源包(asset pack),每个asset pack只能设置一种分发模式,等整个asset pack下载完成,才能使用其中包含的资源。
Unity构建aab包有两种方法,一种是直接用Unity构建aab包,这种方法需要接入Google提供的Unity插件。另一种方法是用Unity导出gradle工程,然后再构建成aab包
构建选项里去掉Export Project,此时Build App Bundle变成可选择项,勾选功能,就可以构建出aab的包,但注意,这种方式构建出的是个空包,只有Streaming Asstes内容,没有那些asset pack。
如果需要直接Unity里构建包含asset pack的aab,需要下载Android官网提供的插件来进行整个构建流程(其实插件也是调用unity api先构建空的aab包,然后再把aab包都解压出来,再给要新增资源生成AndroidManifest,然后再用aapt2 link,再用bundletool工具生成新的aab包,麻烦到你绝不想看流程)
这个就方便很多了,直接Export Project勾上,导出,用Android Studio打开,一个清爽的工程就展现在眼前了,然后根据需要开始塞资源,这里可以根据Android官方教程来做针对原生代码或 Java 代码构建 | Android 开发者 | Android Developers (google.cn)
我们创建一个AssetPack1,设置成install-time资源,关键修改有三处
第一、配置AssetPack1的build.gradle
第二、整个工程的settings.gradle要添加引用
第三、给launcher的build.gradle添加引用
第四、记得asset pack不能出空包,如果想要先构建aab,后续再用zip命令给aab里调整资源,可以给assets里添加一个占位用的文件
完成,现在就可以进行调试了,用Android Studio的一大好处就是方便调试,这里我们要调试的是aab不是apk,所以记得给要改部署方式,从aab中获取apk。(如果只有aab包,那还是得用Android官网提供得bundletool工具进行aab安装)
现在启动模拟器或者插上手机,点击”Run“让Android Studio安装应用,进行构建即可!
现在我们看看aab包体内的目录和安装到模拟器上后的目录结构
其中base文件夹
AssetPack1文件夹,assets里就是之前添加的EmptyTxt.txt文件
如上图可以观察到资源其实分离开的,原来Unity Streaming Assets的资源会默认放在base.apk里,而新增的install-time的AssetPack会放到split_AssetPack1.apk中
注意其实aab安装分成了两个步骤,如果用bundletool工具进行安装时就可以发现
bundletool会先根据aab生成apks(针对一种或多种机型的所有用到的资源的集合包)
再用apks安装到手机上(从资源集合包中抽取适用当前机型的资源进行安装)
这里再提及一下构建过程中的注意事项
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。