根据this Blog BuildConfig.DEBUG是不可靠的。 因为我的同事正在广泛使用BuildConfig.DEBUG(看起来像生产代码中的测试代码),所以我想知道这个标志是否仍然像几年前一样被窃听。BuildConfig.DEBUG仍然被窃听?
回答
你所指的问题似乎是针对ADT + Eclipse的。所以我相信如果你使用Gradle和Android Studio,这应该不是问题。
至关重要:这只是如果你使用自动构建选项,你不清理项目出现。因此,我很难考虑这个错误。毕竟,谁说什么应该和不应该重建,每当你做一个代码更改,并建立自动启用?
作为一个良好的做法,您应该始终在实际发布之前清理并重建项目,在这种情况下,这不是问题。
所以是的,如果你使用这个设置,并且在发布之前不重建你的项目,并且你还在使用ADT和Eclipse(这似乎是注定要弃用的),那么这仍然是一个问题。
这里是错误的讨论:https://code.google.com/p/android/issues/detail?id=27940
非常好 - 感谢您的详细解释 – 2015-02-06 21:18:45
感谢您的有用信息。仅供参考,与第一段相反,使用Gradle至少有时候会报告发生在Android Studio(从2.1.1开始)中的问题*。 – LarsH 2016-05-19 13:33:54
我可以证实这个错误仍然存在,与Android工作室1.2构建AI-140.1782451和摇篮1.1编译针对Android的API级别21
的问题是测试在Android 5.0.2或类似设备上可以看到Nexus 10。
如果您在源代码编辑器中打开BuildConfig.DEBUG它说:
public static final boolean DEBUG = Boolean.parseBoolean("true");
但是,如果你受到质疑调试应用程序,DEBUG停留在假。 这阻碍了我的Retrofit-debugging,因为我想根据构建类型来有条件地启用它。
'Boolean.parseBoolean(“true”)'return'true',**但**过去与'ADT'构建(即。e:在Gradle构建之前)是 'public final static boolean DEBUG = Boolean.parseBoolean(null);' – 2016-08-16 14:33:20
您是否已将此问题报告给Google? – Sufian 2016-09-27 11:55:15
不,因为由于一些调试构建类型,我现在使用BuildConfig.BUILD_TYPE并检查与某个调试类型或分段类型是否相等。 – 2016-09-30 14:57:46
我一直与预定义变量的问题,所以我创建了自己:
buildTypes {
// If we use the same keystore for debug and release, we don't have to wipe all preferences
debug {
//noinspection GroovyAssignabilityCheck
signingConfig signingConfigs.releaseConfig
zipAlignEnabled true
resValue "bool", "DEBUG", "true"
}
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
//noinspection GroovyAssignabilityCheck
signingConfig signingConfigs.releaseConfig
zipAlignEnabled true
resValue "bool", "DEBUG", "false"
}
}
我你的代码,你可以阅读这个变量:
if (!MyApplication.get().getResources().getBoolean(R.bool.DEBUG)) {
// Firebase Crash reporting
FirebaseCrash.report(e);
}
- 1. Buffer.byteLength()被窃听
- 2. 其列和行被窃听
- 3. .NET ComboBox是否被窃听?
- 4. 如何检测哪个UILabel被窃听?
- 5. 如何知道哪个已被窃听?
- 6. matlab的imfill函数似乎被窃听?
- 7. 转换在Safari中被窃听
- 8. 当键盘下跌,而x被窃听
- 9. Group Settings API似乎被窃听
- 10. 显示在表行被窃听
- 11. 是不是Jquery.validate.rules(“add”,{.....})被窃听?
- 12. Facebook的风扇框被窃听
- 13. UIAutomation UICollectionView细胞不能被窃听
- 14. Monotouch.Dialog - 哪一个元素被窃听
- 15. tabBarItem直到标签栏被窃听
- 16. 权限被拒绝仍然被添加到.on()监听器
- 17. 窃听的Internet Explorer
- 18. SIP通信窃听
- 19. preg_match_all崩溃/窃听?
- 20. AfterTextChanged即使在删除收听者后仍然被调用
- 21. dealloc仍然被调用吗?
- 22. 是比较验证窃听
- 23. 解析窃听?下面
- 24. jquery新闻股票窃听
- 25. omp_get_thread_num()返回窃听号码?
- 26. 一个窃听查询
- 27. webclient窃听或什么?
- 28. JQuery Mobile Navbar正在窃听
- 29. StatusStrip中的标签窃听
- 30. sqlite3 IOS查询窃听表
如果您使用的是Android Studio和摇篮的Android,'BuildConfig'和'R'一样可靠,因为它们是使用相同的机制创建的。我从来没有遇到以前用'BuildConfig'和Eclipse/ADT报告的问题,所以我不知道它们是否被清除。 – CommonsWare 2015-02-06 20:16:33
我们使用的是Android Studio和Gradle - 听说可以使用,我感到宽慰。 – 2015-02-06 21:26:48
如果BuildConfig.DEBUG正确使用,您实际上不会有生产测试代码。对于这段代码:'if(BuildConfig.DEBUG){foo();如果这个常量是错误的,那么整个事情就会被消除。如果是这样,编译结果中只会出现'foo()'。 – JohnnyLambada 2016-08-31 23:06:20