前言

之前写个一个自动打包脚本
​​​https://github.com/xjh093/iOSAutoPacking​

利用终端操作
还是得手动操作几步

有没有一步就搞定的呢?
有!


正文

真正 ​​commond + B​​ 打好测试包。(提前配置好调试证书等…)

在​​Build Phases​​​ 添加一个脚本 ​​New Run Script Phases​

输入以下脚本:(格式不能错!一个空格都不行的)

if [ "${CONFIGURATION}" = "Debug" ] && [ -d "${BUILD_ROOT}/${CONFIGURATION}-iphoneos" ]
then
cd ${BUILD_ROOT}/${CONFIGURATION}-iphoneos
rm -rf Output
mkdir Payload
mkdir Output
cp -rf ${PROJECT_NAME}.app Payload/${PROJECT_NAME}.app
zip -r Output/${PROJECT_NAME}.ipa Payload
rm -rf Payload
open ./Output
fi

符号表 dSYM

如何生成对应的符号表?

需要先设置一下:
​​​Build Setting​​​​1. Debug Information Format -> DWARF with dSYM File​​​​2. Generate Debug Symbols -> YES​

配合脚本语句
​​​cp -rf ${PROJECT_NAME}.app.dSYM Output/${PROJECT_NAME}.app.dSYM​​​​rm -rf ${PROJECT_NAME}.app.dSYM​

就可以了!

完整的脚本:

if [ "${CONFIGURATION}" = "Debug" ] && [ -d "${BUILD_ROOT}/${CONFIGURATION}-iphoneos" ]
then
cd ${BUILD_ROOT}/${CONFIGURATION}-iphoneos
rm -rf Output
mkdir Payload
mkdir Output
cp -rf ${PROJECT_NAME}.app Payload/${PROJECT_NAME}.app
zip -r Output/${PROJECT_NAME}.ipa Payload
rm -rf Payload
cp -rf ${PROJECT_NAME}.app.dSYM Output/${PROJECT_NAME}.app.dSYM
rm -rf ${PROJECT_NAME}.app.dSYM
open ./Output
fi

问题1

每次 ​​Command + R​​​ 、 ​​Command + B​​​ 都会打开一个文件夹
有点讨厌~

上面说了,​​格式不能错!一个空格都不行​​​ 可以去掉一个空格,让脚本执行没有效果
就不会每次打一个文件夹了

比如,把

if [ "${CONFIGURATION}" = "Debug" ] 

改成这样

if ["${CONFIGURATION}" = "Debug" ] 

等到真正要打包的时候
再改回来
就OK了!

问题2

切换账号打包,导致少了文件,无法安装
原因:调试证书未配置好
​​​Build Setting -> Provisioning Profile​

详细看图:

iOS 测试包打包自动化 笔记_iphone


参考

更多细节:
​​​https://www.jianshu.com/p/d1e7dd688df7​