此坑也不算什么坑啦,主要是升级带来的麻烦。
升级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里用到了推送,而我打包的是企业包,不支持推送,所以需要在打包前修改一下project文件。
这里面后来我又增加了两项
# 修改企业版本不支持推送
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啦)
学习了一上,发现很强大呀。
补:
后来发现 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