通过Xcode进行构建是手动构建。对于个人开发者和小型团队来说,这种构建方法是比较方便的。
对于需要进行持续集成的时候,自动化构建是不可避免的。
1、准备材料:
2、通过security命令解锁login
这个KeyChain
:
security unlock-keychain ~/Library/Keychains/login.keychain
3、通过security命令将p12文件导入到login
这个KeyChain
中:
security import xx.p12 -k ~/Library/Keychains/login.keychain -p PASSWORD -T /usr/bin/codesign
注:p12
文件是用密码保护的,上面的-p
参数就是p12
文件的密码。
4、通过security命令解析mobileprovision文件到一个新的文件中:
security cms -D -i xx.mobileprovision > tmp.xml 2> /dev/null
5、通过PlistBuddy命令获得mobileprovision文件的UUID
:
/usr/libexec/PlistBuddy -c "print UUID" tmp.xml
6、把mobileprovision文件复制到指定的目录下:
cp xx.mobileprovision ~/Library/MobileDevice/Provisioning\ Profiles/${uuid}.mobileprovision
openssl pkcs12 -in xx.p12 -passin pass:"$P12_PASSWORD" -nodes | grep "friendlyName: iPhone
8、通过xcodebuild编译:
xcodebuild \
-workspace $workspaceName \
-scheme $projectName \
-configuration $CONFIGURATION \
-sdk $SDK \
-archivePath ${archivePath} \
CODE_SIGN_STYLE=Manual \
CODE_SIGN_IDENTITY="${codeSignIdentity}" \
PROVISIONING_PROFILE="${uuid}" \
CONFIGURATION_BUILD_DIR="${buildPath}" \
VALID_ARCHS="arm64 armv7 armv7s"
clean archive
9、通过xcodebuild封包:
xcodebuild -exportArchive -archivePath $archivePath -exportOptionsPlistxx.plist -exportPath ${buildPath}
上面整个过程我已经写成了Shell脚本,下载即可使用:
curl -LO https://raw.githubusercontent.com/leleliu008/auto/master/ios/tool.sh