1

私のアプリにはFacebookTwitterの依存関係が追加されているとします。Gradleは、グラデーションツリー内の同じライブラリの2つ以上のバージョンをどのように選択しますか?

com.facebook.android:facebook-android-sdk:4.22.1

com.twitter.sdk.android:twitter:2.1.0

私はGradleの木を見て、彼らは他の過渡的な依存関係を思いついた。今

Facebookはcom.android.support:support-annotations:24.1.1を使用し、ツイッターをGradleのが使用するどのバージョンその後com.android.support:support-annotations:25.0.3

を使用している場合。

gradleツリーでは、従属バージョンの前に->が表示されます。私は、これはgradleが新しいバージョンを使用し、古いバージョンを使用しないことを意味することを学びました。

しかし、いくつかのライブラリは特定のバージョンで実行されるため、この問題に直面しています。

articleのうちの1つで、npmがこれらの依存関係の競合をどのように管理しているのか分かりましたが、同じライブラリの異なるバージョン間でどのようにgradleが管理されるかはまだ分かりません。

答えて

2

同じライブラリの異なるバージョンをapk内に持つことはできません。

デフォルトでは、Gradleは最新のビルドをビルドに置きます。プロジェクトで使用する具体的なバージョンのライブラリを指定する場合は、必要なバージョンのcompile(またはAndroid Gradle Plugin v3 +の場合はimplementation/api)ステートメントを直接追加することができます。

また、特殊な構文を使用してバージョンを強制することもできますが、後で問題が発生する可能性があります。バージョンの競合の解決方法の詳細については、this post

関連する問題