web-dev-qa-db-ja.com

BuildConfig.DEBUGは常にfalseを返します

どして BuildConfig.DEBUGアプリケーションを実行するとfalseを返しますか?

次のようにログを制御するために使用します。

public static void d(String LOG_TAG, String msg){
    if(BuildConfig.DEBUG){
        Log.d(LOG_TAG,msg);
    }
}
17
cocoa

あなたのAndroid Studio ビルドバリアントあなたはデバッグバリアントですか?

これは、flavorsまたはdebugのいずれかにreleaseを使用する場合に適用されます。

デバッグモードでは、BuildConfig.BUILDは真であり、リリースモードでは偽です。

9
marshallino16

クラスのインポートをチェックし、正しいBuildConfigパスを使用していることを確認してください。 BuildConfigは、アプリからではなく、一部のライブラリから使用できます。

51
DmitryBorodin

そのコードがライブラリにある場合、 gradleの3年前のバグ のおかげで、常にfalseになります。

5

おそらく理想的ではありませんが、私は自分で作成することになりました

    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のように対処します。

2
ssawchenko

間違ったパッケージをインポートしている可能性があります。確認してください。 (一部のAndroidライブラリにもBuildConfigクラスがあります)

2
César Noreña

この問題には回避策があります。

アプリ

dependencies {
    releaseCompile project(path: ':library', configuration: 'release')
    debugCompile project(path: ':library', configuration: 'debug')
}

ライブラリ

Android {
    publishNonDefault true
}
2
ND_

Build.configでdebuggable trueを指定しましたが、これは常にfalseでした

この変更後、すべてが正常に機能していました。

enter image description here

2
hannes ach

クラスの最上位にあるビルド構成の自動インポートステートメントがプロジェクトに属していることを確認します。

com.your.package.name.BuildConfig

BuildConfigインポートはリリースされたライブラリに属している可能性があります。DEBUGはfalseです。

0
jeet.chanchawat