Unity引擎iOS增量编译方法解析

栏目: IOS · 发布时间: 6年前

内容简介:这是侑虎科技第453篇文章,感谢作者钱康来供稿。欢迎转发分享,未经作者授权请勿转载。如果您有任何独到的见解或者发现也欢迎联系我们,一起探讨。(QQ群465082844)作者主页:作者也是U Sparkle活动参与者,UWA欢迎更多开发朋友加入U Sparkle开发者计划,这个舞台有你更精彩!

这是侑虎科技第453篇文章,感谢作者钱康来供稿。欢迎转发分享,未经作者授权请勿转载。如果您有任何独到的见解或者发现也欢迎联系我们,一起探讨。(QQ群465082844)

作者主页: https://zhuanlan.zhihu.com/p/45236018

作者也是U Sparkle活动参与者,UWA欢迎更多开发朋友加入U Sparkle开发者计划,这个舞台有你更精彩!

在利用Jenkins自动化出包过程中发现一个问题,每次iOS编译的时候都是全量编译。根据 Incremental builds for IL2CPP

里的说法只要选择Append应该已经支持了才对,但每次还是会触发全量编译。

文件时间戳

拿出Beyond Compare对比了下,发现即使没有代码修改,Append出来的Xcode工程里也有一个头文件和一个文件夹的修改时间变了,因为很多IDE是根据这个来检查是否需要重新编译的。

第一反应是用dnSpy看下IL2CPP工具好不好改,结果是维护成本会很大(每个版本升级都要跟着Fix,直到官方修复),遂放弃。后来看了IL2CPP在Xcode下增量编译问题,包括在UWA技术交流群(群号:465082844)里讨论了下,最后选择了手动复制的方案:打出的Xcode用Svn同步到Xcode打包项目下。

另外写了个 Python 脚本,完成了类似rsync的功能,推荐大家参考 作者狂飙的开源工程

Xcode增量打包

接下来较麻烦的是出包服务器上调用的是xcode archive,然后xcodebuild -exportArchive来生成.ipa,但这个默认就是clean build。如果直接xcodebuild的话得到的是.app无法签名。

网上搜了下 How to create Xcode archive without a clean build ,有人提的方法是PackageApplication但这货已经被官方移除了(不推荐使用)。下载了PackageApplication放到Xcode目录,确实是能用的,但是证书部分怎么都不正确。

后来分析了下xarchive文件,发现里面其实就是.app和Info.Plist而已(其实还有DSYM,但删掉完全没影响)。这样的话解决方案就很简单了。

1.直接调用xcodebuild生成.app,这里有个小技巧是CONFIGURATION_BUILD_DIR=build指定输出文件夹;

2.构造Info.plist,里面诸如CFBundleIdentifier、CFBundleVersion等信息可以通过两种方式获得:

  • xcodebuild -showbuildsettings获得xcode project信息;
  • /usr/libexec/PlistBuddy -c "Print xxx"获得原Info.plist信息。

构造完成之后就可以像原来一样xcodebuild -exportArchive操作即可。

实验效果

在C#代码不变情况下(这个对我们这种 Lua 为主的项目是常态),出包最耗时的就变成IL2CPP以及最后的Id,本身Compile消耗非常小。配合Asset Bundle的增量编译,对于我们这种体量的工程来说从20min降到10min。

日常开发过程中使用增量节约时间,封版本的时候用全量则可避免潜在问题。

文末,再次感谢钱康来的分享,如果您有任何独到的见解或者发现也欢迎联系我们,一起探讨。(QQ群:465082844)。

也欢迎大家来积极参与U Sparkle开发者计划,简称"US",代表你和我,代表UWA和开发者在一起!


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

集体智慧编程

集体智慧编程

TOBY SEGARAN / 莫映、王开福 / 电子工业出版社 / 2009-1 / 59.80元

本书以机器学习与计算统计为主题背景,专门讲述如何挖掘和分析Web上的数据和资源,如何分析用户体验、市场营销、个人品味等诸多信息,并得出有用的结论,通过复杂的算法来从Web网站获取、收集并分析用户的数据和反馈信息,以便创造新的用户价值和商业价值。全书内容翔实,包括协作过滤技术(实现关联产品推荐功能)、集群数据分析(在大规模数据集中发掘相似的数据子集)、搜索引擎核心技术(爬虫、索引、查询引擎、Page......一起来看看 《集体智慧编程》 这本书的介绍吧!

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具