Unity Split Application Binary实战:从打包APK+OBB到Google Play上传全流程解析

Unity APK+OBB 与 AAB 分包方案对比:3 种场景下的 Google Play 上传策略选择 本文深入对比了Unity游戏开发中的两种主流分包方案APK+OBB与AAB,详细解析了它们在Google Play上传策略中的优劣。针对新项目开发、遗留项目迁移和超大型项目三种场景,提供了具体的配置指南和优化策略,帮助开发者根据项目需求选择最佳方案,确保符合Google Play的政策要求。 阅读详情

1. 为什么需要Split Application Binary功能

当你开发的Unity游戏准备上架Google Play时,可能会遇到一个头疼的问题:APK文件体积超过了150MB的限制。这个限制是Google Play的硬性规定,超过这个大小的APK将无法直接上传。我最近就遇到了这种情况,项目APK达到了300MB+,这时候就需要用到Unity的Split Application Binary功能了。

这个功能的核心原理很简单:把一个大APK拆分成两部分。一部分是基础APK,包含必要的可执行代码和第一个场景;另一部分是OBB扩展文件,存放其他所有资源。这样拆分后,基础APK通常能控制在100MB以内,符合Google Play的上传要求。

在实际项目中,我发现这个功能特别适合以下场景:

  • 游戏包含大量高清贴图和3D模型
  • 项目使用了大量视频或音频资源
  • 游戏包含多个大型场景
  • 需要支持多语言资源包

2. 工程配置与打包流程

2.1 准备演示工程

为了更好地说明,我创建了一个简单的Demo工程。工程结构如下:

  • Resources目录:存放了一张背景图片bg.png
  • StreamingAssets目录:存放了另一张图片pic2.png

场景中有一个Canvas,挂载了Main.cs脚本,通过代码动态加载图片。这样做是为了验证资源是否被正确分包。

using UnityEngine;
using UnityEngine.UI;

public class Main : MonoBehaviour {
    public Image img;
    
    void Start() {
        img.sprite = Resources.Load<Sprite>("bg");
    }
}

2.2 开启Split Application Binary

在Unity编辑器中,依次打开:

  1. File > Build Settings
  2. 选择Android平台
  3. 点击Player Settings
  4. 在Publishing Settings中找到Split Application Binary选项并勾选

这个选项的位置可能会因Unity版本不同有所变化,但基本都在Player Settings的Android发布设置部分。

2.3 执行打包

配置完成后,点击Build按钮开始打包。建议选择"Build And Run"直接打包并安装到测试设备。打包完成后,你会得到两个文件:

  • test.apk(基础APK)
  • test.obb(扩展资源文件)

3. OBB文件解析与测试

3.1 OBB文件内容分析

OBB全称是Opaque Binary Blob,实际上就是一个压缩文件。用7z等工具可以直接打开查看内容。在我的测试中,OBB文件包含以下内容:

  • assets/bin/Data:存放编译后的资源数据
  • assets/StreamingAssets:存放StreamingAssets目录下的原始文件

通过分析发现:

  1. StreamingAssets目录下的pic2.png直接存放在OBB中
  2. Resources目录的bg.png被打包进了data.unity3d文件

3.2 安装测试

只安装APK不放置OBB文件时,游戏会启动但无法加载图片资源。这说明Resources目录的资源确实被打包进了OBB文件。

OBB文件需要按照特定规则命名和放置:

  1. 命名格式:main.[版本号].[包名].obb
    • 例如:main.2.com.linxinfa.obbtest.obb
  2. 存放位置:Android/obb/[包名]/
    • 例如:Android/obb/com.linxinfa.obbtest/

4. 常见问题与解决方案

4.1 运行闪退问题

在测试过程中,我发现游戏启动后立即闪退。通过adb logcat查看日志,发现关键错误信息:

Illegal usage of unity detected, shutdown unity

经过排查,这个问题是因为使用了国内版Unity导致的。解决方案是:

  1. 卸载国内版Unity
  2. 从Unity国际官网下载安装国际版
  3. 使用国际版重新打包

4.2 Zipalign处理

