微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

2.2.8.9 解决被依赖module中BuildConfig.DEBUG的值总为false问题

在Android的实际开发中,一般会有这样的需求,debug和release版本不同,接口地址不同,同时控制日志是否打印等,系统为我们提供了一个很方便的类BuildConfig可以自动判断是否是debug模式。
有了BuildConfig.DEBUG之后,你在代码中可以直接写入

if (BuildConfig.DEBUG) { 
         Log.d(TAG,"output something"); 
}  


在平时直接运行代码的时候BuildConfig.DEBUG的值自动为true,在发布后BuildConfig.DEBUG的值自动为false,153); font-family:microsoft yahei; font-size:14px">可以说是非常方便。


BUT。。。。
在Android Studio中(ADT不确定是否存在此问题),如果你的项目A依赖另外一个module B,而你也想通过BuildConfig.DEBUG来控制日志等,很遗憾,It not work!
不论你是debug还是release,BuildConfig.DEBUG的值都是false!

在Android Studio中,被依赖module里BuildConfig.DEBUG的值总为false,因为Library projects目前只会生成release的包.
例如module A依赖module B和module C,在Eclipse里运行时B和C里BuildConfig.DEBUG的值会是true(导出签名apk后会自动变成false);
然而在android Studio里B和C里的BuildConfig.DEBUG值总是false,A里的正常。这样就导致if(BuildConfig.DEBUG){Log.d(...)}日志无法正常显示


首先想到的是通过
buildConfigField “boolean”,“IS_DEBUG”,“true”
设置自定义参数来判断,结果还是不行。

然后看到
http://blog.csdn.net/qq549631030/article/details/51088904
这篇文章也遇到了同样的问题,通过添加 defaultPublishConfig “debug” 解决,这样虽然再debug状态下好使了,但是在发release版本的时候会导致DEBUG仍然为true,
除非手动修改defaultPublishConfig “release”,但是这样做就失去了我们最初的目的!

最后子stackoverflow上得到了解决
http://stackoverflow.com/questions/20176284/buildconfig-debug-always-false-when-building-library-projects-with-gradle
解决方法如下
With Android Studio 1.1 and having also the gradle version at 1.1 it is possible:

Library

 
 
  • 1
  • 2
  • 3
android { publishNonDefault true }

App

  
  
  • 1
  • 2
  • 3
  • 4
  • dependencies { releaseCompile project(path: ':library',configuration: 'release') debugCompile project(path: 'debug') }

    亲测好用!

    原文地址:https://www.jb51.cc/javaschema/282977.html

    版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

    相关推荐