iOS XCode自动化编译相关
来源:互联网 发布:ubuntu 升级系统 编辑:程序博客网 时间:2024/06/18 11:50
以前的时候只知道做安卓开发的兄弟挺辛苦的,不但开发的时候要适配一堆的机型,好不容易开发完了还要打一堆不同的包给不同的市场。没想到现在这些市场都开辟iOS市场,于是需要打一堆的包给不同的市场,面对暂时给的十二个渠道,批量打包迫在眉睫。于是也便有了这篇小结。
通过一翻搜索和学习,打包这事儿就是让xcrun来干,而xcodebuild只是xrun的一个软链接,但是这一链却有了不同的分工:
xcodebuild负责将工程源文件编译成xxx.app
xcrun负责给xxx.app(签名并)打包成xxx.ipa
先说我是咋干的。
第一步清理:
第二步编译:
第三步打包:
解释一下
关于xcodebuild,xcodebuild -target target名就完成了一次编译工作,因为xcodebuild默认的一个参数就是build,即完整的命令就是:xcodebuild -targettarget build。而打包前清理的话就是xcodebuild -target targetclean了。为什么打包前要先清理呢?因为清理一下能保证打的包肯定是干净的而且打包过程不会出问题
关于xcrun,直接打包的参数就是 xcrun -sdk iphoneos PackageApplication -v 源app路径-o 输出的ipa路径
关于xcrun要更新的一个认识就它的打包功能,查资料的时候发现好多牛人都是直接用xcodebuild编译,然后自已手动用zip将编译好的app打包成ipa格式,表示不理解这些牛人们为什么要费力自已实现一遍。
注意事项:以上两个命令必需在xxx.xcodeproj所在的目录执行
高级用法:给应用签名。上面两个命令都可以给应用签名的,格式分别是:
xcrun -sdk iphoneos PackageApplication -v 源app路径 -o 输出的ipa路径 --sign"iPhone Distribution:XXXXXX"
基本就这样了,接下来批量工作,至于是用bash脚本还是applescript就看个人喜好了,我是不会告诉你我现在喜欢写mac小程序的。
前有写过《最近研究xcodebuild批量打包的一些心得》因为当时已经研究过一个工程多target,所以在多target的基础上,很容易按照target名字进行打包,于是建立了一堆的target以后,然后写了一个脚本批量打包。然后想着以后打包省事儿,直接脚本一执行,走你。结果今天需要再打一批包,拿到列表以后一看发现:新加了几个渠道,去掉了几个渠道。哎呀,妈呀,这个列表咋还是变的呢?这么一来,我可以不用删除多余的target,但是需要新建target呀,细想一下发现:我新建target只是为了加一个变量,用来区分这个target,那么我可不可以直接以渠道名为参数传给xcodebuild然后就自动生成不同的target呢?
说干就干,先前查资料的时候,有看到说可以给xcodebuild传参数的:
API_TYPE就是要识别的macro喽,果断换成自己的区别标识,一通编译打包以后,发现:不好使!神马情况呢?一通google以后发现有说用GCC_PREPROCESSOR_DEFINITIONS可以。还是用上面的例子:
发现这样竟然是好使的,于是又用下面的语法试了试:
xcodebuild -sdk xxx -target xxxGCC_PREPROCESSOR_DEFINITIONS="API_TYPE=a"
发现,这个macro只能用数字!也就是说,虽然你传进去一个API_TYPE=1,而编译器也只是在最开始执行编译以前定义了一个宏:
而这么定义法是只能用数字,不能用字母,更别提字符串或者中文了。花了挺长的时间才学习到这个东东,那么接下来就变得简单了:
把所有的渠道搁到一个静态的数组里。然后通过每次传入不同的序列号打成不同的渠道包呗。
到这里,终于,可以由一堆target变回两个target了(一个用来作编译打包时的模板;一个自己测试时用)。
完整的代码片段:
xcodebuild clean
xcodebuild -target iphoneGCC_PREPROCESSOR_DEFINITIONS="QUDAONUM=9"
xcrun -sdk iphoneos PackageApplication -vbuild/Release-iphoneos/iphone.app -o ~/Desktop/9.ipa
- iOS XCode自动化编译相关
- iOS自动化测试相关
- iOS 自动化编译&打包
- ios Xcode 自动化打包 多targets打包
- xcode iOS相关文档路径
- iOS push 相关知识备忘
- XCode编译libpng适配IOS
- IOS 7 Xcode 5 免IDP证书 真机调试
- ios 编译相关优化
- ios 修改xcode工程的product Name(…
- xcode 编译库 相关错误 解决
- [ios] Xcode使用设置相关-快捷键【转】
- Jenkins+ Xcode+ 蒲公英 实现IOS自动化打包和分发
- Jenkins项目实战之-xcode+jenkins自动化打iOS包
- iOS 拨打电话相关知识总结
- iOS 剪贴板使用相关总结《转》
- Xcode启用iOS动态库编译支持
- ios:Xcode 5.0 编译低版本app
- 优秀开源代码解读:JS与iOS N…
- iOS应用内置AppStore以及iOS Safar…
- xcode4.5.1、iphone5、ios6&…
- IOS开发之----获取本机号码…
- 转: ios与android语音互通…
- iOS XCode自动化编译相关
- 哪些开源引擎可以进行Android游戏开发
- 算法题收藏(立“帖”为证,学算法)…
- 学画UML类图(Visio)
- 扒来的mac快捷键总会
- iOS Mutable集合“古怪”问题备忘
- XCode下的iOS单元测试(转)
- 分隔算法 有点小意思
- 自定义UITableViewCell,老是有细…