上传到Google Play时可能会遇到提示:"您上传的APK没有经过Zipalign处理"。这是因为Google要求APK必须经过对齐优化。

解决方法很简单,使用Android SDK中的zipalign工具:

zipalign -v 4 test.apk test_aligned.apk

这个工具通常位于Android SDK的build-tools目录下,例如:

~/Android/Sdk/build-tools/30.0.3/zipalign

5. 上传Google Play流程

5.1 准备上传文件

确保你已经准备好:

  1. 经过zipalign处理的APK文件
  2. 正确命名的OBB文件
  3. 应用的图标和宣传图
  4. 应用的描述和分类信息

5.2 上传步骤

  1. 登录Google Play Console
  2. 选择你的应用
  3. 进入"版本发布" > "应用发布"
  4. 点击"创建新发布"
  5. 上传APK文件
  6. APK上传完成后,点击旁边的"..."按钮
  7. 选择"上传扩展文件"
  8. 上传对应的OBB文件

5.3 注意事项

  • 确保APK和OBB的版本号一致
  • 首次上传建议选择内部测试轨道
  • 上传后需要等待Google审核
  • 审核通过后才能发布到正式环境

6. 国际版Unity适配技巧

如果你的项目需要同时面向国内和国际市场,这里有几个实用建议:

  1. 开发环境统一使用国际版Unity,避免兼容性问题
  2. 使用版本控制工具管理工程,确保团队使用相同版本
  3. 打包时注意选择正确的构建目标(如ARMv7、ARM64)
  4. 测试时覆盖不同分辨率和Android版本的设备
  5. 考虑使用持续集成工具自动化打包流程

我在实际项目中遇到过因为Unity版本不一致导致的资源加载问题,统一开发环境后问题迎刃而解。建议在项目初期就做好环境规划,避免后期出现兼容性问题。

Unity分包技术实战:从APK+OBB到Google Play的完整避坑指南 本文详细解析了Unity游戏如何通过Split Application Binary技术实现APK+OBB分包,突破Google Play的150MB限制。从基础原理到实战配置,涵盖分包构建、测试调试及Google Play发布全流程,帮助开发者高效管理大型游戏资源,优化用户下载体验。 阅读详情

相关推荐

Unity游戏AAB打包实战:告别150M限制,实现资产按需分发

在移动应用分发领域,APK(Android Package)是传统的应用打包格式,但其单一的体积限制(如Google Play的150MB)常导致开发者需使用繁琐的扩展文件(OBB)。为解决此痛点,Google推出了Android App Bundle(AAB)这一官方格式,其核心原理在于“动态分发”。AAB并非一个直接安装的包,而是一个包含所有代码和资源的“描述文件”。上传至Google Play后,商店会根据用户设备的特定配置(如CPU架构、语言、屏幕密度),利用bundletool工具动态生成并下发最

weixin_30279315的博客 850

Unity开启Split Application Binary,打出apk+obb分包,如何进行安装测试,以及上传到Google Play Console(Unity国际版)

文章目录一、前言二、开启Split Application Binary三、包名与版本号四、打出apk+obb包 一、前言 点关注不迷路,持续输出Unity干货文章。 嗨,大家好,我是新发。 最近项目上架Google Play,因为Google限制上传的APK不得超过150M,而实际项目APK有300M+,这个时候,就需要用到Unity的Split Application Binary功能了。 二、开启Split Application Binary 为了演示,我弄个Demo工程,如下: 打包APK时,在

linxinfa的专栏 8580

Unity Android分包实战:APK+OBB合规构建与上线全链路

Android应用分包(Split APK/OBB)是应对Google Play 150MB安装限制的核心机制,其原理是将可执行代码与大体积资源分离,通过系统级OBB挂载实现透明加载。该技术显著提升低端设备安装成功率与热更灵活性,广泛应用于AR教育、3D游戏、视频类Unity项目。实践中需严格遵循Version Code纯数字命名、包名小写规范,并与Addressables资源管理深度协同——二者共同构成现代Unity安卓发布的基础设施。本文聚焦真实上线场景,覆盖从Unity编辑器配置、OBB生成验证、AD

weixin_29959121的博客 363

