在iOS開發中,我們經常需要上傳ipa包。公司配置的電腦打包速度很慢(看機子和項目大小,反正公司配的蘋果盒子很慢,而且每一步都要手點),打包時基本不能做任何其他事情(很卡),極大的浪費了時間。偶然間聽說了shell腳本可以幫我們很方便的解決這個問題,看了一篇文章之后,特此記錄一下shell打包的流程以及中間遇到的坑。
準備工作
- 準備要打包的項目,在蘋果開發者網站上下載打包用到的證書,這里打測試包作為演示,就下載adhoc 證書進行測試。下載adhoc 證書并運行,然后在項目中選中Targets->General->Signing ,勾選Automatically manage signing,把team選為該證書對應的開發者賬號。
- 下載ReleaseDir,將ReleaseDir文件夾,放到跟所要打包的項目的根目錄(ShellPackageDemo)同級別的目錄下。
- 打開ReleaseDir文件夾中的ExportOptions.plist文件,這里的四個選項是對包的設置。
** ExportOptions.plist文件參數說明 **
compileBitcode:不上架App Store,Xcode是否啟用Bitcode重新編譯,默認為YES。
method:歸檔類型,包括app-store、ad-hoc、package、enterprise、development以及developer-id。
uploadBitcode:上線App Store是否開啟Bitcode,默認為YES。
uploadSymbols:上線App Store,是否開啟符號序列化,這是與查crash相關的,默認為YES。
因此我們對ExportOptions.plist做如下設置:
ExportOptions設置截圖.png
重點:在使用下列方法前,請先使用Xcode成功打包一次。(具體原因現在不明)
調用方法
1.打開終端,cd至ReleaseDir下。假如電腦之前裝了cocoapods(其他有切換過ruby環境的操作也算),請先在終端運行rvm use system
將ruby切成系統的。
2.根據項目具體情況在終端運行下列對應的命令
./release.sh shellPackageDemo -w -e -v 1.0.0 -b 1.0.0
//使用了cocoapods
./release.sh shellPackageDemo -e -v 1.0.0 -b 1.0.0
//未使用cocoapods
調用格式:
參數說明:
<Project directory name> 第一個參數:所要打包的項目的根目錄文件夾名稱
-w workspace打包,不傳默認為project打包
-s <Name> 對應workspace下需要編譯的scheme(不傳默認取xcodeproj根目錄文件名)
-e 打包前是否先編譯工程(不傳默認不編譯)
-d 工程的configuration為 Debug 模式,不傳默認為Release
-a 打包,Version版本號自動+1(針對多次打測試包時的版本號修改)
-b <Build Num> Build版本號,指定項目Build號
-v <Version Num> Version版本號,指定項目Version號
參數-a 與 -v 互斥,只能選擇傳其中之一
演示demo未使用cocoapods,因此運行
./release.sh shellPackageDemo -e -v 1.0.0 -b 1.0.0
得到ipa包
運行結果截圖:
終端運行結果截圖.png
releaseDir目錄截圖.png
參考鏈接:Shell腳本——Xcode腳本打包