目录
操作四:移动资源Addressables资源文件,按照以下步骤进行操作
谷歌原生方法https://developer.android.com/guide/playcore/asset-delivery/integrate-native?hl=zh-cn谷歌针对unity方法
https://developer.android.com/guide/playcore/asset-delivery/integrate-unity?hl=zh-cn
上传谷歌商店报错提示:
您的 App Bundle 包含的以下配置会使应用的初始安装大小超过 150 MB 的上限:arm64-v8a,armeabi-v7a
对data.unity3d文件进行缩减
为什么要拆分压缩?data.unity3d这个文件是不可以修改和更换路径,更换路径出现 Unable to Initialize Unity Engine 这个报错,可以使用AB、Addressables或其他方式进行拆分压缩,只要将data.unity3d这个文件的大小远远小于150兆,将拆分出来的资源放到文章中指定的位置即可
我这里使用了Addressables资源管理方式,对data.unity3d文件的缩减,Addressables的使用看参考文章:Addressables的使用https://linxinfa.blog.csdn.net/article/details/122390621?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-1-122390621-blog-123851193.pc_relevant_multi_platform_whitelistv3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-1-122390621-blog-123851193.pc_relevant_multi_platform_whitelistv3&utm_relevant_index=2
按照文章中的操作创建Addressables资源即可,这里建议创建路径使用默认路径,避免出错
从谷歌商店下载应用资源的方式有三种:
- install-time:安装应用时会同时下载并安装到手机里的资源。
- fast-follow:安装完应用之后之后会立刻下载下载,如果安装完应用立刻打开,可能会出现资源未下载完成的情况。
- on-demand:安装应用之后并不会自动下载,而是需要游戏从服务器上下载。
我使用的解决方案(install-time方法)
这里我用的是install-time方法
打包出来的aab文件进行解压(将.aab后缀改为.zip即可)结构如下图,其中base文件夹中的文件就是我们超出150M的文件
其中data.unity3d文件占用存储空间最大,data.unity3d文件中包含了游戏中的用到的场景资源及unity初始化的相关数据,如果将文件作为PAD资源包下载到手机上会出现unity初始化失败的情况(报错提示:Unable to Initialize Unity Engine),所以我们要将data.unity3d文件夹中的场景资源拆分出来(我是用Addressables资源管理方式进行拆分的),将其中Addressables资源文件作为PAD资源包下载到手机上
点击这里:对data.unity3d文件进行缩减
以下为解决方案操作步骤及操作中可能出现的问题
install-time方法操作前注意事项
- AndroidStudio版本要在4.0以上
- AndroidStudio工程名称中不要出现空格或其他字符,避免创建Module失败的可能
- complieSdkVersion 和 targetSdkVersion一定要不小于30
- gradle版本不应小于4.0
![]()
操作一:将项目浏览方式从Android切换为Project
操作二:创建Android Library
在菜单栏中找到 File → New → New Module
选择Android Library并将Module name改为 install-time-asset_pack 点击 Finish按钮创建
install-time-asset_pack
创建出现报错:
Build file '/Users/****/Nightclub/install-time-asset_pack/build.gradle' line: 2
Plugin [id: 'com.android.library'] was not found in any of the following sources:
* Try:
Run with --info or --debug option to get more log output. Run with --scan to get full insights.* Exception is:
org.gradle.api.plugins.UnknownPluginException: Plugin [id: 'com.android.library'] was not found in any of the following sources:- Gradle Core Plugins (plugin is not in 'org.gradle' namespace)
如果出现异常的报错,解决方案如下:
选择项目中创建的install-time-asset_pack文件夹中的build.gradle
将以代码 plugins { id 'com.android.library' } 改为
apply plugin: 'com.android.library'
操作三:在相应的脚本中添加代码
1.在install-time-asset_pack文件夹中的build.gradle中添加以下代码
apply plugin: 'com.android.asset-pack' assetPack{ packName = "install_time_asset_pack" dynamicDelivery{ deliveryType = "install-time" //安装时进行PAD资源分发 } }
2.确保setting.gradle中Module中引用正常,如果引用不正确会出现资源下载丢失的情况
include ':install-time-asset_pack'
gradle.properities中是否添加了AndroidX
android.useAndroidX=true android.enableJetifier=true
3.在Launcher中的build.gradle中添加一下一下内容
在dependencies中添加依赖项
implementation 'com.google.android.play:core:1.10.0'//PAD资源分发依赖项
(安卓13以下还可以使用这个,安卓14以上谷歌商店将其拆分了,可以不加了)谷歌商店Core库在android下添加assetPacks关键字
assetPacks = [":install-time-asset_pack"]
注意:要添加在Launcher的build.gradle,否在会出现一下报错
> Could not find method implementation() for arguments [com.google.android.play:core:1.10.0] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.
注意:如果项目中加入第三方SDK应将UnityLauncher的build.gradle中的implementation 'com.google.android.play:core:1.10.0'PAD资源分发依赖项删除掉
操作四:移动资源Addressables资源文件,按照以下步骤进行操作
1.查看install-time-asset_pack中是否有assets文件如下图,如果没有需要创建
2.将UnityLauncher中assets文件夹下的Addressables资源移动到install-time-asset_pack的assets文件夹下,注意移动时要和原来文件夹的结构相同如下图,结构为assets/aa/Android(这里是移动过去,不要复制一份过去,要确保只有一个)