Unity发布Android App Bundle详解(三)快速转换Addressables

概述 对于项目本身就使用AssetBundle的来说,打包新格式aab是很容易的,上篇文章已经详细说过了。 对于项目之初没有考虑AssetBundle热更新的项目怎么办呢? 项目都是采用Resources加载,并且是同步加载的,unity场景资源也较多,没有做好分包设计的怎么办呢? 这篇文章我们讲怎么处理。 难点 场景采用同步/异步加载 SceneManager.LoadScene ("xx",LoadSceneMode.Single); 资源采用Resources.Load加载

鱼蛋的开发小站 6635

Unity Android构建全攻略:从环境配置到疑难排查

Android应用构建是一个涉及多工具链协同的系统工程,其核心在于理解构建系统(如Gradle)的工作原理与组件间的依赖关系。构建系统通过自动化编译、链接和打包流程,将源代码和资源转换为可部署的应用程序包(APK或AAB),其技术价值在于提升开发效率、确保跨平台一致性并优化应用性能。在游戏开发领域,特别是使用Unity引擎时,构建过程常面临环境配置、依赖冲突和平台兼容性等挑战。针对这些痛点,本文聚焦于Unity Android构建中的高频问题,系统梳理了从环境配置(JDK、SDK、NDK、Gradle)验证

weixin_34062469的博客 535

安卓手机目录结构全解析

本文系统分析了Android手机的目录结构,从文件系统基础到主要目录功能解析。关键内容包括: Android基于Linux内核,采用ext4/f2fs等多分区结构,/system、/vendor、/data等核心分区各司其职 详细解析了/system(系统核心)、/vendor(厂商定制)、/data(应用数据)等分区的子目录结构 介绍了应用沙箱机制,包括/data/data/下的私有数据目录和外部存储访问方式 分析了存储结构的版本演进,特别是Android 10的分区存储改革 提供了安全访问建议和开发实践

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 587

【Unity3D】aab包太大无法上传Google问题

‌勾选Split Application Binary‌:资源会被拆分成多个部分,超过150MB的部分使用Play Asset Delivery进行分发,可以根据设备类型自动分发不同架构的资源,减少用户设备的存储需求。‌不勾选Split Application Binary‌:所有资源包含在一个单一的aab包中,不需要额外的下载步骤,但可能会增加aab包的大小。

两水先木示的博客 1563

Unipush2.0 App消息推送(在线+离线推送)

使用unipush2.0进行消息推送,包含在线跟离线

weixin_50251467的博客 3696

Unity发布aab(Android App Bundle)详解(一)Unity .aab支持情况

从2021.8月开始,谷歌开始禁止新应用使用apk+obb的方式提交应用了,而强制改用新格式.aab。本来想着不用就不用吧,.aab格式应该对Unity很容易吧,查了资料,发现只要在Build Settings勾选Build App Bundle(Google Play)选项即可,如图: 勾选后打包,发现确实打出了.aab格式的文件了。但是生活总是开玩笑,发现事情往往没有这么简单。 上传到GooglePlay后台后,系统提示“您的App Bundle包含的以下配置会使应用的初始安装大小超过150 M

鱼蛋的开发小站 2万+

【新华三】通过路由复制实现Public与VRF路由互通

如上图所示,S6900设备里有两张表,一张是public路由表,默认所有的路由都存放在public路由表里;除此之外还创建了VRF test,因此此设备还有VRF test路由表。通过路由复制实现Public路由和VRF路由互通,默认情况下VRF里的路由单独一张路由表,默认情况下与public路由表相互隔离,两张表之间不可互访。此时的public路由表里面并没有test的路由表。public路由表与VRF路由表之间相互隔离。此时VRF test里的路由也没有其他VRF或Public里的路由,相互隔离。

五大连池的镜子 5278

SoC设计中的RDC陷阱:如何避免异步复位导致的亚稳态问题

本文深入探讨了SoC设计中由异步复位引发的复位域交叉(RDC)陷阱及其导致的亚稳态风险。通过分析实际案例,文章系统性地提出了以同步复位优先、异步复位同步释放为核心的设计原则,并介绍了电路级加固与验证策略,为构建稳健的SoC复位架构提供了实用指南。

