iOS自動構建以及打包命令(xcodebuild,xcrun)
阿新 • • 發佈:2019-01-30
兩個命令的語法以及使用方法,資料比較多,到處都可以找到,比如:
xcodebuild負責將工程原始檔編譯成xxx.app
xcrun負責給xxx.app(簽名並)打包成xxx.ipa
構建APP
1. build Xcode專案
構建一個Xcode專案,在專案目錄下執行xcodebuild
就可以了
xcodebuild [-project projectname] [-target targetname ...] [-configuration configurationname] [-sdk [sdkfullpath | sdkname]] [buildaction ...] [setting=value ...] [-userdefault=value ...]
如果是單target單schema,直接xcodebuild不指定任何引數,就生成relaase版本真機模式的app
比如:
(1)"CompileC"使用"clang"編譯每個檔案
(2) "LD":連結成不同架構
(3) "lipo":建立通用庫
(4) 處理資源
ibtool處理storyboard檔案,actool處理Assets檔案
(4) "dsymutil":生成dSYM檔案
(5) 連結資源
(6) 簽名、驗證
至此,build結束
2. build workspace
如果要構建workspace,你必須指定-workspace
和-scheme
引數
xcodebuild -workspace workspacename -scheme schemename [-destination destinationspecifier]
[-destination-timeout value] [-configuration configurationname]
[-sdk [sdkfullpath | sdkname]] [buildaction ...] [setting=value ...]
[-userdefault=value ...]
比如:
注意:workepacename是指帶 .xcworkspace字尾的完整名字
3. xcpretty
xcpretty is a fast and flexible formatter for xcodebuild
其實就是用來格式化(美化)xcodebuild命令列工具輸出日誌的一個小工具,安裝命令:
gem install xcpretty
更多使用方法見專案首頁:https://github.com/supermarin/xcpretty
xcodebuild輸出日誌如下圖所示:
是不是“慘不忍睹”啊,那用 xcpretty表現一下吧,執行如下命令:
xcodebuild | xcpretty
打包IPA
xcrun工具
命令如下:xcrun -sdk iphoneos PackageApplication -v 源app路徑 -o 輸出的ipa路徑
最關鍵的就是zip,做下壓縮處理
xcodebuild
其實從上面就可以看出,建議 PackageApplication用`xcodebuild -exportArchive`來替換 (1)執行 xcodebuild clean 進行清除(2)執行 xcodebuild archive -scheme "xxx" -configuration "Release" -archivePath "xxx/1.xcarchive"
其中 scheme 引數需要對應到工程 mobile target 名稱 configuration 為固定的 Release archivePath 指定匯出的 .xcarchive 檔案的位置
這個命令就相當於Xcode中的"Archive"選單
它和PackageApplication的不同之處在於: PackageApplication基於生成的app打包,xcodebuild archive是基於原始碼編譯生成然後打包
(3) 執行 xcodebuild -exportArchive -archivePath "xxx/1.xcarchive" -exportPath "xxx/1.ipa" -exportFormat IPA -exportProvisioningProfile "XC: *"
其中 archivePath 跟上個命令引數對應 exportPath 為匯出 ipa 檔案的目錄 exportForma IPA為固定值, exportProvisioningProfile 是 provisioning profile 的名稱,與建立工程時所選的 provisioning profile 有關
如果Xcode工程已經配置好了證書的話,exportProvisioningProfile引數可以不用新增 xcodebuild -exportArchive的功能跟xcrun PackageApplication一樣