1. ホーム

[解決済み】Gradleの変数をJavaで使えるように宣言することは可能か?

2022-03-24 14:27:37

質問

Gradleの変数をJavaで使えるように宣言することは可能ですか? 基本的には、私はbuild.gradleでいくつかのバーを宣言し、そしてビルド時にそれを(明らかに)取得したいです。ちょうどC/C++のプリプロセッサーマクロのように...

宣言の例としては、こんな感じでしょうか.

android {
    debug {
        A_VAR_RETRIEVABLE_IN_JAVA = 42
    }
    release {
        A_VAR_RETRIEVABLE_IN_JAVA = 42+52
    }
}

そのような方法はあるのでしょうか?

どのように解決するのですか?

GradleからJavaで使用するために値を渡す2つの方法を紹介します。

Java定数を生成する

android {
    buildTypes {
        debug {
            buildConfigField "int", "FOO", "42"
            buildConfigField "String", "FOO_STRING", "\"foo\""
            buildConfigField "boolean", "LOG", "true"
        }

        release {
            buildConfigField "int", "FOO", "52"
            buildConfigField "String", "FOO_STRING", "\"bar\""
            buildConfigField "boolean", "LOG", "false"
        }
    }
}

でアクセスすることができます。 BuildConfig.FOO

Androidリソースを生成する

android {
    buildTypes {
        debug{
            resValue "string", "app_name", "My App Name Debug"
        }
        release {
            resValue "string", "app_name", "My App Name"
        }
    }
}

で通常の方法でアクセスすることができます。 @string/app_name または R.string.app_name