過去 1 時間、gradle.properties で FLAVOR_NAME のような変数名を設定し、それを build.gradle で使用して一種の動的なフレーバー名を付けようとしました。まだ成功していません。動的なフレーバー名を持つことさえ可能ですか? 私は次のようなことを意味します:
$FLAVOR_NAME{
versionName FLAVOR_VERSION
versionCode FLAVOR_CODE
}
過去 1 時間、gradle.properties で FLAVOR_NAME のような変数名を設定し、それを build.gradle で使用して一種の動的なフレーバー名を付けようとしました。まだ成功していません。動的なフレーバー名を持つことさえ可能ですか? 私は次のようなことを意味します:
$FLAVOR_NAME{
versionName FLAVOR_VERSION
versionCode FLAVOR_CODE
}
@Eloy_007、
あなたの質問はこれに似ていますが、あなたの質問にはいくつかのニュアンスがあり、次のように答えられると思います。
まず最初に、著者 (Coby Plain) がフレーバーを操作するためのより良いフレームワークを提供することについて読んでおくべき素晴らしい記事があります。また、android10/Android-CleanArchitecture リポジトリには、gradle プロパティをインポートするための非常に優れた構造があります。中を見て、ガイダンスbuildsystem/dependencies.gradle
を求めてください。presentation/build.gradle
とはいえ、半動的/インポートされたフレーバーを操作する場合のプロパティのインポートの簡単なサンプルを次に示します。
gradle ファイルでは、関連するすべてのプロパティが一緒に定義されている外部ファイルを参照でき、文字列などを結合するために単純なグルーヴィーな魔法を使用することができます。
build.gradle:
apply from: "properties.gradle" // load in properties from some other file
// ... plugins, etc.
android {
// some other sections
productFlavors {
dev {
// you may want to keep some non-imported flavors.
// maybe you're working with flavor dimension here
}
// ... maybe more standard flavors
flavors.each {name, flavor ->
def wrapEscaped = { s -> "\"${s}\""} // simple function to wrap strings
"$name" {
applicationId flavor.applicationId
versionName "${some_version_number}"
buildConfigField "String", "MAJOR_KEY", wrapEscaped(flavor.majorKey)
buildConfigField "String", "ANOTHER_ONE", wrapEscaped(flavor.anotherOne)
buildConfigField "int", "PILLOW_COUNT", flavor.pillowCount
// ... additional configs
}
}
}
}
次に、参照先で次のようproperties.gradle
に定義flavors
します。
ext {
config = [
baseId : "io.wethebest.mobile"
]
flavors = [
free : [
applicationId: config.baseId + ".free",
majorKey : "COCOA BUTTER",
anotherOne : "ANOTHER ONE",
pillowCount : 1,
]
simple : [
applicationId: config.baseId + ".simple",
majorKey : "A HAMMOCK",
anotherOne : "ANOTHER ONE",
pillowCount : 10,
],
paid : [
applicationId: config.baseId,
majorKey : "A JETSKI",
anotherOne : "ANOTHER ONE",
pillowCount : 100000000,
]
]
}
少なくとも、これによりファイルの外でフレーバーを定義できるためbuild.gradle
、ふるいにかけなければならないクラフトの量を最小限に抑えることができます。さらに、主要なキーは、build.gradle
ファイルの改訂履歴をきれいに保ちます。
HTH、グッドラック!