BuildConfig.DEBUG仍然被窃听?

根据这个Blog BuildConfig.DEBUG是不可靠的。 由于我的同事正在广泛使用BuildConfig.DEBUG(看起来像生产代码中的testing代码),我想知道这个标志是否像几年前一样被窃听。

Solutions Collecting From Web of "BuildConfig.DEBUG仍然被窃听?"

看来你所指的问题是ADT + Eclipse特有的。 所以我相信,如果你使用Gradle和Android Studio,这不应该是一个问题。

至关重要的是 :只有在使用“ 自动生成”选项的情况下,才会出现这种情况,而且不会清理项目。 因此,我很难考虑这个错误。 毕竟,谁说什么应该和不应该重build,每当你做一个代码更改,并build立自动启用?

作为一个良好的做法,在实际发布之前, 您应该始终清理并重build您的项目 ,在这种情况下,这不是一个问题。

所以是的,如果你使用这个设置,那么这仍然是一个问题,而不是在发布之前重build你的项目,而且你仍然在使用ADT和Eclipse(这似乎是注定要弃用的)。

以下是对该错误的讨论: https : //code.google.com/p/android/issues/detail?id=27940

我可以确认这个bug仍然存在,使用Android Studio 1.2 Build AI-140.1782451和Gradle 1.1进行Android API 21级编译testing。

使用Android 5.0.2或类似设备上的Nexus 10可以看到问题。

如果你在源代码编辑器中打开BuildConfig.DEBUG,它会显示:

 public static final boolean DEBUG = Boolean.parseBoolean("true"); 

但是,如果您debugging问题的应用程序,DEBUG保持假。 这阻碍了我的Retrofitdebugging,因为我想根据构buildtypes来有条件地启用它。

我总是有预定义variables的问题,所以我创build了自己的:

  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" } } 

我的代码你可以读这个variables:

  if (!MyApplication.get().getResources().getBoolean(R.bool.DEBUG)) { // Firebase Crash reporting FirebaseCrash.report(e); }