iOS 本地自動打包工具

發表於2016-08-19
11954071-c6f168aad484dd6f

1、為什麼要自動打包工具?

每修改一個問題,測試都讓你打包一個上傳fir , 你要clean -> 編譯打包 -> 上傳fir -> 通知測試。而且打包速度好慢,太浪費時間了。如果有一個工具能自動的幫你做完上面所有的事情,豈不是快哉?

2、網上有那麼多自動打包工具,我直接下載就行了為啥還要學習?

沒錯網上有很多打包工具,包括github上也有一些直接從github下載並打包上傳的,但是他們的不一定適合你,首先下載下來要配置各種引數,不會配,還有網上大多是針對普通專案,但是我們專案是cocoaPods管理的,編譯的是 xxx.xcworkspace 不是 xxx.xcodeproj 。怎麼辦 , xxx.xcodeproj 自動編譯後就在你專案目錄下會有 xxx.app 但是 xxx.xcworkspace 找不到怎麼辦?怎麼指定目錄 , 這些網上的庫大都沒有的。

3、需要哪些準備工作?

首先你得有裝xcode , python3.5 (我裝的版本,其他版本也行), 待打包的專案。安裝相關軟體,隨便搜尋下就可以了。

廢話結束,開始正文。本文介紹的是自動clean本地專案,編譯 打包 上傳fir 郵件通知相關人員。不涉及從git上下載。原理就是利用python執行控制檯命令。對
iOS專案進行打包

xcode控制檯命令

xcode 控制檯命令基本都是以 xcodebuild 開頭的介紹幾個簡單的命令,大家可以在命令列試試。

  • xcodebuild -version 檢視xcode的版本號和build的版本號
  • xcodebuild -showsdks 顯示當前系統的SDK、及其版本
  • xcodebuild -listcd 到工程目錄下執行此命令 顯示target Schemes

沒有使用 cocoaPods 專案的編譯

如果你的專案是普通的專案沒有使用cocoaPods 那麼 cd 到工程目錄下直接執行 xcodebuild build ,就會自動編譯了 引數都是預設 預設build release。
你也可以指定 xcodebuild -configuration debug build build的時候會在你工程目錄下生成一個build資料夾,build/Release-iphoneos/xx.app
就是一會打包成ipa需要的檔案。 第一次build速度會比較慢,要把編譯環境拉下來,不要刪除build資料夾,以後build 速度就會變快。

使用了 cocoaPods 專案的編譯

如果不幸你也和我一樣使用了cocoaPods , 其實也沒啥不幸的 ,只是編譯的時候就比較麻煩了 ,首先還是 cd 到專案目錄 。但是你要指定編譯檔案和 scheme
而且還要指定build後build資料夾的位置,如果位置找不到,後面怎麼自動打包ipa?。

我這裡的命令大概是這樣的:
xcodebuild -workspace xxx.xcworkspace -scheme 你的scheme -configuration debug -derivedDataPath 指定路徑 ONLY_ACTIVE_ARCH=NO
這樣就能正常編譯並把build指定到我們想要去的目錄

打包ipa

打包ipa只要上面路徑對了,打包指定從.app 檔案的路徑 , 打包到你指定地方就行了。
命令:
xcrun -sdk iphoneos PackageApplication -v 這裡填.app的路徑 -o 指定存放ipa路徑/檔名.ipa

python實現篇

上面只是說了下編譯的原理,下面看下怎麼通過python自動處理這些任務 。

clean、編譯、打包

首先建立一個xxx.py檔案,需要你懂點python 語法,不懂就直接copy程式碼。不要改tab 。python的語法是嚴格按照tab區分的。後面我會放上我的程式碼,你們改改
變數就可以使用。

首先你需要引入一些外部依賴。設定編碼為utf-8

第一步 , 宣告一些變數

第二步,clean,和建立一個資料夾,這裡的示例是針對有使用cocoaPods的專案 , 如果沒有使用 不用建立資料夾 ,命令自行簡化

%s 是py的佔位符,字串型別。後面是真正的填充。

第三步編譯專案

不知道scheme是啥的xcodebuild -list 自己查

第四步 打包

然後你現在再編寫個方法,按順序呼叫就可以編譯打包了 ,執行完會看到桌面的ipa

執行就在最下面直接呼叫就行了 main()

上傳fir

我們是把程式碼上傳到fir測試的,如果你們用的蒲公英或者其他,請自行搜尋。
通過 gem install fir-cli 如果你沒有ruby環境,自行搜尋

安裝完成後,在命令列輸入fir 回車 。會有fir的命令提示。我們上傳fir需要fir的API_TOKEN , 去fir官網登入找好就能找到。
拿到那一串串字元,在變數區加上

然後命令傳入ipa目錄和token就可以上傳了

這裡也有遇到一個=坑,就是在終端直接fir 帶後面的就可以執行 ,但是在這裡識別不了命令,必須制定全路徑,怎麼找命令的全路徑呢?終端輸入 which fir

發郵件

具體發郵件功能看程式碼,這裡有幾個變數。我使用的是新浪郵箱發的,smtp伺服器 , 如果你是 pop3 請更換,還要在郵箱裡開啟相應的服務

然後發郵件的方法

我們的fir路徑是固定的

然後執行順序是這樣的

本文重點在自動打包命令上,python程式碼感興趣的可以去Python教程 學習。
本文程式碼已經託管在github上:https://github.com/smalldu/autoipa
文章同步放在我的blog上:iOS 本地自動打包工具

相關文章