smi*_*324 107 eclipse android adt
在最新版本的ADT(r17)中,添加BuildConfig.DEBUG了根据构建类型设置的生成常量.我遇到的问题是它永远不会设置为false,我希望它在执行"Android工具 - >导出签名的应用程序包"时会改变,但它不适合我.
那么我该如何更改构建类型呢?
添加了一项功能,允许您仅在调试模式下运行某些代码.Builds现在生成一个名为BuildConfig的类,其中包含一个DEBUG常量,该常量根据您的构建类型自动设置.您可以检查代码中的(BuildConfig.DEBUG)常量以运行仅调试函数
smi*_*324 56
目前,您可以通过禁用"自动构建",清理项目然后通过"Android工具 - >导出签名的应用程序包"导出来获得正确的行为.运行应用程序时BuildConfig.DEBUG应该是false.
Arn*_*Fun 36
使用Eclipse,我总是在发布中导出应用程序之前禁用"自动构建"选项.然后我清理项目并导出.否则它开始在调试模式下编译,然后BuildConfig.DEBUG的值可能是错误的.
使用Android Studio,我只需在build.gradle中添加自己的自定义变量:
buildTypes {
debug {
buildConfigField "Boolean", "DEBUG_MODE", "true"
}
release {
buildConfigField "Boolean", "DEBUG_MODE", "false"
}
}
Run Code Online (Sandbox Code Playgroud)
构建项目时,BuildConfig.java生成如下:
public final class BuildConfig {
// Fields from build type: debug
public static final Boolean DEBUG_MODE = true;
}
Run Code Online (Sandbox Code Playgroud)
然后在我的代码中我可以使用:
if (BuildConfig.DEBUG_MODE) {
// do something
}
Run Code Online (Sandbox Code Playgroud)
我建议在切换调试/发布版本后清理.
pbh*_*ick 11
它确实有效,但请注意,即使导出签名文件,代码文件也不会更改.导出过程会将此变量的值更改为false,这可能会给您一个错误的印象,即它不起作用.我用日志语句测试了这个
if (com.mypackage.BuildConfig.DEBUG)
Log.d(TAG, location.getProvider() + " location changed");
Run Code Online (Sandbox Code Playgroud)
测试时,我的Log语句不再产生任何输出.
检查imports,有时BuildConfig是从任何类库中无意中导入的.例如:
import io.fabric.sdk.android.BuildConfig;
Run Code Online (Sandbox Code Playgroud)
在这种情况下,BuildConfig.DEBUG将始终返回false ;
import com.yourpackagename.BuildConfig;
Run Code Online (Sandbox Code Playgroud)
在这种情况下,BuildConfig.DEBUG将返回您的真实构建变体.
ps我只是从我的答案中复制这个:BuildConfig.DEBUG在使用gradle构建库项目时总是错误的
| 归档时间: |
|
| 查看次数: |
58669 次 |
| 最近记录: |