关于自动打包的研究,最近翻阅了各方大佬的博文,根据各方大佬的经验,分享下我自己的体会和记录,关于自动打包我分为三篇文章。
第一篇介绍我尝试的几种方案,优缺点分析,以及比较省事的一种打包(附带参考链接和问题解答)。
第二篇介绍xcodebuild,分为两种打包方式:命令行打包 和 脚本打包,
第三篇介绍比较火的fastlane基础知识和简单使用,打包方式也分为:命令行打包 和 脚本打包。
iOS-自动打包及分发(一)
iOS-自动打包及分发(二)
iOS-自动打包及分发(三)
下面进入正文:
一、为什么要自动打包?
1.1 简化iOS项目打包过程操作。
1.2 简化.ipa包上传分发平台过程步骤。
1.3 节省iOS项目打包所需时间。
1.4 节省ipa包上传分发测试平台所需时间。
1.5 提高iOS开发人员的效率。
二、几种打包方案分析
2.1 xcode默认打包
自动略过,参考上面
2.2 xcodebuild命令行打包
官方,命令简洁明了,功能单一。
2.3 fastlane命令行打包
第三方工具集,扩展功能丰富。
2.4 xcodebuild脚本命令打包
在脚本中编辑好xcodebuild命令,终端一行代码即可完成自动打包及分发。
2.5 fastlane脚本打包
在脚本中编辑好fastlane命令,终端一行代码即可完成自动打包及分发。
命令行打包优势:模块层次清晰,打包步骤一目了然。
脚本打包有一个显著的优势,通俗易懂、注释全面,一行代码即可完成打包过程(切换打包类型只需要修改配置好的个别参数)。
经过上面,已经很明显了,fastlane脚本打包是功能最为强大的。xcodebuild脚本测试时最实用。
相对比传统打包,当archive编译开始后,就需要一步步点击执行下一步、一些无脑的操作还必须要去做。如果同时需要几个测试包的时候,就浪费了成倍的时间。但是如果配置好签名文件和自动打包脚本后,那么一行代码就行了,接下来的时间去抽根烟、喝杯咖啡等等都随意你的安排。
附带一位大能写好的Demo。有兴趣的可以看看后面的两个文章。
高屋建瓴,我三篇文章中或多或少的借鉴了下面大能的文章,根据他们的文章琢磨出自己适用和喜欢的,下面提供一些文章地址和问题解答,喜欢研究和测试的可以参考:
iOS-fastlane脚本
fastlane使用说明书
fastlane与持续集成
[iOS-Release] 自动打包分发
iOS自动化打包发布(fastlane)
iOS中使用Fastlane实现自动化打包和发布
Fastlane的黑魔法:一键打包编译上传 AppStore
iOS App自动化打包发布(Jenkins + Fastlane)
当Fastlane遇到Xcode9打包出来不一定是ipa而是坑
Fastlane- app自动编译、打包多个版本、上传到app store
xcodebuild 自动打包及分发
xcodebuild自动打包脚本与自动上传蒲公英脚本
使用脚本工具Xcodebuild打包项目和导出ipa 2016.12.18
iOS自动打包并发布到Fir.im
编写shell命令实现IOS的自动打包
补充优质博文:
关于iOS自动化打包的一些分享
关于调试遇到的问题:
1、packageApplication错误
xcrun: error: unable to find utility "PackageApplication", not a developer tool or in PATH
解决:Xcode8.3以后少了PackageApplication。需要先下载PackageApplication放在下面路径下:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/
然后执行命令
sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer/
chmod +x /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/PackageApplication
2、ad_hoc_options.plist 文件设置
在Xcode9.0以后要设置provisioningProfiles,增加Build ID (key)对应 证书设置里面 Provisioning Profiles 的打包名字.
打包有四种:app-store, ad-hoc, enterprise, development。
3、Xcode升级后打包提示插件失效问题
解决:https://www.cnblogs.com/HMJ-29/p/5881536.html
4、查看Xcode UUID的方法
(defaults read /Applications/Xcode.app/Contents/Info DVTPlugInCompatibilityUUID)
(惭愧啊,近期一直有事情,自己的笔记本又坏了,所以更新会有点迟,但是更新的时候尽可能保证质量,诸多抱歉!!!)