SDK开发

[iOS 开发] 如何实现指定文件只在 debug 模式下参与编

2016-12-25  本文已影响238人  ShannonChenCHN

时间: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 的方式来解决了。

参考资料

  1. CocoaPods官网:
    https://cocoapods.org
  2. Podfile语法参考(译):
    http://www.tomatopeter.com/2014/11/22/podfile-syntax-reference-chinese/
  3. 把自己Github上的代码添加Cocoapods支持:
    http://www.cocoachina.com/ios/20161027/17869.html
  4. iOS:手把手教你发布代码到CocoaPods(Trunk方式):
    http://www.cnblogs.com/wengzilin/p/4742530.html
  5. 创建CocoaPods的制作过程:
    http://www.jianshu.com/p/98407f0c175b
  6. 使用cocoapods管理私有库:
    http://www.tomatopeter.com/2016/05/13/cocoapods-private-pod/

如果你也喜欢交流技术、喜欢阅读、积极践行,欢迎关注我的公众号:祥龙Shannon写字的地方,一起成长。

qrcode_for_gh_cc686217be41_344.jpg
上一篇下一篇

猜你喜欢

热点阅读