脚本编译打包
脚本化编译打包对于CI(持续集成)来说,十分有用。iOS开发中,编译打包必备的两个命令是:
//编译成.app xcodebuild -workspace $projectName.xcworkspace -scheme $projectName -configuration $buildConfig clean build SYMROOT=$buildAppToDir //打包 xcrun -sdk iphoneos PackageApplication -v $appDir/$projectName.app -o $appDir/$ipaName.ipa 通过info命令,可以查看到详细的文档 info xcodebuild
之前写的一套基于 Python 的编译打包脚本 (https://github.com/ReverseScale/AutoBuildScript/blob/master/autobuild.py)
提高项目编译速度
通常,当项目很大,源代码和三方库引入很多的时候,我们会发现编译的速度很慢。在了解了XCode的编译过程后,我们可以从以下角度来优化编译速度:
1)查看编译时间
我们需要一个途径,能够看到编译的时间,这样才能有个对比,知道我们的优化究竟有没有效果。
对于XCode 8,关闭XCode,终端输入以下指令
defaults write com.apple.dt.Xcode ShowBuildOperationDuration YES
然后,重启XCode,然后编译,你会在这里看到编译时间。
2)代码层面的优化
2.1)forward declaration
所谓forward declaration,就是@class CLASSNAME,而不是#import CLASSNAME.h。这样,编译器能大大提高#import的替换速度。
2.2)对常用的工具类进行打包(Framework/.a)
打包成Framework或者静态库,这样编译的时候这部分代码就不需要重新编译了。
2.3)常用头文件放到预编译文件里
XCode的pch文件是预编译文件,这里的内容在执行XCode build之前就已经被预编译,并且引入到每一个.m文件里了。
3)编译器选项优化
3.1)Debug模式下,不生成dsym文件
上文提到了,dysm文件里存储了调试信息,在Debug模式下,我们可以借助XCode和LLDB进行调试。所以,不需要生成额外的dsym文件来降低编译速度。
3.2)Debug开启Build Active Architecture Only
在XCode -> Build Settings -> Build Active Architecture Only 改为YES。这样做,可以只编译当前的版本,比如arm7/arm64等等,记得只开启Debug模式。这个选项在高版本的XCode中自动开启了。
3.3)Debug模式下,关闭编译器优化
编译器优化
更多深入学习
关于 iOS 编译 Clang LLVM 相关的知识整理参见:深入剖析 iOS 编译 Clang LLVM
版权声明
此系列文章内容多为网上资料整理,文章结尾会列出参照链接,如有纰漏欢迎讨论🤗
以上文章整理自:https://my.oschina.net/u/2345393/blog/820141,https://linuxtoy.org/archives/llvm-and-clang.html,https://blog.csdn.net/hello_hwc/article/details/53557308,https://github.com/ming1016/study/wiki/深入剖析-iOS-编译-Clang---LLVM