IOS打包指令碼思路

大搜車-自娛發表於2014-05-30
ios 打包指令碼。目的直接生成可用於上傳APP STORE的ipa檔案,提供測試直接測試。
前提是已經有一個可以編譯的工程,並且有蘋果的開發賬號並生成了各種證照
主要三個步驟:
一、準備證照檔案(都是distribution的),並匯入;
這裡用到3個相關檔案,一個.p12、一個.cer,還有一個.mobileprovision(暫且用distribution.p12、distribution.cer、distributionProfile.mobileprovision 命名)
雙擊可以將上述檔案匯入到系統當中,我們這裡介紹用命令列匯入的方法,以便用機器來幫助我們完成這些工作。
首先是需要匯入證照:這步驟前請確認這3個檔案儲存的目錄,用終端進入這個目錄。
#解鎖鑰匙串,證照是需要匯入到鑰匙串中的,如果鑰匙串處於鎖定狀態,可以用這個命令解鎖,USERNAME是使用者名稱
[run in terminal]security unlock-keychain /Users/USERNAME/Library/Keychains/login.keychain
#匯入distribudion證照私鑰,PASSWORD是證照的密碼
[run in terminal]security import ./distribution.p12 -k ~/Library/Keychains/login.keychain -P PASSWORD -T /usr/bin/codesign
#匯入distribudion證照公鑰,可以下載得到
[run in terminal]security import ./distribution.cer -k ~/Library/Keychains/login.keychain
#匯入產品provision,USERNAME是使用者名稱
cp ./distributionProfile.mobileprovision "/Users/USERNAME/Library/MobileDevice/Provisioning Profiles/distributionProfile.mobileprovision"
執行完上述的命令後可以,分別在鑰匙串中看到公鑰和私鑰的證照,在iPhone實用工具(或xcode4+ /Organizer/Devices/Provision Profiles)找到provision記錄。
注意:如果要用ssh命令遠端啟動執行步驟2中的指令碼,需要用到鑰匙串的解鎖。
 
二、 編譯指令碼的編寫,與執行
用指令碼生成ipa檔案主要用到兩個命令,一個是xcodebuild、一個是cxrun,細節可以問google,文件很多。可以直接將下面的兩個/*——————*/之間的內容拷貝生成一個 build.sh檔案。
將這個build.sh連同上面的distributionProfile.mobileprovision檔案一同拷貝到你的工程目錄下(與.xcodeproj同一個目錄)。終端中cd到這個目錄下,執行下面的命令
[run in terminal]sh build.sh
注意指令碼中需要修改兩處,證照名稱"iPhone Distribution: XXXXX"替換成你自己證照的名稱,這個名稱可以通過下面的命令得到。
[run in terminal]certtool d ./distribution.cer |grep iPhone
這個命令的輸出:   Common Name     : iPhone Distribution: XXXXXXX
只要拷貝其中的"iPhone Distribution: XXXXXXX"覆蓋即可。
還需要將TARGET_LIST快取你自己project中的工程名字
/*————————————————————————————————————————————————*/
#!/bin/sh
TARGET_LIST="wirelessframe"
CONFIGURATION="Release"
DISTRIBUTION_CERTIFICATE="iPhone Distribution: XXXXX"
PROVISIONING_PROFILE_PATH="distributionProfile.mobileprovision"
# BUILD_DATE_TAG=$(date "+%Y%m%d")
# LOG_FILE="$(pwd)/${BUILD_DATE_TAG}.log"
 
BUILD_DIRECTORY="$(pwd)/build/${CONFIGURATION}-iphoneos"
rm -f ${BUILD_DIRECTORY}/*.ipa
 
 
/usr/bin/xcodebuild -sdk iphoneos $TARGET_LIST -configuration "${CONFIGURATION}" clean build
 
if [ ! -d "$(pwd)/build/${CONFIGURATION}-iphoneos/${TARGET_LIST}.app" ]; then
echo "ERR::Building APP file fail."
exit
else
echo "--BUILD APP OK"
fi
 
APP_FILENAME="${TARGET_LIST}.app"
    IPA_FILENAME="${TARGET_LIST}_${BUILD_DATE_TAG}.ipa"
 
 
/usr/bin/xcrun -sdk iphoneos PackageApplication -v "${BUILD_DIRECTORY}/${APP_FILENAME}" -o "${BUILD_DIRECTORY}/${IPA_FILENAME}" --sign "${DISTRIBUTION_CERTIFICATE}" --embed "${PROVISIONING_PROFILE_PATH}"
 
if [ $? != 0 ]; then
echo "ERR::Building IPA fail."
exit
else
echo "--${IPA_FILENAME} OK"
fi
 
# cp ${BUILD_DIRECTORY}/*.ipa ${PACKAGE_DIR}
/*————————————————————————————————————————————————*/
 
如果以前正常會生成一個ipa檔案包,這個包就是我們用來測試和上傳的ipa檔案了。這裡如果遇到codesion的錯誤,表示證照可能有問題,你可以檢查證照,並確保證照正常匯入。
 
三、 上傳工具介紹
xcode自帶了上傳工具,以xcode4.5為例在Finder中找到xcode->滑鼠右擊選擇顯示包內容->Contents->Applications->Application Loader
用法可以見 【http://open.zhui.cn/index.php?title=AppStore新應用上傳指南
 
另外:擴充套件方面,在此指令碼的基礎上做一些變動可以支援打越獄的渠道包。也可以做OTA下載等等。如果將上面的3個證照快取開發證照,還可以配合hudson完成自動化的提交驗證和定時打包等。

相關文章