想想當初天天來到公司,每天需要做一件事就是開啟Xcode打包ipa,上傳到fir。日復一日月復一月年復一年的做著同樣的事情,作為有志成為優秀工程師的我來說,這是必須要解決的問題,所以決定自動化解決問題。
簡介
xcodebuild 是蘋果釋出自動構建的工具。它在一個Xcode專案下能構建一個或者多個targets ,也能在一個workspace或者Xcode專案上構建scheme,總的來說,用它沒錯就是了。
用法說明
Tips:在終端輸入man xcodebuild,可以看到Description裡面有介紹用法。
也可以看官方文件
當你想構建一個Xcode專案,在專案目錄下執行xcodebuild
就可以了(目錄下面包含著projectname.xcodeproj
檔案就行),如果目錄下有多個專案,你需要用引數-project
指定一個專案。預設xcodebuild
命令會構建你第一個target的。當然你也可以用-targetname
指定。
如果要構建workspace,你必須指定-workspace
和-scheme
引數。
當然你可以以用就比如-version、-showsdks、-list等一些命令來獲取一些專案相關的引數。
構建
在shell裡面 [ ]表示這個引數是可選的, 表示引數是必須的
話不多說,先上個命令:
1 2 3 |
xcodebuild [-project projectname] [-target targetname ...] [-configuration configurationname] [-sdk [sdkfullpath | sdkname]] [buildaction ...] [setting=value ...] [-userdefault=value ...] |
- -project 這個很清楚啦?你的專案名字
- -target 這個也很清楚了吧?不過可以通過
xcodebuild -list
獲取 - -configrtion 一些引數,也可以通過
xcodebuild -list
獲取 - -sdk 這個可由
xcodebuild -showsdks
得到,我一般都是預設 - buildaction 這個指的是構建的動作,一般有
build
,analyze
,archive
,test
,install
,clean
,預設當然是build
了還有其他的一些引數比較少用到
來看看
xcodebuild -list
吧Information about project “ThreeDTouchTest”:
12345678910111213Targets:ThreeDTouchTestThreeDTouchTestTestsThreeDTouchTestUITestsBuild Configurations:DebugReleaseIf no build configuration is specified and -scheme is not passed then "Release" is used.Schemes:ThreeDTouchTest
你們想要的Target有了,Schemes也有了,Configurations也有了,來看看xcodebuild -showsdks
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
OS X SDKs: OS X 10.11 -sdk macosx10.11 iOS SDKs: iOS 9.2 -sdk iphoneos9.2 iOS Simulator SDKs: Simulator - iOS 9.2 -sdk iphonesimulator9.2 tvOS SDKs: tvOS 9.1 -sdk appletvos9.1 tvOS Simulator SDKs: Simulator - tvOS 9.1 -sdk appletvsimulator9.1 watchOS SDKs: watchOS 2.1 -sdk watchos2.1 watchOS Simulator SDKs: Simulator - watchOS 2.1 -sdk watchsimulator2.1 |
構建吧,兄臺們,還等什麼?接著來看看構建workspace命令是怎麼樣的
1 2 3 4 |
xcodebuild -workspace workspacename -scheme schemename [-destination destinationspecifier] [-destination-timeout value] [-configuration configurationname] [-sdk [sdkfullpath | sdkname]] [buildaction ...] [setting=value ...] [-userdefault=value ...] |
基本都一樣,只不過這裡的workspacename跟schemename必須要指定。
命令執行成功後,一般會在你的專案目錄下生成build資料夾,你可以在裡面看到你的生成的包,還有dSYM檔案。(好像對workspace構建後不會在專案目錄下生成build資料夾,那你可以在你的命令後面新增SYMROOT=buildDir
指定一個build資料夾)。
對了,還有這個命令可以檢視專案設定:
1 |
xcodebuild -target -configuration -showBuildSettings |
生成ipa檔案
生成檔案使用的是xrun命令:
1 |
xcrun -sdk iphoneos -v PackageApplication ./build/Release-iphoneos/xxx.app -o ~/Desktop/xxx.ipa |
打包成功後,會在桌面找到你的ipa。
是不是很簡單呢?
上傳到Fir
這個就更簡單了,敬請參照:Fir的命令列客戶端
總結
作為開發人員,肯定不可能天天跟著測試人員跑。自動化是非常有必要的,所以會點指令碼,肯定不會吃虧。
最後推薦一個好東西:自動構建打包,不是我寫的,有這麼好的輪子怎麼會自已再寫一個呢?
參考文件