把 Unity 看成 Xcode 树的生成器。小蟹在导出之后跑,而不是嵌在 Unity 编辑器里。v1.3 开始支持 Unity3D;原生应用用的语言和资源流程,同样作用在导出后的 C++/ObjC 层和 Data 载荷上。

1. 导出一份能提审的 Xcode 工程

在 Unity 切到 iOS,选择你真正上架的脚本后端(商店包多数是 IL2CPP),把 Bundle Id、版本号、公司名设成商店上会看到的值。输出到新目录。不要复用另一款产品的 Xcode 目录。导出后打开工程确认能看到 IL2CPP 生成的 C++ 源文件;若只有 GameAssembly、没有 C++ 源码,不要开始混淆。

2. 配好 Debug 和 Release 签名

先打开一次工程,两个 Configuration 都加上签名并下载描述文件。文档「混淆开始」写了未设置签名时的失败提示。开始混淆前退出 Xcode,避免工具回写文件时被 Xcode 保存覆盖。

3. 跑小蟹并处理报错

在工具里添加工程,按文档挂上 COSDK 依赖后执行。关于同名 .o 的错误表示两个源文件主名冲突,改其中一个即可。警告只有读过才能跳过。引擎类型的排除规则写在「排除混淆设置」。

Unity 导出树很大,第一次建议先对一个最小示例跑通,再上正式工程。资源加密会改变 Data 里部分文件名,若自研原生插件按路径写死资源,需要改成按 Bundle 查找,或把这些路径加入排除。IL2CPP 生成的大量 C++ 文件属于语言混淆范围,不要手工去改生成目录。

4. 调试、归档、提审

从 Xcode 启动混淆后的二进制。某个插件坏了,排除那个类或文件,而不是关掉整次混淆。然后按原流程归档。两款 Unity 游戏为什么仍会被看成有关联,见 Unity iOS 混淆4.3。带截图的步骤在 Unity 项目混淆教程。崩溃还原见 dSYM

申请试用,归档后即可提审

下载应用中心,选择通用版或 Uniapp 专用版,在注册码页面申请授权。文档里有逐步操作。