如何在代码中检测我处于发布模式还是调试模式?


当前回答

是的,你将没有问题使用:

if (BuildConfig.DEBUG) {
   //It's not a release version.
}

除非您导入了错误的BuildConfig类。确保您引用的是项目的BuildConfig类,而不是来自任何依赖库。

其他回答

if (BuildConfig.DEBUG) { 



}

这对我很有用

由于关于BuildConfig的混合评论。调试,我使用以下方法在调试模式下禁用崩溃分析(和分析):

更新/ app / build.gradle

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.1"

    defaultConfig {
        applicationId "your.awesome.app"
        minSdkVersion 16
        targetSdkVersion 25
        versionCode 100
        versionName "1.0.0"
        buildConfigField 'boolean', 'ENABLE_CRASHLYTICS', 'true'
    }
    buildTypes {
        debug {
            debuggable true
            minifyEnabled false
            buildConfigField 'boolean', 'ENABLE_CRASHLYTICS', 'false'
        }
        release {
            debuggable false
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

然后,在代码中检测ENABLE_CRASHLYTICS标志,如下所示:

    if (BuildConfig.ENABLE_CRASHLYTICS)
    {
        // enable crashlytics and answers (Crashlytics by default includes Answers)
        Fabric.with(this, new Crashlytics());
    }

在你的应用中使用相同的概念,并将ENABLE_CRASHLYTICS重命名为任何你想要的。我喜欢这种方法,因为我可以在配置中看到标志,并且可以控制标志。

是的,你将没有问题使用:

if (BuildConfig.DEBUG) {
   //It's not a release version.
}

除非您导入了错误的BuildConfig类。确保您引用的是项目的BuildConfig类,而不是来自任何依赖库。

我正在使用这种解决方案,以防发现我的应用程序正在调试版本上运行。

if (BuildConfig.BUILD_TYPE.equals("debug")){
   //Do something
}

或者,您可以使用BuildConfig.BUILD_TYPE进行区分;

如果您正在运行调试构建 BuildConfig.BUILD_TYPE.equals(“调试”);返回true。对于发布,构建BuildConfig.BUILD_TYPE.equals("release");返回true。