时间:2016.12.25
背景:在平时开发中,我们有时候为了便于开发调试,会导入一些调试工具库,比如 FLEX,当然这只是在debug
模式下我们才使用这些库,如果在发布上线的包里也有这些代码的话,有可能会导致审核不通过,也有增大包体积的影响,还有可能会影响到 app 性能。那么,我们怎么样才能让这些代码在debug
模式下才参与编译,release
模式下不参与编译呢?
我现在的项目中用的是 CocoaPods 来管理第三方库的,所以对于那些用 CocoaPods 安装的库是很容易实现上述要求的,我们只需要在 Podfile 文件中对应的 pod 语句后加上 :configurations => ['Debug']
就行了(这里用到的是 Podfile 的 DSL 语法)。
例如,
pod 'FLEX', '~> 2.4.0', :configurations => ['Debug']
但是对于那些没有加入 CocoaPods 管理的代码该怎么办呢?有两种思路,一是自己将要分不同环境构建的代码制作成 pod 库,上传到 CocoaPods 上去,然后再到 Podfile 中设置一下就行了;另一种方式是直接在 Xcode 里面对工程在不同环境下的构建配置设置一下,这个我也没试过,不知可行不可行。
因为我的项目中用到了 iConsole,但是我要对其做一些自定义的修改,比如,切 api 环境的功能。所以我按照第一种方式试了一下,我先将 iConsole的源码 fork 了一份,然后在其中做了一些自定义的修改,并创建了自己的 pod 项目: iConsoleExtension,这样就能实现我想要的效果了。本来我还想让处理 debug 工具的逻辑代码文件也支持分不同环境参与编译,也就是上面说的第二种方式,但是目前还没有找到方法,所以先暂时用简单的 #ifdef DEBUG
的方式来解决了。
参考资料:
- CocoaPods官网:
https://cocoapods.org - Podfile语法参考(译):
http://www.tomatopeter.com/2014/11/22/podfile-syntax-reference-chinese/ - 把自己Github上的代码添加Cocoapods支持:
http://www.cocoachina.com/ios/20161027/17869.html - iOS:手把手教你发布代码到CocoaPods(Trunk方式):
http://www.cnblogs.com/wengzilin/p/4742530.html - 创建CocoaPods的制作过程:
http://www.jianshu.com/p/98407f0c175b - 使用cocoapods管理私有库:
http://www.tomatopeter.com/2016/05/13/cocoapods-private-pod/
如果你也喜欢交流技术、喜欢阅读、积极践行,欢迎关注我的公众号:祥龙Shannon写字的地方,一起成长。
qrcode_for_gh_cc686217be41_344.jpg
网友评论