web-dev-qa-db-ja.com

AARには推移的な依存関係を含めることができますか?

現在、OkHttpのようなライブラリに依存するプロジェクトFooのようなライブラリプロジェクトがあります。

現在、Fooには、AARを生成してそれを公共の場所にプッシュするMavenビルドステップがあります。

ここで、プロジェクトBがあるとしましょう。これをBarと呼びます。バーはAndroidアプリケーションであり、バーはFooに依存しています。

まあ、私はそれを持っています。ただし、OkHttpを呼び出すBarからFooのpublic static関数を呼び出すと、次のメッセージが表示されます。

Java.lang.NoClassDefFoundError: com.squareup.okhttp.OkUrlFactory
            at com.foo.sdk.utils.OkHttpStack.<init>(OkHttpStack.Java:15)

そのようなことは可能ですか?または、Fooが持っている他の依存関係と同様に、Barは手動でOkHttpに依存する必要がありますか?

60
VicVu

少し時間がかかりましたが、探していたものが見つかりました。それはたまたま私が検索に言葉を使っていた方法でした。

このあまり見えない答えはまさに私が探していたものでした:

gradleを使用してaarライブラリで解決されない推移的な依存関係

本質的に、私は追加する必要がありました

transitive = true

... build.gradleバー

例:

compile ('com.foo:FOO:1.0.0@aar'){
       transitive=true
}

このようにして、すべての推移的なライブラリが含まれます。

ただし、これは実際に依存関係(特にローカル依存関係)間の競合を引き起こす可能性があり、excludeタグを使用して解決できることに注意してください。

53
VicVu