現在、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に依存する必要がありますか?
少し時間がかかりましたが、探していたものが見つかりました。それはたまたま私が検索に言葉を使っていた方法でした。
このあまり見えない答えはまさに私が探していたものでした:
gradleを使用してaarライブラリで解決されない推移的な依存関係
本質的に、私は追加する必要がありました
transitive = true
... build.gradle
バー
例:
compile ('com.foo:FOO:1.0.0@aar'){
transitive=true
}
このようにして、すべての推移的なライブラリが含まれます。
ただし、これは実際に依存関係(特にローカル依存関係)間の競合を引き起こす可能性があり、exclude
タグを使用して解決できることに注意してください。