BuildConfig.DEBUG 总是 return 错误
BuildConfig.DEBUG always return false
为什么我运行申请的时候BuildConfig.DEBUG
return是假的?
我用它来控制日志如下:
public static void d(String LOG_TAG, String msg){
if(BuildConfig.DEBUG){
Log.d(LOG_TAG,msg);
}
}
在您的 Android Studio build variant 中,您使用 debug variant 吗?
当您使用 flavors
时适用于 debug
或 release
。
在调试模式下,BuildConfig.BUILD
为真,在发布模式下,为假。
如果该代码在库中,那么它永远是假的,多亏了 3-year-old bug in gradle。
问题有解决方法:
应用
dependencies {
releaseCompile project(path: ':library', configuration: 'release')
debugCompile project(path: ':library', configuration: 'debug')
}
图书馆
android {
publishNonDefault true
}
也许不理想,但我最终创建了自己的
buildTypes {
debug {
buildConfigField "boolean", "IS_DEBUG", "true" // Had issues with BuildConfig.DEBUG, created IS_DEBUG to ensure functionality behaved as expected.
}
release {
signingConfig signingConfigs.release
buildConfigField "boolean", "IS_DEBUG", "false"
}
}
然后像 BuildConfig.IS_DEBUG
一样以编程方式解决它。
检查 class 中的导入,确保您使用的是正确的 BuildConfig 路径。您可以不从您的应用程序中使用 BuildConfig,而是从一些库中使用。
也许您导入了错误的包,请检查一下。 (一些 Android 库也有 BuildConfig class)
我在 build.config 中指定了 debuggable true
,但这是 总是 false
此更改后,一切正常:
确保class顶部构建配置的自动导入语句属于您的项目。
com.your.package.name.BuildConfig
BuildConfig
导入可能属于已发布的库,那里 DEBUG
是错误的。
不导入 BuildConfig
。这是自动生成的 class,无需导入它,尽管 Android Studio 可能会告诉您。
如果 Android Studio 提示您导入 BuildConfig
可能是因为您需要进行初始 Gradle 构建以创建自动生成的 class最终创建于 com.yourdomain.yourapp.BuildConfig
。当您升级 Android Studio 和 Gradle,或者当您 运行 Build -> Clean project.
时,可能会发生这种情况
如果你导入另一个包的 BuildConfig
,那么它当然永远是错误的,因为它们只发布它们的发行版,而不是它们的调试版。
关于建议修改 build.gradle
的其他答案,我发现指定 buildType
与 Android Studio 及其生成的 BuildConfig
的默认行为冲突,说明我有一个重复的条目。
所以基本上:
- 不要导入任何包的
BuildConfig
(让它保持红色)
- 不要将
buildType
添加到您的 build.gradle
(这可能与自动生成 class 的默认构建行为冲突)
- 忽略 lint 错误
- 运行 建造
错误应该消失了。
我在升级 Android Studio 和 Gradle 以及清理项目时遇到过这种情况。
忽略导入提示
不要导入另一个包的 BuildConfig
——它永远是错误的,因为他们没有发布他们的调试版本。
导入会导致您遇到的错误
在我的项目中,如果我导入建议的库之一,它会显示你遇到的错误,因为没有人发布调试版本,所以如果你指向它,它当然总是错误的给别人的。
忽略智能感知和运行项目
只是 运行 一个版本。 class 将自动生成并且警告将消失。
为什么我运行申请的时候BuildConfig.DEBUG
return是假的?
我用它来控制日志如下:
public static void d(String LOG_TAG, String msg){
if(BuildConfig.DEBUG){
Log.d(LOG_TAG,msg);
}
}
在您的 Android Studio build variant 中,您使用 debug variant 吗?
当您使用 flavors
时适用于 debug
或 release
。
在调试模式下,BuildConfig.BUILD
为真,在发布模式下,为假。
如果该代码在库中,那么它永远是假的,多亏了 3-year-old bug in gradle。
问题有解决方法:
应用
dependencies {
releaseCompile project(path: ':library', configuration: 'release')
debugCompile project(path: ':library', configuration: 'debug')
}
图书馆
android {
publishNonDefault true
}
也许不理想,但我最终创建了自己的
buildTypes {
debug {
buildConfigField "boolean", "IS_DEBUG", "true" // Had issues with BuildConfig.DEBUG, created IS_DEBUG to ensure functionality behaved as expected.
}
release {
signingConfig signingConfigs.release
buildConfigField "boolean", "IS_DEBUG", "false"
}
}
然后像 BuildConfig.IS_DEBUG
一样以编程方式解决它。
检查 class 中的导入,确保您使用的是正确的 BuildConfig 路径。您可以不从您的应用程序中使用 BuildConfig,而是从一些库中使用。
也许您导入了错误的包,请检查一下。 (一些 Android 库也有 BuildConfig class)
我在 build.config 中指定了 debuggable true
,但这是 总是 false
此更改后,一切正常:
确保class顶部构建配置的自动导入语句属于您的项目。
com.your.package.name.BuildConfig
BuildConfig
导入可能属于已发布的库,那里 DEBUG
是错误的。
不导入 BuildConfig
。这是自动生成的 class,无需导入它,尽管 Android Studio 可能会告诉您。
如果 Android Studio 提示您导入 BuildConfig
可能是因为您需要进行初始 Gradle 构建以创建自动生成的 class最终创建于 com.yourdomain.yourapp.BuildConfig
。当您升级 Android Studio 和 Gradle,或者当您 运行 Build -> Clean project.
如果你导入另一个包的 BuildConfig
,那么它当然永远是错误的,因为它们只发布它们的发行版,而不是它们的调试版。
关于建议修改 build.gradle
的其他答案,我发现指定 buildType
与 Android Studio 及其生成的 BuildConfig
的默认行为冲突,说明我有一个重复的条目。
所以基本上:
- 不要导入任何包的
BuildConfig
(让它保持红色) - 不要将
buildType
添加到您的build.gradle
(这可能与自动生成 class 的默认构建行为冲突) - 忽略 lint 错误
- 运行 建造
错误应该消失了。
我在升级 Android Studio 和 Gradle 以及清理项目时遇到过这种情况。
忽略导入提示
不要导入另一个包的 BuildConfig
——它永远是错误的,因为他们没有发布他们的调试版本。
导入会导致您遇到的错误
在我的项目中,如果我导入建议的库之一,它会显示你遇到的错误,因为没有人发布调试版本,所以如果你指向它,它当然总是错误的给别人的。
忽略智能感知和运行项目
只是 运行 一个版本。 class 将自动生成并且警告将消失。