2016-05-03 3 views
0

メインプロジェクトA(APK)は、サブプロジェクトB(AAR)に依存します。 AとBはどちらもC(AAR)に依存します。問題はCが2回含まれているために発生します。Buck:推移的従属

"values.xml:XXX: error: Attribute "YYY" has already been defined"

最終的なAPKから過渡依存性Cを除外するにはどうすればよいですか?

プロジェクトA:

android_binary (
    deps = [  
    ':src', 
    ], ... 
) 

android_library(
    name = 'src', 
    deps = [ 
    ':C', 
    '//B:src',  
    '//B:res', 
    ], ... 
} 

android_resource(
    name = 'res', 
    res = 'src/main/res', ... 
} 

サブプロジェクトB

android_aar (
    deps = [ 
    ':src', 
    ':res' 
    ], ... 
) 

android_library(
    name = 'src', 
    deps = [ 
    ':res', 
    ':C' 
    ], ... 
) 

android_resource(
    name = 'res', 
    deps = [ 
    ':C' 
    ], ... 
) 

C "はAPPCOMPAT-v7.aar" です。
注:Aには "A/libs"のCが含まれ、Bには "B/libs"にはCが含まれています。

答えて

0

サブプロジェクトBで作業中に、メインプロジェクトAから依存関係Cを削除しました。
この方法では、サブプロジェクトBを推移依存としてCにして、Cを2回インクルードしません。

0

あなたが提供したサンプルからは分かりませんが、AとBの両方に1回、B/Libに1回、「C」が2回定義されているようです。このバックのために、それは "同じこと"を理解していません。あなたがすべきことは、AとBの両方がそれを参照できる場所に「C」を置くことです(「A」と「B」がかなり一般的な「第三者」フォルダを持っています)。グラフに依存性のあるダイヤモンドがあることを確認して、それを正しく解決することができます。