【Unity3D】Android App Bundle(aab)打包上架Google Play介绍
总体说来,Android App Bundle打包有3种方式,每种方式都有成功上架Google Play进行测试通过,因此实用程度还是挺高的。能够理解以下内容的前提是会打apk包,知道如何生成Asset Bundle文件,这块内容可以参考我的上一篇文章。
一、使用Unity3D自带功能打aab包
图1
此方法最简单,勾选打包选项"Build App Bunlde(Goole Play)"即可。在点击Build的时候就会提示保存xxx.aab文件。【注意】这种方式打出的aab包的大小必须在150M以内,否则无法上架Google,不过这对于小游戏来说应该是足够了。
二、使用Google提供的插件(新增)
下载地址:https://github.com/google/play-unity-plugins/releases
在今年6月份开始研究打aab包的时候,Google还没有提供这种方式,对于需要从APK+OBB模式转成AAB+Asset Pack模式还是一件比较麻烦的事情(参考方法三),也许是Google良心发现,所以才提供了一个折中的方案。
打包步骤:
1. 下载插件com.google.android.appbundle,导入Unity3D。
2. 通过菜单Google->Android App Bundle->Asset Delivery Settings... 打开配置界面(如下图2展示)。
3. 勾选Separate Base APK Asset(如下图3展示)。
4. 然后通过菜单Google->Build Android App Bundle...即可打出aab包。
图2
图3
图3的英文也介绍的比较详细,无需额外对资源加载等做处理,【注意】只需要将打好的Asset Bundle文件拷贝的StreamingAssets目录即可。这也是正常打APK包需要的步骤,因此接入项目非常的简单,而且可以正常上架,无需考虑150M包大小的限制。
三、使用Google的分发模式(AAB + Asset Pack)
这是Google官方之前针对aab包提供的默认方式,而且通过官方的介绍文档可以知道这种方式提供了CDN,如果完全接入后可以免去自己搭建CDN的环境。
Play Asset Delivery (PAD) 将 app bundle 的优势带到游戏中。它允许超过 150 MB 的游戏替换旧版扩展文件 (OBB),方法是将包含游戏所需的所有资源的单个工件发布到 Play。PAD 提供了灵活的分发模式、自动更新、压缩和增量修补功能,并且可免费使用。使用 PAD,所有资源包均在 Google Play 上托管和提供,因此您无需使用内容分发网络 (CDN) 向玩家提供游戏资源。
打包步骤:
1. 下载插件com.google.play.assetdelivery,并导入Unity(这里可能也需要下载步骤二的插件)。
2. 通过菜单Google->Android App Bundle->Asset Delivery Settings... 打开配置界面(如图2展示)。
3. 【注意】这次不勾选Separate Base APK Asset选项,而是通过下面的Asset Pack Configuration界面进行Asset Bundle配置。
4. 点击Add Folder...按钮选择项目的Asset Bundle文件目录。
a.【注意1】这里不能将Asset Bundle文件放在StreamingAssets目录。
b.【注意2】Asset Bundle文件的总数不得超过50个。
c.【注意3】这里针对Asset Bundle的命名也有要求,类似代码变量名。
【备注】 针对超过50个Asset Bundle的可以使用AssetPack,就是先将Asset Bundle使用Google提供的API方法打成AssetPack(该方法可用,但未测试过)。
5. 针对每个Asset Bundle文件设置其分发模式,最简单就全部设置为Install Time模式(如下图4)。
6. 设置完成后再通过Google->Build Android App Bundle...即可打成aab包,里面的内容可以通过解压软件打开查看(如图5)。
图4
图5
四、总结和另外的注意事项。
图6
上图是某次上架测试过程中的错误提示(需注意API等级)。若参照我上面提供的三种方式且满足Google的上架条件,基本上可以正常上架。另外,如果使用方法三进行aab打包的话,还需要额外针对加载Asset Bundle文件的方法进行修改,不可使用AssetBundle.LoadFromXXX的方法,需要导入 Play Asset Delivery 库,然后调用 RetrieveAssetBundleAsync() 方法加载 AssetBundle(可去官网查看例子)。
大体的内容就介绍到这里,如果还有疑问欢迎一起沟通交流,我也是菜鸟一枚。
文章来自我的公众号,大家如果有兴趣可以关注,具体扫描关注下图。
【Unity3D】Android App Bundle(aab)打包上架Google Play介绍的更多相关文章
- Flutter - You need to use a different version code for your APK or Android App Bundle because you already have one with version code 1.
前两天提交了一个版本Google Play,结果今天收到拒绝的邮件,说App内购有问题. 于是把设置里面的支付宝和微信打赏功能关闭,又打了一个aab. 然后上传到Google Play,结果提示 Yo ...
- 谷歌发布基于机器学习的Android APP安全检测系统:Google Play Protect
Google Play作为众所周知的在线应用市场,因为审查制度的松散,经常会有一些恶意软件伪装成其他应用混入其中.此前阿里聚安全小编就报道了2例关于恶意软件伪装在Google Play上的事件:< ...
- Android APP压力测试(一)之Monkey工具介绍
Android APP压力测试(一) 之Monkey工具介绍 前言 本文主要介绍Monkey工具.Monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸屏幕.滑动. ...
- Unity上线google商店 用IL2Cpp打包64位版本和Android APP Bundle优化 及产生的bug
ios刚上线,这边着手改成android版本,我开始使用的是unity2017.4.1版本 上传谷歌商店是出现这两个警告: 要支持64位,但是在2017版本上没有找到64位的打包选项,猜测应该是版本的 ...
- Android App的签名打包三步骤
1.签名的意义 为了保证每个应用程序开发商合法ID,防止部分开放商可能通过使用相同的Package Name来混淆替换已经安装的程序,我们需要对我们发布的APK文件进行唯一签名,保证我们每次发布的版本 ...
- Android App的签名打包(晋级篇)
http://blog.csdn.net/linghu_java/article/details/6701666 Andriod应用程序如果要在手机或模拟器上安装,必须要有签名! 1.签名的意义 为了 ...
- android app多渠道分发打包
1. 美团多渠道包的方法论 1) maven编译多次 2) apktool一次包,解开重新打 (个人倾向于这个) 3) http://tech.meituan.com/mt-apk-packagi ...
- 安卓新发布机制----app bundle
Android App Bundle是一种改进的应用程序打包方式,能大幅度减少应用体积 unity可以直接导出appbundle,只需要在导出的时候勾选 但是通常项目有sdk离不开java端,我这里是 ...
- Android App安装包瘦身计划
Android App安装包瘦身计划 Android App安装包体积优化: 理由, 指标和可以采用的方法. 本文内容归纳如下图: 为什么要安装包瘦身 安装包需要瘦身吗? 不需要吗? 安装包要瘦身的主 ...
随机推荐
- 29、windows下通过zip包方式安装mysql
29.1.下载mysql: 1. www.mysql.com 2. 3. https://dev.mysql.com/downloads/mysql/ 4. 29.2.安装mysql数据库: 1.把下 ...
- To_Heart—题解——AT2165
这是一篇解题报告 首先,看到标签,考虑二分答案. 我们二分答案(即塔顶的值),把大于或等于这个值的变为1,否则变为0. 很容易发现,如果塔顶的答案是1,那么就说明值可以更大,否则相反. 复制一波样例 ...
- Linux指令手册 (一)
指令格式 指令主体 [选项] [操作对象] 一个完整的指令是由"指令主体"."选项"和"操作对象"组成的,其中指令主体只能有一个,选项有零个 ...
- 如何管理MongoDB的用户和权限
管理用户的创建及使用 创建用户的函数是db.createUser({...}),创建用户时通常需要为该用户添加权限,如read.readWrite权限. 可添加的权限以及说明: 权限 作用 read ...
- Java:HttpPost 传输Json数据过长使用HttpServletRequest解析
直接上代码 /** * 测试生成json数据 */ @Test public void synYxGoodsInfoTest() { try { String url = "http://1 ...
- easyswoole实现线上更新代码
众所周知,easyswoole作为常驻内存的框架,修改代码并不能直接生效,而是需要重启服务,那么,当你的easyswoole项目上线之后,该如何保证旧请求的同时去更新代码呢? nginx reload ...
- Shell常用工具find,grep,sed,awk,xargs命令
最近学习shell命令,对grep,sed,awk命令有点混乱,故小结一下,巩固一遍. 注意:find , grep , sed, awk可使用基本正则表达式字符,find,grep,awk也支持扩展 ...
- Spring Cloud中的注解
一.Eureka @EnableEurekaServer: @EnableDiscoverClient:标注服务是一个Eureka的客户端 @LoadBalanced:自动构造LoadBalancer ...
- TCP/IP 5层协议簇/协议栈
TCP/IP 5层协议簇/协议栈 数据/PDU 应用层 PC.防火墙 数据段/段Fragment 传输层 防火墙 报文/包/IP包packet 网络层 路由器 帧Frame 数据链路层 交换机.网卡 ...
- NTFS安全权限
一.NTFS权限概述 1.通过设置NTFS权限,实现不同的用户访问不同的对象的权限 2.分配了真确的访问权限后,用户才能访问其资源 3.设置权限防止资源被篡改.删除 二.文件系统概述 文件系统即在外部 ...