close
1.修改 打包IPA參數
projectPath, projectName, scheme, infoPlist
2.建立"打包IPA" 資料夾,放在projectPath目錄底下
2.1 將下方bash script command 複製,貼到 dev.command (可用touch dev.command 建立新檔案)
2.2 AdHocExportOptions.plist, AppStoreExportOptions.plist (這2個可由Xcode export ipa後的資料夾內取得)
3.dev.command可點2下的權限
chmod a+x dev.command
4.production.command
複製一份dev.command,重新命名成production.command,修改裡面打包IPA參數 projectPath, projectName, scheme, infoPlist
5.將apple id 產生的專用應用程式密碼,存入keychain 'testflight'
totalStart=`date +%s`
fileNameWithExtension="${0##*/}" # 含副檔名
fileName="${fileNameWithExtension%.*}" # 不含副檔名
# 上傳IPA 需修改的參數
appleID="{{appleID}}"
keychainName="{{keychainName}}"
teamID="{{teamID}}"
appleIDPassword=$(security find-generic-password -w -s "${keychainName}" -a "${appleID}")
# 打包 IPA 需修改的參數
projectPath="{{${HOME}/Documents/Git/ios}}"
exportFolder="打包IPA"
projectName='{{projectName}}'
scheme='{{scheme}}'
infoPlist="{{Info-dev.plist}}"
CFBundleName=$(/usr/libexec/PlistBuddy -c "Print :CFBundleName" "${projectPath}/${projectName}/${infoPlist}")
version=$( cat "${projectPath}/${projectName}.xcodeproj/project.pbxproj" | grep -m1 'MARKETING_VERSION' | cut -d'=' -f2 | tr -d ';' | tr -d ' ' )
defaultIPAName="${CFBundleName}.ipa"
newADIPAName="${CFBundleName} ad_hoc ${version}.ipa"
newAppStoreIPAName="${CFBundleName} appstore ${version}.ipa"
workspace="${projectName}.xcworkspace"
currentDate="$(date +'%y%m%d_%H%M%S')"
folderName="${projectName}_${currentDate}"
archivePath="${HOME}/Desktop/${folderName}/${fileName}.xcarchive"
# AppStore ExportOptionsPlist
appStoreExportOptionsPlist="${projectPath}/${exportFolder}/AppStoreExportOptions.plist"
appStoreExportPath="${HOME}/Desktop/${folderName}/${fileName}_appstore"
# Ad-hoc ExportOptionsPlist
adHocExportOptionsPlist="${projectPath}/${exportFolder}/AdHocExportOptions.plist"
adHocExportPath="${HOME}/Desktop/${folderName}/${fileName}_adhoc"
# echo
echo "\r\necho variables..."
echo "fileNameWithExtension = ${fileNameWithExtension}"
echo "fileName = ${fileName}"
echo "projectPath = ${projectPath}"
echo "projectName = ${projectName}"
echo "scheme = ${scheme}"
echo "${CFBundleName}"
echo "adIPAName = ${adIPAName}"
echo "version = ${version}"
echo "defaultIPAName = ${defaultIPAName}"
echo "newADIPAName = ${newADIPAName}"
echo "newAppStoreIPAName = ${newAppStoreIPAName}"
echo "workspace = ${workspace}"
echo "currentDate = ${currentDate}"
echo "folderName = ${folderName}"
echo "archivePath = ${archivePath}"
echo "appStoreExportOptionsPlist = ${appStoreExportOptionsPlist}"
echo "appStoreExportPath = ${appStoreExportPath}"
echo "adHocExportOptionsPlist = ${adHocExportOptionsPlist}"
echo "adHocExportPath = ${adHocExportPath}"
echo "\r\n1.切換目錄"
cd "${projectPath}"
echo "\r\n2.archive"
start=`date +%s`
xcodebuild archive -workspace "${workspace}" -scheme "${scheme}" -sdk iphoneos -archivePath "${archivePath}"
end=`date +%s`
archiveDuration=$((end-start))
echo "\r\n3.1 匯出 AppStore ipa"
start=`date +%s`
xcodebuild -exportArchive -archivePath "${archivePath}" -exportOptionsPlist "${appStoreExportOptionsPlist}" -exportPath ${appStoreExportPath} -allowProvisioningUpdates
end=`date +%s`
exportAppStoreIPADuration=$((end-start))
echo "\r\n3.2.匯出 Ad-hoc ipa"
start=`date +%s`
xcodebuild -exportArchive -archivePath "${archivePath}" -exportOptionsPlist "${adHocExportOptionsPlist}" -exportPath ${adHocExportPath} -allowProvisioningUpdates
end=`date +%s`
exportAdHocIPADuration=$((end-start))
echo "\r\n4.重新命名 ipa"
mv "${adHocExportPath}/${defaultIPAName}" "${adHocExportPath}/${newADIPAName}"
mv "${appStoreExportPath}/${defaultIPAName}" "${appStoreExportPath}/${newAppStoreIPAName}"
echo "\r\n5.打開ipa目錄"
open "${adHocExportPath}"
open "${appStoreExportPath}"
echo "\r\n輸出時間"
totalEnd=`date +%s`
totalDuration=$((totalEnd-totalStart))
echo "archiveDuration = ${archiveDuration} 秒"
echo "exportAppStoreIPADuration = ${exportAppStoreIPADuration} 秒"
echo "exportAdHocIPADuration = ${exportAdHocIPADuration} 秒"
echo "totalDuration = ${totalDuration} 秒"
echo "\r\n打包IPA完成"
#################### 準備上傳到TestFlight ####################
echo "\r\n6.準備上傳到TestFlight"
xcrun altool --upload-app -f "${appStoreExportPath}/${newAppStoreIPAName}" -t ios -u "${appleID}" -p "${appleIDPassword}" --asc-provider "${teamID}"
echo "\r\n總時間(含上傳)"
totalEnd=`date +%s`
totalDuration=$((totalEnd-totalStart))
echo "totalDuration = ${totalDuration} 秒"
echo "\r\nIPA 上傳到 Testflight 完成"
############################################################
同時打包dev & production.command
#!/bin/bash
echo '$0:' $0
echo 'Script stored at:' ${0%/*}
cd "${0%/*}"
./dev.command & ./production.command
全站熱搜
留言列表