weixin_29280657的博客 419

Unity发布Android App Bundle详解(四)Addressables+Play Asset Delivery分发

在之前文章我们了解到了: Unity aab要我们自己处理,Unity目前没有提供完整的解决方案帮我们自动处理(截止2021.7.16号) 2021.8.1号开始谷歌对新应用只能接受aab格式,而aab的本体包限制在150M aab格式超过150M的应用要自行通过Play Asset Delivery分发 Unity应用需要通过AssetBundle进行包体拆分,然后通过GooglePlay提供的Play Asset Delivery分发 那前面的工作我们都准备完毕了,现在我们开始进行aab的打包,

鱼蛋的开发小站 1万+

Error relaunching VirtualBox VM process:5错误解决

前几天在重新使用VirtualBox的时候出现了一个挺恶心的错误,如图 百度了好久没有找到合适的解决方法。功夫不负有心人,在查阅了vb相关论坛时发现了大牛对此问题的诸多解决方案。下面我把此论坛的内容总结一下,希望对大家有帮助。 论坛链接:Diagnosing VirtualBox Hardening Issues 时间不足的小伙伴可以直接看 解决方法 造成这个错误的主要原因是,windows操作系统与oracle vb的不兼容。有两个方面,一是非官方windows系统中包含了一些没有签名的d

JaCenz的博客 3万+

Unity 2022 LTS Split Application Binary 配置:APK+OBB 分包实战与 Google Play 150MB 限制规避

本文详细介绍了Unity 2022 LTS版本中如何配置Split Application Binary功能,通过APK+OBB分包技术规避Google Play的150MB限制。从环境准备、核心配置到构建流程和发布合规性,提供全流程实战指南,帮助开发者高效管理大型游戏资源。

weixin_34245749的博客 350

SpringBoot文件上传实战:MultipartFile重复读取的3种方法(附避坑指南)

本文详细介绍了SpringBoot中处理MultipartFile重复读取的3种实用方法,包括字节数组缓存法、临时文件法和流重置法,并提供了避坑指南和性能优化技巧。特别适合需要多次读取上传文件内容的开发者,帮助解决InputStream流只能读取一次的问题。

weixin_28710999的博客 398

基于FreeSwitch与SIP UA的蓝牙电话坐席系统实战部署

本文详细介绍了如何基于FreeSwitch开源软交换平台,结合SIP UA软电话与蓝牙电话App,在局域网内搭建一套低成本、自主可控的电话坐席系统。文章提供了从环境准备、FreeSwitch安装配置、用户与拨号计划创建,到SIP软电话测试和蓝牙设备接入的完整实战部署流程,并给出了关键优化与排坑指南,适合小微团队或个人开发者构建内部通讯工具。

zeta9的博客 544

Unity 国际版 vs 中国版:Split Application Binary 打包 OBB 触发 ‘Illegal usage’ 闪退的 2 种解决方案

本文深入解析Unity国际版与中国版在Split Application Binary打包OBB时触发‘Illegal usage’闪退的问题,提供两种有效解决方案:切换至国际版Unity或进行兼容性调整。内容涵盖问题根因、详细迁移指南、代码实现及Google Play发布流程,帮助开发者顺利应对APK大小限制和OBB文件校验挑战。

weixin_34075268的博客 372

ABB机器人ModbusTCP通信实战:如何高效传输Float数据到PLC(附完整代码)

本文详细介绍了ABB机器人通过ModbusTCP协议高效传输Float数据到PLC的实战方法,包括底层逻辑解析、RAPID程序架构设计、PLC服务器配置及现场调试技巧。特别针对浮点数据传输中的字节顺序问题提供了解决方案,并附有完整代码示例,助力工程师快速实现工业自动化设备间的高精度数据交互。

weixin_30836759的博客 482

Unity分包实战:APK+OBB与Google Play AAB配置避坑指南

