如何管理上百个渠道包?
手上有个项目要打一百多个渠道包,每个包的icon,启动图名字等都不一样。怎么破?
Target的失败尝试
最初,我采取了建target的办法处理。常规来说,这也是大家推荐的办法,但当建到30个Target后,Xcode操作变得越来越卡,并且每次添加一个新的类,都要勾选这几十个target确实很烦人,也容易遗漏,看来不是太好的方案~~
思考
一度陷入僵局后开始思考还有什么可以利用的。
1.脚本?
这时候没准大家想到了用脚本去控制打包。那调试的时候又不好针对指定渠道包测试,有bug难以处理最终等弊端。
2.新建工程,把公用部分打成fremawork?
这是个疯狂的想法,虽然解决了多target卡的问题,但规模庞大难以维护
3.新建工程,把公用部分弄成子工程?
和方法二一样···
回归Xcode
Xcode是一个很强大的工具,其中集成了很多可配置的元素。所以我相信利用Xcode自带的功能就能解决这个问题,所以开始想到了Xcode的配置文件.xcconfig文件
xcconfig
xcconfig是Xcode的一个工程配置文件,可以作为的一个补充配置Xcode,我们常用的Cocoapods就是用这东西来链接生成的静态库。大概长这样
Xcode中在这里选择
所以,我的思路是
给每个渠道包新建一个xcconfig文件,用来管理APP名字,ShareSDK key等一些需要特殊处理的地方。 APPIcon和启动图的管理就在Xcode的BuildPhases里的添加RunScript,进行拷贝替换。
最终就成了这样子
每次想调试那个渠道的工程也简单,只要把
Configurations里的debug项改成先要调试的config就行了
打包时就直接用脚本,通过--config选项能够指定加载哪个渠道的配置,例如:
xcodebuild -target "tuangouproject" -configuration Release -sdk iphoneos build -xcconfig "Build Config/$name.xcconfig" 1>/dev/null
打包脚本无非就是遍历整个配置文件夹,挨个打包就行了,一百个渠道部刷刷刷就打完了,完全没压力
整个世界清净··
本帖只提供方案,并不是一个基础教程,所以xconfig的新建过程没详细写,如果你还不知道xcconfig怎么用,可以先参考这里:Using xcconfig files for your XCode Project