ios自動打包腳本,融合xctool、xcodebuild、xcrun


在少數需求下,須要可以自動打包,將app發佈到不一樣的平臺,那麼下面給出本人使用的自動打包腳本:api


# 如下內容到分割線是,須要針對每一個項目進行配置的部分xcode


buildDay=$(date +%Y%m%d)app


buildTime=$(date +%Y%m%d%H%M)curl


#簽名證書iphone

CODE_SIGN_IDENTITY="證書"ui

# 描述文件名google

PROVISIONING_PROFILE="描述文件" url

# 打包版本類型spa

CONFIGURATION="Release"code

# sdk類型設置

SDKType="iphoneos"


TARGET="項目的target(通常狀況下,target和scheme相同,故下面scheme使用也是此處的target)"


packPath="archive/${buildDay}"

#0:僅使用xcodebuild打包

#1:使用xcodebuild、xctool進行打包 

#2:使用xcodebuild、xrun進行打包

styleType=0


# 使用plist進行打包

Export_Plist_Path="ExportOptions.plist"


# 須要將ipa文件上傳到蒲公英須要配置

# 蒲公英官網用戶Key

USER_KEY="key"

# 蒲公英官網API Key

API_KEY="api key"

# xcarchive文件的路徑

archivePathName="${packPath}/${TARGET}_${buildTime}.xcarchive"

# app文件的路徑

appPathName="${packPath}/${TARGET}_${buildTime}"

# ipa文件的路徑

ipaPathName="${packPath}/${TARGET}_${buildTime}"

# 使用xcrun方式打包時,ipa文件的路徑

xcrunIpaPathName="$(pwd)/$ipaPathName.ipa"



# 分割線

# --------------------------------------------------------


projectName="${TARGET}.xcodeproj"


workspaceName="${TARGET}.xcworkspace" 


# if [[ -d "$projectName" ]]; then

if [[ ! -d "$workspaceName" ]]; then

echo "project exist"

xcodebuild -project $projectName  -target ${TARGET} CODE_SIGN_IDENTITY="${CODE_SIGN_IDENTITY}" clean

else

echo "workspace exist"

xcodebuild -workspace $workspaceName  -scheme ${TARGET} CODE_SIGN_IDENTITY="${CODE_SIGN_IDENTITY}" clean

fi


if [ $styleType -lt 2 ]; then


echo "by using xcodebuild、xctool"

if [ $styleType -eq 0 ]; then

if [[ ! -d "$workspaceName" ]]; then

echo "project exist"

xcodebuild -project $projectName  -scheme ${TARGET} -archivePath $archivePathName CODE_SIGN_IDENTITY="${CODE_SIGN_IDENTITY}" -configuration $TARGET archive

else

echo "workspace exist"

xcodebuild -workspace $workspaceName  -scheme ${TARGET} -archivePath $archivePathName CODE_SIGN_IDENTITY="${CODE_SIGN_IDENTITY}" -configuration $TARGET archive

fi

else

    # //clean下工程

# xctool -scheme ${TARGET} -configuration $TARGET clean   

# //對項目進行Archive, 將xcarchive文件導出到指定目錄

xctool -scheme ${TARGET} -configuration $TARGET archive -archivePath $archivePathName

fi

#使用下面一行命令生成ipa文件時,文件能夠正常生成,可是不能安裝到設備上

# 多是由於xcodebuild最新版本的緣由,由於在最新版本xcodebuild -exportArchive -exportFormat IPA 在xcodebuild -h查看文檔的時候已經沒有

# xcodebuild -exportArchive -exportFormat IPA -archivePath $archivePathName -exportPath $ipaPathName -configuration $CONFIGURATION CODE_SIGN_IDENTITY="${CODE_SIGN_IDENTITY}" PROVISIONING_PROFILE="${PROVISIONING_PROFILE}"


#使用下面一行命令能夠生成ipa文件時,文件能夠生成,

#以前ExportOptions由於添加了teamID和method,兩條屬性,致使出現以下錯誤

# Error Domain=IDEDistributionErrorDomain Code=1 "The operation couldn’t be completed. (IDEDistributionErrorDomain error 1.)"

# google找到這個 http://stackoverflow.com/questions/32841300/xcodebuild-exportarchive-exportoptionsplist-error-for-key-method-expected-o

# 照這個問題解答,刪除teamID,能夠順利完成打包

xcodebuild -exportArchive -exportOptionsPlist $Export_Plist_Path -archivePath $archivePathName -exportPath $ipaPathName CODE_SIGN_IDENTITY="${CODE_SIGN_IDENTITY}" PROVISIONING_PROFILE="${PROVISIONING_PROFILE}"


else

echo "by using xcodebuild、xrun"

if [[ ! -d "$workspaceName" ]]; then

echo "project exist"

# 此處因爲一直設置CONFIGURATION_BUILD_DIR=$appPathName,

# 把CoreAnimation、.app.dSYM文件設置放在一個文件夾

# 而且將這個文件夾命名爲.app文件, 根據這個.app文件進行打包

# 致使生成了ipa文件,可是沒法安裝,

xcodebuild -project $projectName  -scheme ${TARGET}  CONFIGURATION_BUILD_DIR=$appPathName CODE_SIGN_IDENTITY="${CODE_SIGN_IDENTITY}" -configuration $TARGET 

else

echo "workspace exist"

xcodebuild -workspace $workspaceName  -scheme ${TARGET}  CONFIGURATION_BUILD_DIR=$appPathName CODE_SIGN_IDENTITY="${CODE_SIGN_IDENTITY}" -configuration $TARGET

fi


# 此處使用xcrun進行打包

xcrun --sdk $SDKType -v PackageApplication "$appPathName/$TARGET.app" -o $xcrunIpaPathName

fi


# 將ipa文件上傳到蒲公英官網

# curl -F "file=@${ipaPathName}" -F "uKey=${USER_KEY}" -F "_api_key=${API_KEY}" http://www.pgyer.com/apiv1/app/upload


echo "\n all action done"

相關文章
相關標籤/搜索