最近折腾用Jenkins自动构建iOS应用。
编译环境
为了构建iOS应用,必须找台Mac电脑做slave。 安装很简单,貌似brew install jenkins就可以了,然后,Jenkins页面上将它加入作为slave。
开发者证书
为了可以编译、打包,需要制作开发者证书,并导出为.p12, .cer, .mobileprovision 生成过程自己Google吧。
编译、打包命令
同意Xcode和Apple SDK协议:
$ sudo xcodebuild -license
我用Facebook开源的xctool编译iOS应用,安装xctool。
$ brew install xctool
我没有使用Jenkins的Xcode插件,直接通过如下命令编译:
$ xctool -workspace ${WORKSPACE} -scheme ${SCHEME} archive -archivePath "${ARCHIVEPATH}/${IPA_NAME}"
$ xcrun -sdk iphoneos PackageApplication -v "${PROJECT_BUILDDIR}"/*.app -o "${ARCHIVEPATH}/${IPA_NAME}.ipa"
生成dSYM:
$ ( cd ${DSYM_INPUT_PATH} ; zip -r -X ${DSYM_ZIP_OUTPUT_PATH} *.dSYM ) # zipping dSYM for testflight upload
碰到的问题
User interaction is not allowed
$ security unlock-keychain -p <your-passwd> /Users/wlw/Library/Keychains/login.keychain
$ security show-keychain-info ~/Library/Keychains/login.keychain
$ set-keychain-settings -t 3600 -l ~/Library/Keychains/login.keychain
开始在命令行运行完还是一直报这个错误,后来,将unlock-keychain命令放在编译命令前就好了。
记得编译前先运行:
$ security unlock-keychain -p <your-passwd> "$HOME/Library/Keychains/login.keychain"