最近忙成狗,记录一篇流水账吧.

首先,感谢txx这篇巧用脚本解决Target管理问题,让我们的集成工作少走了很多弯路;然后,感谢灰哥(iOS同事)帮我写xcodeproj脚本,这里简单记录一下过程中遇到的各种问题和解决方案.

首先,xcodeproj很好用,但是如果不知道需要修改的key-value值是什么,怎么办? 直接在Xcode工程的Build Settings里面,选中你想修改的那一项,CMD+C,然后在脚本编辑器里面CMD+V,那一项的key-value值就复制出来了,这样就可以很轻松地去定制修改新Target的各项属性.

然后,由于不知名神秘力量影响.我们照葫芦画瓢搞出来的静态库,并不能正常运行,在加载Data/Managed/global-metadata.bat的时候就会crash,各种查证之后,发现静态库并不会link某些il2cpp的全局变量文件,例如Il2CppMetadataRegistration.cpp,引用之后,可以验证Data/Managed/global-metadata.bat并且进游戏了,然而绘制第一帧的时候,直接crash了.多方尝试无解之后,只得将打包方式改成动态库,代价就是包体大小扶摇直上.如果有高人解决了这个问题,欢迎将解决方法告知我.

最后,工作流大致如下.

Unity生成Xcode工程

使用`xcodeproj`脚本,自动为这个Xcode工程添加一个动态库的Target,与应用通讯的接口层的方法需要在这里就定义好加进去

编译动态库,整个都拖进iOS工程

在iOS工程中,使用Build Phase的Run Script将动态库下面的Data/全部拷贝至Resource目录下,并删除动态库下的Data/

运行工程验证.