此坑也不算什么坑啦,主要是升級帶來的麻煩。
升級MacOS后,原來的Jenkins不能用了,又重新裝了一次。
XCode8后就沒有直接用XCode插件了。
構建時,直接使用Execute Shell了。

腳本如下:
# used to name the ipa
APP_NAME=你的應用的名稱
# project name, the same as the .xcodeproj file name
PROJECT_NAME="你的項目名稱"
# scheme name
SCHEME_NAME="Scheme名"
# profile name
DEVELOPMENT_TEAM="TeamID 如:F7XXXXXXW"
PROFILE_NAME="需要打包的Profile名"
PROFILE_UUID="XXXXXX-XXXX-4c92-XXXX-089f48dbc928"
# configuration for archive? Release或者Debug
CONFIGURATION="Release"
# login password, to unlock login keychain
LOGIN_PASSWORD="你的登錄密碼用于解鎖"
PROJECT_PATH=${WORKSPACE}/${APP_NAME}
security unlock-keychain -p ${LOGIN_PASSWORD} ${KEYCHAIN_PATH} || failed "unlock-keygen"
rm -rf build/*
mkdir -pv build
# archive
xcodebuild clean archive -workspace "${APP_NAME}.xcworkspace" \
-scheme ${SCHEME_NAME} \
-sdk iphoneos \
-configuration "${CONFIGURATION}"? \
-archivePath build/${PROJECT_NAME}.xcarchive? \
DEVELOPMENT_TEAM="${DEVELOPMENT_TEAM}" \
CODE_SIGN_IDENTITY="${CODE_SIGNING_IDENTITY}"? \
PROVISIONING_PROFILE="${PROFILE_UUID}"? \
SYMROOT="${PROJECT_PATH}/build" \
|| failed "xcodebuild archive"
# export ipa
xcodebuild -exportArchive -archivePath build/${PROJECT_NAME}.xcarchive \
-exportPath build/${PROJECT_NAME} \
-exportFormat ipa \
-exportProvisioningProfile "${PROFILE_NAME}" \
-verbose \
|| failed "xcodebuild export archive"
?
因為我的APP里用到了推送,而我打包的是企業(yè)包,不支持推送,所以需要在打包前修改一下project文件。
這里面后來我又增加了兩項
# 修改企業(yè)版本不支持推送
sed -i '' '/Push = {$/N;s/Push = {.*enabled = 1;/Push = {\
enabled = 0;/' ${WORKSPACE}/${APP_NAME}/${APP_NAME}.xcodeproj/project.pbxproj
sed -i '' '/aps-environment<\/key>$/N;/key>\n.*development/d' ${ENTITLEMENTS_PATH}
用sed 命令修改文件
關于sed命令可以百度(其實是Google啦)
學習了一上,發(fā)現(xiàn)很強大呀。
補:
后來發(fā)現(xiàn) xcodebuild命令不能改profile,不知道原因了。
那就直接用sed命令去修改project文件吧,這樣總可以了吧。
sed -i '' -e 's/DEVELOPMENT_TEAM = .*;/DEVELOPMENT_TEAM = '${DEVELOPMENT_TEAM}';/g' -e 's/PROVISIONING_PROFILE = .*;/PROVISIONING_PROFILE = "'${PROFILE_UUID}'";/g' -e 's/PROVISIONING_PROFILE_SPECIFIER = .*;/PROVISIONING_PROFILE_SPECIFIER = '${PROFILE_NAME}';/g' PROJECT_NAME.xcodeproj/project.pbxproj