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

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

作者: ShannonChenCHN | 来源:发表于2016-12-25 21:59 被阅读238次

    时间: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

    相关文章

      网友评论

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

        本文链接:https://www.haomeiwen.com/subject/ilydvttx.html