com.android.supportのバージョンの競合に対する解決策
com.android.supportライブラリは、すべて全く同じバージョン指定でなければなりません(バージョンが混在するとランタイムクラッシュが発生する可能性があります
アンドロイドスタジオでサードパーティの依存関係を追加すると、上記のようなエラーが表示されることがあるようです。
一般的にはcom.android.supportパッケージのバージョン番号は統一されているはずですが、もしかしたら自分たちの新しいプロジェクトのcom.android.supportパッケージのバージョン番号が高く、com.android.supportの一部の第三者ライブラリはサポートライブラリの更新が間に合わず、このエラーが発生する可能性があります 一部の第三者ライブラリのサポートライブラリの更新が間にあわず、このエラーは発生する可能性があります。
回避策 (他の依存関係の競合も同様です。)
- 依存するライブラリのバージョン番号に合わせて、自分たちのプロジェクトの com.android.support のバージョン番号を変更する。ただし、依存するライブラリが com.android.support の複数のバージョンを持っている場合は、変更しない。 (推奨しません)
- サードパーティのライブラリに依存する場合、com.android.supportパッケージへの依存を除外することで、プロジェクトは好きなバージョンに依存できるようになりますが、この方法では、どのライブラリが競合しているかを最初に見つける必要があります。
- groovyスクリプトを使用して、競合する依存関係のバージョン番号を強制的に変更します。 (推奨)
- AndroidXへのプロジェクト移行(推奨)
排他的依存関係解消法
まず、2番目の方法について見てみましょう。
まず、どの在庫が競合しているかを知る必要があります。
ターミナルをクリックし、次のように入力します。
gradlew -q app:dependencies
入力すると、アプリに依存するライブラリが表示されます
ここでは、arouter の依存関係の 1 つにバージョン番号の不一致があることがわかるので、競合する依存関係を除外する必要があります。
exclude group: com.android.supportを含むものを除外するという意味です。
apiはandroid studio 3.0の新しい依存関係です、もしあなたがそれについてよく知らないなら、この記事を読んでください。
Android Studio 3.0の新しい依存関係
例
api("com.afollestad.material-dialogs:core:0.9.5.0") {
exclude group: 'com.android.support'
}
module: exclude グループから指定されたモジュールを削除します。
例
api("com.afollestad.material-dialogs:core:0.9.5.0") {
exclude group: 'com.android.support', module: 'support-v13'
exclude group: 'com.android.support', module: 'support-vector-drawable'
}
もう一つの提案は、他の人が使うために自分自身のライブラリを作成するとき、com.android.supportに依存する必要がある場合です。 提供されている依存関係を使用することをお勧めします (android studio 3.0 で compileOnly に変更されました) これはコンパイル時にのみ機能し、パッケージングには参加しません。ユーザーの不便を避けるためです。
例
provided 'com.android.support:appcompat-v7:26.1.0'
provided 'com.android.support:design:26.1.0'
provided 'com.android.support:support-vector-drawable:26.1.0'
Grovvyスクリプトによるバージョン番号変更でコンフリクト解消
が存在する場合、そのMODの build.gradle このファイルは、すべての依存関係を繰り返し、指定されたライブラリのバージョン番号を変更することによって動作します。
ここで
requested.group == 'com.android.support'
com.android.supportは、変更する依存ライブラリを示す
details.useVersion '28.0.0'
28.0.0は修正するバージョン番号です。
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
def requested = details.requested
if (requested.group == 'com.android.support') {
if (!requested.name.startsWith("multidex")) {
details.useVersion '28.0.0'
}
}
}
}
そして、リビルドするだけです。
AndroidXへのプロジェクト移行(推奨)
4つ目の方法は、プロジェクトをAndroidXに移行することで、バージョン番号を気にする必要がなくなるというものです。そして、今後のトレンドは間違いなくAndroidXに向かっています。
移行方法は、公式ドキュメントを見るだけで、簡単にできます。
AndroidXへの移行について
この記事があなたのために役立つと思う場合は、この記事の認識として、指を移動してください、テキストに誤りがある場合は、修正してください、から転送を示すために再現されます。 Yu Zhiqiangのブログ ありがとうございました。
関連
-
警告: 構成 'compile' は廃止され、'implementation' と 'api' に置き換わりました。
-
Error:タスク ':app:compileDebugJavaWithJavac' の実行に失敗しました。解決方法
-
Android リソースのリンクに失敗する、解決方法
-
ライブ画面録画のAndroid実装 (a) ScreenRecorderの簡易解析
-
Android ListViewでaddHeaderを使用する
-
Androidのレイアウトにおけるmarginとpaddingの違いについて
-
アンドロイドプログレスバー自定义
-
アンドロイドアンダーライン(図形入り
-
android.content.res.Resources$NotFoundException: 文字列リソースID #0x1
-
android.content.res.Resources$NotFoundException: 文字列リソースID #0x1 Sinkhole!
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
アンドロイド アルメアビ アルメアビ-v7a
-
AndroidStudioのコンパイル時のエラーを解決します。構成 ':classpath' のすべてのアーティファクトを解決できませんでした。
-
Android Studioで「Error:SSL peer shut down incorrectly」というエラーが表示される。
-
Androidにおける縦の点線
-
no target device found 問題が解決した
-
アンドロイドについて:DescendantFocusability いくつかの使用感
-
AndroidManifestのuses-permissionの設定
-
android.view.inflateexception バイナリ xml ファイル行例外の解決方法
-
Android AVDで "このターゲットにはシステムイメージがインストールされていません "と表示される
-
java.util.Iterator java.util.List.iterator()' で null オブジェクト参照例外が発生した場合の解決策を紹介します。