Android应用分包是解决安装包体积过大、提升分发效率的核心技术,其底层依赖ABI切片、签名一致性、资源路径映射等关键原理。在Unity引擎中,分包并非单一开关,而是横跨Editor设置、Gradle构建、OBB挂载时序与AAB动态分发的系统工程。技术价值体现在减小首包体积(如base APK从180MB降至42MB)、实现按需下载(Dynamic Feature Module)及适配Google Play强制要求。典型应用场景包括AR解谜应用上线、SLG游戏多语言/多ABI适配、休闲游戏热更资源管理等。

weixin_30919571的博客 587

基于jeecgboot3.9.0的项目管理——项目工作台(二)

基于jeecgboot3.9.0的项目管理——项目工作台(二)

宁波阿成的博客 205

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Unity发布aab(Android App Bundle)详解(一)从APK到AAB:Unity版本支持与打包配置全解析

本文详细解析了Unity开发者如何从APK迁移到AAB(Android App Bundle)格式,包括Unity版本支持、打包配置及资源处理策略。通过实际案例展示了AAB在减少下载体积、提升安装成功率方面的优势,并提供了处理大资源包和常见错误的实用技巧。

weixin_29016833的博客 368

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Unity3D导出Android APK全流程指南:从环境配置到性能优化

在移动应用开发中,将游戏或应用打包成可安装的APK文件是发布到Android平台的关键步骤。其核心原理在于通过构建系统将项目代码、资源与依赖库编译、链接并封装为Android系统可识别的格式。这一过程的技术价值在于直接影响应用的性能、包体大小、兼容性与最终用户体验。在游戏开发与移动应用开发领域,掌握高效的构建流程与优化技巧,对于提升开发效率、降低运维成本至关重要。特别是在Unity3D游戏开发中,涉及JDK、SDK、NDK环境配置、Gradle构建系统、IL2CPP脚本后端以及纹理压缩等关键技术环节。本文聚

weixin_33682790的博客 339

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Unity APK安装失败排查指南:签名、兼容性与构建配置解析

在移动应用开发中,APK安装失败是常见的工程挑战,其本质是Android系统对应用包体的完整性、兼容性和安全性的校验机制。从技术原理上看,Android系统通过包签名确保应用来源可信,通过版本代码管理升级路径,并通过ABI架构、API级别等系统要求保障运行时环境兼容。这些机制共同构成了应用分发的技术基础,其价值在于维护生态安全与设备稳定性。在实际开发场景中,尤其是使用Unity引擎进行跨平台游戏开发时,构建流程的复杂性、第三方插件的集成以及多设备适配需求,使得安装失败问题频发。本文聚焦Unity开发者的核心

weixin_30634661的博客 419

Unity Android GooglePlay分包obb文件流程

Unity勾选Split Application Binary 在Edit->Project Settings->Player->Other Settings->Split Application Binary 打包完成之后会出现*.apk和*.obb两个文件 安装apk文件 重命名obb文件 :main.{versionCode}.{pkgname}.obb 例如 main.1.com.achonor.test.obb 复制到:Android/data/obb/{pkaname}.

AcmHonor的专栏 1681

Unity2020 il2cpp 代码多的情况下,直接打包出错,使用obb模式或导出到AndroidStudio工程再打apk没问题

Unity2020 il2cpp 代码多的情况下,直接打包出错,使用obb模式或导出到AndroidStudio工程再打apk没问题

weixin_42565127的博客 1821

Unity发布Android App Bundle详解(二)Play Asset Delivery介绍

Play Asset Delivery是什么? Play Asset Delivery (PAD) 将 app bundle 的优势带到游戏中。它允许超过 150 MB 的游戏替换旧版扩展文件 (OBB),方法是将包含游戏所需的所有资源的单个工件发布到 Play。PAD 提供了灵活的分发模式、自动更新、压缩和增量修补功能,并且可免费使用。使用 PAD,所有资源包均在 Google Play 上托管和提供,因此您无需使用内容分发网络 (CDN) 向玩家提供游戏资源。 Play Asset Delivery

鱼蛋的开发小站 9741
上一篇: LangChain 1.0 智能体开发:MCP协议与中间件实战指南
下一篇: 信创生态下的数据湖架构选型:Iceberg与Hudi在国产化场景中的性能较量
水果削皮艺术家
博客等级 码龄3年 47粉丝 1437原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值