のGradleのAndroidプラグインによって
あなたはGradleのbuildConfigField
を使用することができます。たとえば、あなたもあなたのBuildConfigに他のいくつかのタイプを追加することができますbuildConfigField
で
android {
...
buildTypes {
debug {
buildConfigField "boolean", "TYPE", "true"
}
release {
buildConfigField "boolean", "TYPE", "false"
}
...
}
}
、その後
@Test(type = BuildConfig.TYPE)
public class Example {
}
については 。
android {
buildTypes {
debug {
buildConfigField "int", "A_INT", "1"
buildConfigField "String", "A_STRING", "\"string_1\"" // <---note the escape
}
release {
buildConfigField "int", "A_INT", "2"
buildConfigField "String", "A_STRING", "\"string_2\""
}
}
}
、あなたが複数の味を持っている場合、あなたはそれぞれの味のフィールドを定義することができます。同一の規則で
productFlavors {
// Define separate dev and prod product flavors.
dev {
buildConfigField "boolean", "IS_DEV", "true"
}
prod {
buildConfigField "boolean", "IS_DEV", "false"
}
}
、あなたはresValue
を使用して、リソースに値を追加することができます。
android {
buildTypes {
debug{
resValue "string", "dev_name", "Alice"
}
release {
resValue "string", "dev_name", "Bob"
}
}
}
コード
あなたはSRC /デバッグ/ Javaの/ your.package.nameとのsrc /リリース/ javaの下で異なる値を持つ同じクラスの下の値を使用してクラスを配置することができます/ your.package.name
デバッグバージョン
public final class MyConfigurations {
public static final boolean TYPE = true;
...
}
リリースバージョン
public final class MyConfigurations {
public static final boolean TYPE = false;
...
}
そして、あなたはまた、アンドロイドのGradleプラグインの同じロジックで味で遊ぶことができます(実際にも、このソリューションは、そのプラグインによって異なります)
それはトンという実際には非常に驚きです彼は2つの理由のために働いているようだ。私は確かに 'BuildConfig.DEBUG'の代わりに自分のカスタム' buildConfigField'(私はそれらを頻繁に使用しています)を使ってみましたが、成功したことは覚えていません。D 2. ' BuildConfig'クラスの 'DEBUG'フィールドとあなたの 'TYPE'フィールドはまったく同じように見えますが、Android Studioでは' BuildConfig.DEBUG'を使用することはできません。 –
今のところ、あなたは賞金のための最善の候補者です。それをしばらく続けてみましょう。誰か他の解決策も出てくるかどうかがわかります。 –
確かに、BuildConfig.DEBUGとBuildConfig.TYPEは本当に異なっています。はい、どちらも静的constですが、TYPEには静的で事前定義された値がありますが、BuildConfig.DEBUGは 'parseBoolean(" true/false ")で評価されます。 –