一、背景:
私たちは、ソース時間に依存している場合は、多くの場合、問題を引き起こします。
私たちの主なプロジェクトは、それが地元のエンジニアリングサンプルに以下の構成依存しています
flavorDimensions "デモ"
productFlavors {
flavor1 {
寸法'デモ'
}
flavor2 {
寸法'デモ'
}
}
依存関係{
プロジェクトコンパイル( ':試料を' ) }
私たちは、次のようにローカルプロジェクトの設定がされた試料
flavorDimensions "DEMO2"
productFlavors {
flavor3 {
寸法'DEMO2'
}
flavo4 {
寸法'DEMO2'
}
}
あなたがコードをアセンブルするために行くときに、この時、次のエラーを報告しましたでしょう
> サンプル:プロジェクトを解決できませんでした。
:によって必要な
プロジェクト:アプリ
>プロジェクトの次の構成のいずれかを選択することはできません:サンプル:
ここでの問題は、私たちがメインモジュールを判断することはできません、我々は味のサンプルの味のメインモジュールに対応する必要があるということです。だから、どのように我々はこの問題を解決する必要があるでしょうか?
第二に、ソリューション
次Gradle3.0
これによって、私たちは地元のエンジニアリングを参照してください。
依存関係{
APIプロジェクト(パス: ':サンプル'、設定: "デフォルト")
}
サンプル構成ながら、
defaultPublishConfig "flavor3 リリース"
しかし、そう書かれて、あなたは、伝送の問題(何の実装とAPIが存在しない場合は、コンパイルのみ)に依存しているローカルプロジェクトの使用に頼ることができない、非常に素晴らしい質問があります。
しかし、最終的に一緒にプロジェクトをコンパイルすることができます。
Gradle3.0より
上記gradle3.0では、Googleが私たちのために、依存関係の管理機構バリアントの知覚を提供します。実際には、これは、上記を強制のようになり、より高度なことは間違いありません。
flavorDimensions " デモ" flavorDimensions "DEMO2" productFlavors {productFlavors { flavor1 {flavor3 { 寸法' デモ'寸法'DEMO2' }} flavor2 {flavor4 { 寸法' デモ'寸法'DEMO2' }} } } 依存関係{ (プロジェクトをコンパイル' :試料' ) }
アプリのサンプル
私たちは、モジュールの二つは、flavorDimensionsとその内容がproductFlavorsには同じではありません、そして、どのように我々はそれを適応させる必要があります見ることができますか?
missingDimensionStrategyとmatchingFallbacksを使用します
アプリのモジュールは、サンプルと同じように、それは自動的にあなたが試合をGradleの助けになる、ということであれば。これは、同じ味の試合です。
flavorDimensions " DEMO2 " productFlavors { flavor3 { 寸法' DEMO2 ' } flavo4 { 寸法' DEMO2 ' } }
あなたはこのようappmodule場合は、一貫性がなく、一貫性のある風味をflavorDimension。そして、あなたはmissingDimensionStrategy 'DEMO2'、 'flavor3'、 'flavor4' を使用する必要があります
flavoorDimensions "デモ"
productFlavors { flavor3 { 次元' デモ'
missingDimensionStrategy 'DEMO2'、 'flavor3'
} Flavo4 { 寸法「デモ」
missingDimensionStrategy「DEMO2」は、最初のパラメータ「flavor4」が検体flavordimensions内部に、後者は、連続的な風味内部に充填することができるされています
}
}
あなたはこのようappmodule場合は、一貫性があり、一貫性のない風味をflavorDimension。次に、あなたが使用する必要があります matchingFallbacksを
flavorDimensions " DEMO2 " productFlavors { flavor1 { 寸法' DEMO2 '
matchingFallbacks = [ 'flavor3'] } flavo2 { 寸法' DEMO2 '
matchingFallbacks = [ 'flavor4']
} }
あなたがしようとするためにあなたが私たちの上にその方法を満たしている場合、それが自然の両方を使用する必要があり、これはそれを残して。
何人かの友人は、これはその後、何が起こるかであること、ない味ああ、私のアプリはどのように行うようにすることを、尋ねましたか??自然はflavorDimensionsと味が同じではないです、そして我々はただdefaultConfigに追加することができます
missingDimensionStrategy ' DEMO2 '、' flavor3 '、' flavor4 '