Xcode 9 多渠道自动打包脚本

假设现在有个需求,就是打出100个包,每个包对应不同的渠道号。(一般有这种需求的大多为企业版app)这个渠道号可以在项目中info.plist添加一个key 和 value。如下:


image.png
项目中就可以直接使用[[[NSBundle mainBundle] infoDictionary] objectForKey:@"Channel"] 

但是这样每打一个包就得改一下这个value重新打包,如果要打100个包那就太麻烦了。使用脚本就可以很好的解决这个问题了,原理就是每次打包时,执行脚本修改plist文件下Channel对应的值。

脚本如下(适用workspace,如:通过cocoapods等集成三方库的项目):

#clean build
xcodebuild -workspace ./打包的项目名字.xcworkspace -scheme 打包的scheme名字 -configuration Release clean build
#archive
xcodebuild -workspace ./打包的项目名字.xcworkspace -scheme 打包的scheme名字 -configuration Release archive -archivePath ./archive
#设置渠道号,例如channel_01、channel_02、channel_03……
channels=("channel_01" "channel_02" "channel_03")
for i in ${channels[@]}
do
#修改plist文件中渠道号key(例如:Channel)
/usr/libexec/PlistBuddy -c "Set :Channel "$i"" ./archive.xcarchive/Products/Applications/打包出来的app名字(一般同scheme).app/info.plist
#删除以渠道号名字命名的文件夹,防止下次打包时文件覆盖
rm -Rf ./$i
#导出ipa
xcodebuild -exportArchive —exportFormat ipa -archivePath ./archive.xcarchive -exportPath ./$i -exportOptionsPlist ExportOptions.plist
done
#for循环完成以后删除.xcarchive文件
rm -Rf ./archive.xcarchive

注意:ExportOptions.plist文件是需要自己创建的。也可以用Xcode Archive出来一个app导出目录里自动会生成一个ExportOptions.plist文件,复制过来用即可。

ExportOptions.plist文件内容一般如下:

image.png

如何使用?

1、新建一个.sh脚本文件(如:archive.sh)(不会?创建一个txt,保存为.sh就OK了)
2、复制上面的脚本内容到刚刚创建的.sh文件,修改脚本中对应项目名字
3、新建一个.plist文件(如:ExportOptions.plist)设置打包方式(不会,就先用Xcode 手动archive一个包,导出目录中会自动生成这个文件,拷贝过来用)
4、将.sh文件和.plist文件复制到你的工程目录(xcworkspace同级)
5、打开终端,cd到工程目录,执行./archive.sh即可(若提示:Permission denied说明没有读写权限,解决办法:执行chmod 777 archive.sh命令后重试)

完成以后就会在该目录生成对应的文件,例如:

image.png
6、最后,打包完成以后,删除对应的几个文件即可(或者改一改脚本,设置导出目录,自动删除等,定制更加便捷的操作)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容