0

メイン プロジェクト A (APK) は、サブ プロジェクト B (AAR) に依存します。A と B の両方が C (AAR) に依存しています。問題は C が 2 回含まれていることです。

"values.xml:XXX: エラー: 属性 "YYY" は既に定義されています"

最終的な 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 を含みます。

4

2 に答える 2

0

あなたが提供したサンプルから判断するのは難しいですが、「C」が 2 回定義されているように思えます: A/libs で 1 回、B/libs で 1 回です。このため、バックはそれが「同じもの」であることを理解していません。あなたがすべきことは、「C」を A と B の両方が参照できる場所に置くことです (「A」と「B」のピアである「サードパーティ」フォルダを持つことはかなり一般的です)。グラフに依存関係のひし形があることを確認し、それを正しく解決できます。

于 2016-05-16T08:52:23.900 に答える
0

サブプロジェクト B で作業しているときに、メイン プロジェクト A から依存関係 C を削除することになりました。
このようにして、A はサブプロジェクト B を介して推移的な依存関係として C を取得し、C が 2 回含まれるのを防ぎます。

于 2016-05-07T19:20:55.783 に答える