1. 程式人生 > >iOS自動構建以及打包命令(xcodebuild,xcrun)

iOS自動構建以及打包命令(xcodebuild,xcrun)

兩個命令的語法以及使用方法,資料比較多,到處都可以找到,比如:

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一樣