iOS的自动编译,主要是使用XCode自带的编译工具xcodebuild来完成。
语法规则
主要的语法规则如下:
1 | xcodebuild [-project projectname] [-target targetname ...] [-configuration configurationname] |
举例:
1 | xcodebuild clean:清空build目录下的文件; |
编译脚本
通过以下命令可以查看编译选项:
1 | cd 项目目录 |
结果如下:
1 | Information about project "TestH5": |
注意,这里的Debug和Release需要注意大小写。
如果在XCode中已经配置好了开发证书,脚本如下:
通过编译生成app文件,再打包成ipa文件的sh脚本(放置在项目根目录中):
1 | cd . |
如果是Debug版本,注意修改下Scheme名称:
1 | cd . |
没出现问题的话,就能看到生成ipa文件了。
通过编译生成xcarchive文件,在打包成ipa文件的sh脚本(放置在项目根目录中):
1 | cd . |
如果是Debug版本,注意修改下Scheme名称:
1 | cd . |
在XCode 8.2中发现,xcarchive生成ipa命令生成的包不能安装,对比了下其内部包含的app文件,发现生成的ipa中的app文件,比xcarchive中的app文件少了一个archived-expanded-entitilements.xcent文件,里面包含了签名证书信息,少了该文件,所以ipa文件无法安装。
编译过程
通过xcodebuild的日志,可以看出其编译步骤为:
- Check dependencies
- Create product structure
- Clean.Remove
- Check dependencies
- Create product structure
- CreateUniversalBinary
- CopyPNGFile
- CpResource
- CompileXIB
- ProcessInfoPlistFile
- GenerateDSYMFile
- LinkStoryboards
- ProcessProductPackaging
- Touch
- CodeSign
- Validate
- BUILD SUCCEEDED
补充
CocoaPods
如果项目中引入了CocoaPods,需要设置为xcworkspace文件,默认的xcodebuild寻找是xcodeproj文件。
1 | xcodebuild -workspace [Project].xcworkspace -scheme [Scheme] -destination generic/platform=ios build |