私が次のものを持っているとしましょうsourceSets
:
sourceSets {
flavor1 {
assets.srcDirs = ['repo-assets/flavor1']
res.srcDirs = ['repo-res/flavor1']
}
flavor2 {
assets.srcDirs = ['repo-assets/flavor2']
res.srcDirs = ['repo-res/flavor2']
}
flavor3 {
assets.srcDirs = ['repo-assets/flavor1']
res.srcDirs = ['repo-res/flavor1']
}
flavor4 {
assets.srcDirs = ['repo-assets/flavor2']
res.srcDirs = ['repo-res/flavor2']
}
}
あなたが気づいて同じsrcDirsを持っているなら、そしてflavor1
そうです。flavor3
flavor2
flavor4
可能性を試す#1
次のようなものを使用して冗長性を回避する方法があるかどうかを調べようとしていました。
sourceSets {
flavor1, flavor3 {
assets.srcDirs = ['repo-assets/flavor1']
res.srcDirs = ['repo-res/flavor1']
}
flavor2, flavor4 {
assets.srcDirs = ['repo-assets/flavor2']
res.srcDirs = ['repo-res/flavor2']
}
}
上記は機能しません(すでに試しました)。sourceDirs
一連のフレーバーに共通のセットを提供できるように、似たようなものを探しています。誰かが似たようなことを試してみて、いくつかの指針を提供できますか?
可能性を試す#2
の名前はフレーバーの名前sourceSets
と同じである必要がありますか?
sourceSets
個別に名前を付けて、productFlavors
このようにマッピングできますか?
productFlavors {
flavor1 {
sourceset = "src1"
}
flavor2 {
sourceset = "src2"
}
flavor3 {
sourceset = "src1"
}
flavor4 {
sourceset = "src2"
}
}
sourceSets {
src1 {
}
src2 {
}
}
可能性を試す#3
同じことを達成するために、どうにかしてタスクを介してソースセットを動的に割り当てることはできますか?
アップデート
ダグラスの答えは、最終的に探していたものに非常に近づくのに役立ちました(build.gradleのコードを減らします)。彼は上記の可能性 #3 を使用しました。ありがとうダグラス!賞金稼ぎからのより良い代替手段は引き続き歓迎されます (上記の可能性 #1 と #2 に近いもの)。何も起こらない場合、私が彼の答えを受け入れたので、賞金は期間が終了したときにすでにダグラスのものです. しかし、より良い代替案を見つけることについては楽観的です。