自動打包
網上已經有許多開發者共享的打包腳本,只要輸入一個命令就可以自動打包、發布、郵件通知。?
但是最近發現,一個簡單的方法,可以讓我們變得更懶一些。?
這里不會專門講解以下知識(因為你不需要這些知識也可以使用本文提供的工具),請自行了解?
1. 使用 automator?Automator for Mac OS X: Tutorial and Examples?
2. 使用 shell script?Shell腳本編程30分鐘入門?
3. 使用 applescript?Introduction to AppleScript Language Guide?
4. xcodebuild?xcodebuild 手冊?
5. Application Loader altool?altool 手冊
xcodebuild?
打包、導出ipa都是使用的 xcodebuild?
可能你的工程需要指定 target,或者需要其他參數才能打出正確的包,了解一下xcodebuild還是很有必要的?
代碼中用到的exportOptionsPlist是一個plis配置文件,稍后可以下載到
#xcodebuild 簡單示例
#build clean
xcodebuild ?clean -configuration "$configuration" -alltargets
#archive
xcodebuild ?archive ?-workspace "$workspaceName" -scheme "$scheme" -configuration ?"$configuration" ?-archivePath ${archivePath}/${archiveName}.xcarchive ?CODE_SIGN_IDENTITY="$codeSignIdentity" ?PROVISIONING_PROFILE="$appStoreProvisioningProfile"
#導出到ipa
xcodebuild -exportArchive -archivePath ${archivePath}/${archiveName}.xcarchive -exportOptionsPlist "$exportOptionsPlist" -exportPath ${archivePath}/${archiveName}
Application Loader altool?
altool 位于 Application Loader,三個參數 ipapath、appleid、password?
在這之前我都是使用的Application Loader上傳包到 iTunesConnect
#altool簡單示例#validate"$altoolPath"--validate-app-f"$ipaPath"-u"$appleid"-p"$applepassword"-tios--output-formatxml#upload"$altoolPath"--upload-app-f"$ipaPath"-u"$appleid"-p"$applepassword"-tios--output-formatxml
Automator創建的workflow可以和其他應用程序無縫銜接,在【服務】選項里面可以找到自己為某個目標定制的workflow。?
使用Automator為xcode定制一個【服務】很簡單,所以并沒有考慮為xcode開發一個插件。?
打開Automator
新建一個service?
修改服務需要的輸入、選取需要服務的應用?
加入流程一?
Automator應用界面左側,打開資料庫面板,點擊【變量】,在搜索框中輸入“path”,選擇目標路徑變量,拖拽到中間區域?
拖拽到中間區域?
選取項目工程根路徑?
在 Automator 應用界面的下方,雙擊剛才【Destination Path】,在彈出面板中選擇工程路徑,選擇后點擊【完成】?
加入流程二?
automator應用界面左側,打開資料庫面板,點擊【操作】,在搜索框中輸入“applescript”,選擇運行AppleScript,拖拽到中間區域步驟1的下方?
拖拽到中間區域?
編輯 Applescript?
在 代碼框中輸入以下內容?
on run {input, parameters}
tell ?application ?"Terminal"
????activate
do ?script ?"cd " ?& ?input ?& ?" && . BuildScript/xcode-archive-release.sh"
end ?tell
return ?input?
end ?run
腳本文件 xcode-archive-release.sh 我放到了工程目錄的 BuildScript 文件夾里面?
這段 Applescript 腳本做的事就是 打開 Terminal,cd 到工程目錄,運行BuildScript文件夾里面的腳本文件
最終看起來是這個樣子的?
最后,保存文件,輸入文件名字就可以了。打開xcode,看看是否有了新的 service 選項
下載的腳本文件解壓后,放到項目里,與 xxx.xcworkspace(xxx.xcodeproj) 同一級
修改 xcode-archive-release.sh 里面的配置(見配置修改)
修改 release_exportOptions.plist 里面的 teamID
下載下來的 workflow 文件不用解壓,用Automator打開,修改工程目錄(參考使用 Automator)
打開 Terminal ,cd 到工程目錄下,運行命令xcodebuild -list
$:xcodebuild -list
Targets:? ? ? ??
????????????????XXXXXX? ? ? ??
????????????????XXXXXXTests? ??
Build Configurations:? ? ? ??
????????????????Debug
????????????????Release
If ?no build ?configuration ?is ?specified ?and ?-scheme ?is ? not ?passed ?then ?"Release" ?is ?used.? ??
Schemes:? ? ? ?
?XXXXXX
archiveName?
打包 archive 文件的名字(不用后綴)?
workspaceName?
工程文件的名字(需要后綴)?
scheme?
運行命令xcodebuild -list得到的Schemes,可能是一個列表,選一個你需要的?
codeSignIdentity?
形如:iPhone Distribution: xxxx Inc. (xxxxxxx)?
進入Build Settings, 編輯Code Signing identity成打release包需要的,再點擊一下剛才選中的選項,彈出框中點擊Other就可以獲得形如iPhone Distribution: xxxx Inc. (xxxxxxx)的數據?
appStoreProvisioningProfile?
形如:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx?
獲取方法與上面類似,最終獲得形如xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx的數據?
configuration?
值為:Release?
運行命令xcodebuild -list得到的Build Configurations,有兩個選項,打release包,所以值為Release?
exportOptionsPlist?
存放release_exportOptions.plist文件的相對路徑?
如果下載到的BuildScript文件夾存放到項目根目錄,其值為BuildScript/release_exportOptions.plist
ipaPath?
導出ipa文件的路徑?
altool工具回到該路徑獲取需要上傳的ipa文件,其值應為${PWD}/build/${archiveName}/${scheme}.ipa
appleid?
開發者賬號(郵箱)?
applepassword?
開發者賬號的密碼
本文講述了Automator工具創建自動化流程,這僅僅是Automator的一部分。?
善用Automator,工作會更輕松。