私はアンドロイドライブラリを開発します。ライブラリはappcompat-v7
に依存しています。私の消費者もappcompat-v7
に依存しています。 Mavenリポジトリに公開するときに、ライブラリとの依存関係を正しく表示する方法を教えてください。android-gradle 3を使用してAndroidライブラリのサポートライブラリの依存関係を公開する正しい方法は何ですか?
私は依存関係が 範囲「ランタイム」と記載されていることになりPOMファイルを公開するandroid-maven-publishを使用してライブラリー
implementation
依存関係としてappcompat-v7
依存関係をリスト今
- やっています
この設定では、ライブラリのバージョン設定がコンシューマに流出します。ここでは、ライブラリのバージョンが使用されv27.0.0および消費者は、26.1.0に設定されている消費者のプロジェクトビューからのスクリーンショットさ:
v27.0.0は、コンパイラを引き起こし、v26.1.0上presedenceを取りますエラー(フラグメントシグネチャが変更されたため)。
これを避ける方法はありますか?はになりますか?私は間違ってappcompat libの異なるバージョンがライブラリと消費アプリで許可されるべきであると仮定していますか?代わりに、複数のバイナリを公開する必要があります。複数のバイナリは、それぞれのコンシューマ設定を満たすためにサポートライブラリの異なるバージョンに対してコンパイルされますか?
私は、同じパッケージと名前で複数のクラスを持つことができないことに気づいています。私の考えは、クライアントが自分のバージョンだけを使用していたということでした。それはおそらくResolutionStrategyで解決できますか?とにかく、ライブラリの設定が正しいことを意味しますか?https://docs.gradle.org/current/dsl/org.gradle.api.artifacts.ResolutionStrategy.html – Nilzor
いいえ、残念ながら、Gradleにライブラリの要件をそのバージョンで満たすように指示することはできません(少なくとも私はどのようにわかりませんか)。Gradleはまずあなたのライブラリを探し、ライブラリの要件を満たし、後で同じライブラリの複数のバージョンを持ち、最新バージョンを使用していることがわかります。 – JoseF