草庐IT

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

这个字念朝 2023-05-03 原文

目录

上传谷歌商店报错提示:

对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包即可

有关Unity打包aab上传谷歌商店超过150M的更多相关文章

  1. ruby - 我可以使用 aws-sdk-ruby 在 AWS S3 上使用事务性文件删除/上传吗? - 2

    我发现ActiveRecord::Base.transaction在复杂方法中非常有效。我想知道是否可以在如下事务中从AWSS3上传/删除文件:S3Object.transactiondo#writeintofiles#raiseanexceptionend引发异常后,每个操作都应在S3上回滚。S3Object这可能吗?? 最佳答案 虽然S3API具有批量删除功能,但它不支持事务,因为每个删除操作都可以独立于其他操作成功/失败。该API不提供任何批量上传功能(通过PUT或POST),因此每个上传操作都是通过一个独立的API调用完成的

  2. ruby-on-rails - 添加回形针新样式不影响旧上传的图像 - 2

    我有带有Logo图像的公司模型has_attached_file:logo我用他们的Logo创建了许多公司。现在,我需要添加新样式has_attached_file:logo,:styles=>{:small=>"30x15>",:medium=>"155x85>"}我是否应该重新上传所有旧数据以重新生成新样式?我不这么认为……或者有什么rake任务可以重新生成样式吗? 最佳答案 参见Thumbnail-Generation.如果rake任务不适合你,你应该能够在控制台中使用一个片段来调用重新处理!关于相关公司

  3. ruby-on-rails - 有没有办法为 CarrierWave/Fog 设置上传进度指示器? - 2

    我在Rails应用程序中使用CarrierWave/Fog将视频上传到AmazonS3。有没有办法判断上传的进度,让我可以显示上传进度如何? 最佳答案 CarrierWave和Fog本身没有这种功能;你需要一个前端uploader来显示进度。当我不得不解决这个问题时,我使用了jQueryfileupload因为我的堆栈中已经有jQuery。甚至还有apostonCarrierWaveintegration因此您只需按照那里的说明操作即可获得适用于您的应用的进度条。 关于ruby-on-r

  4. Unity 热更新技术 | (三) Lua语言基本介绍及下载安装 - 2

    ?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------

  5. FOHEART H1数据手套驱动Optitrack光学动捕双手运动(Unity3D) - 2

    本教程将在Unity3D中混合Optitrack与数据手套的数据流,在人体运动的基础上,添加双手手指部分的运动。双手手背的角度仍由Optitrack提供,数据手套提供双手手指的角度。 01  客户端软件分别安装MotiveBody与MotionVenus并校准人体与数据手套。MotiveBodyMotionVenus数据手套使用、校准流程参照:https://gitee.com/foheart_1/foheart-h1-data-summary.git02  数据转发打开MotiveBody软件的Streaming,开始向Unity3D广播数据;MotionVenus中设置->选项选择Unit

  6. unity---接入Admob - 2

    目录1.AdmobSDK下载地址2.将下载好的unityPackagesdk导入到unity里​编辑 3.解析依赖到项目中

  7. Unity 3D 制作开关门动画,旋转门制作,推拉门制作,门把手动画制作 - 2

    Unity自动旋转动画1.开门需要门把手先动,门再动2.关门需要门先动,门把手再动3.中途播放过程中不可以再次进行操作觉得太复杂?查看我的文章开关门简易进阶版效果:如果这个门可以直接打开的话,就不需要放置"门把手"如果门把手还有钥匙需要旋转,那就可以把钥匙放在门把手的"门把手",理论上是可以无限套娃的可调整参数有:角度,反向,轴向,速度运行时点击Test进行测试自己写的代码比较垃圾,命名与结构比较拉,高手轻点喷,新手有类似的需求可以拿去做参考上代码usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;u

  8. STM32读取串口传感器数据(颗粒物传感器,主动上传) - 2

    文章目录1.开发板选择*用到的资源2.串口通信(个人理解)3.代码分析(注释比较详细)1.主函数2.串口1配置3.串口2配置以及中断函数4.注意问题5.源码链接1.开发板选择我用的是STM32F103RCT6的板子,不过代码大概在F103系列的板子上都可以运行,我试过在野火103的霸道板上也可以,主要看一下串口对应的引脚一不一样就行了,不一样的就更改一下。*用到的资源keil5软件这里用到了两个串口资源,采集数据一个,串口通信一个,板子对应引脚如下:串口1,TX:PA9,RX:PA10串口2,TX:PA2,RX:PA32.串口通信(个人理解)我就从串口采集传感器数据这个过程说一下我自己的理解,

  9. ruby-on-rails - 安全地显示使用回形针 gem 上传的图像 - 2

    默认情况下:回形针gem将所有附件存储在公共(public)目录中。出于安全原因,我不想将附件存储在公共(public)目录中,所以我将它们保存在应用程序根目录的uploads目录中:classPost我没有指定url选项,因为我不希望每个图像附件都有一个url。如果指定了url:那么拥有该url的任何人都可以访问该图像。这是不安全的。在user#show页面中:我想实际显示图像。如果我使用所有回形针默认设置,那么我可以这样做,因为图像将在公共(public)目录中并且图像将具有一个url:Someimage:看来,如果我将图像附件保存在公共(public)目录之外并且不指定url(同

  10. ruby-on-rails - 使用 gmaps4rails 动态加载谷歌地图标记 - 2

    如何只加载map边界内的标记gmaps4rails?当然,在平移和/或缩放后加载新的。与此直接相关的是,如何获取map的当前边界和缩放级别? 最佳答案 我是这样做的,我只在用户完成平移或缩放后替换标记,如果您需要不同的行为,请使用不同的事件监听器:在你看来(index.html.erb):{"zoom"=>15,"auto_adjust"=>false,"detect_location"=>true,"center_on_user"=>true}},false,true)%>在View的底部添加:functiongmaps4rail

随机推荐