Unity打包aab上传谷歌商店超过150M

目录

上传谷歌商店报错提示:

对data.unity3d文件进行缩减

从谷歌商店下载应用资源的方式有三种:

我使用解决方案(install-time方法)

install-time方法操作前注意事项

操作一:将项目浏览方式从Android切换为Project

操作二:创建Android Library

操作三:在相应的脚本中添加代码

操作四:移动资源Addressables资源文件,按照以下步骤进行操作

接下来Build AAB包即可


上传谷歌商店报错提示:

您的 App Bundle 包含的以下配置会使应用的初始安装大小超过 150 MB 的上限:arm64-v8a,armeabi-v7a​​​​​​​

对data.unity3d文件进行缩减

我这里使用了Addressables资源管理方式,对data.unity3d文件的缩减

参考文章:Addressables的使用

按照文章中的操作创建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资源包下载到手机上


 以下为解决方案操作步骤及操作中可能出现的问题

install-time方法操作前注意事项

  1. AndroidStudio版本要在4.0以上
  2. AndroidStudio工程名称中不要出现空格或其他字符,避免创建Module失败的可能
  3. complieSdkVersion 和 targetSdkVersion一定要不小于30
  4. gradle版本不应小于4.0

 

操作一:将项目浏览方式从Android切换为Project

 

操作二:创建Android Library

 在菜单栏中找到 File → New → New Module

 选择Android Library并将Module name改为 install-time-asset_pack 点击 Finish按钮创建

 创建出现报错:

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资源分发依赖项

在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(这里是移动过去,不要复制一份过去,要确保只有一个)

​​​​​​​

接下来Build AAB包即可

猜你喜欢

转载自blog.csdn.net/zhao534634/article/details/126723210