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编辑器中,依次打开:
- File > Build Settings
- 选择Android平台
- 点击Player Settings
- 在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目录下的原始文件
通过分析发现:
- StreamingAssets目录下的pic2.png直接存放在OBB中
- Resources目录的bg.png被打包进了data.unity3d文件
3.2 安装测试
只安装APK不放置OBB文件时,游戏会启动但无法加载图片资源。这说明Resources目录的资源确实被打包进了OBB文件。
OBB文件需要按照特定规则命名和放置:
- 命名格式:main.[版本号].[包名].obb
- 例如:main.2.com.linxinfa.obbtest.obb
- 存放位置:Android/obb/[包名]/
- 例如:Android/obb/com.linxinfa.obbtest/
4. 常见问题与解决方案
4.1 运行闪退问题
在测试过程中,我发现游戏启动后立即闪退。通过adb logcat查看日志,发现关键错误信息:
Illegal usage of unity detected, shutdown unity
经过排查,这个问题是因为使用了国内版Unity导致的。解决方案是:
- 卸载国内版Unity
- 从Unity国际官网下载安装国际版
- 使用国际版重新打包
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 准备上传文件
确保你已经准备好:
- 经过zipalign处理的APK文件
- 正确命名的OBB文件
- 应用的图标和宣传图
- 应用的描述和分类信息
5.2 上传步骤
- 登录Google Play Console
- 选择你的应用
- 进入"版本发布" > "应用发布"
- 点击"创建新发布"
- 上传APK文件
- APK上传完成后,点击旁边的"..."按钮
- 选择"上传扩展文件"
- 上传对应的OBB文件
5.3 注意事项
- 确保APK和OBB的版本号一致
- 首次上传建议选择内部测试轨道
- 上传后需要等待Google审核
- 审核通过后才能发布到正式环境
6. 国际版Unity适配技巧
如果你的项目需要同时面向国内和国际市场,这里有几个实用建议:
- 开发环境统一使用国际版Unity,避免兼容性问题
- 使用版本控制工具管理工程,确保团队使用相同版本
- 打包时注意选择正确的构建目标(如ARMv7、ARM64)
- 测试时覆盖不同分辨率和Android版本的设备
- 考虑使用持续集成工具自动化打包流程
我在实际项目中遇到过因为Unity版本不一致导致的资源加载问题,统一开发环境后问题迎刃而解。建议在项目初期就做好环境规划,避免后期出现兼容性问题。

348

被折叠的 条评论
为什么被折叠?



