プロジェクト ':app'の依存関係 'com.android.support:support-annotations'と競合しています。アプリ(26.1.0)とテストアプリ(27.1.1)の解決済みバージョンは異なります。


106

Androidアプリ開発は初めてです。新しいプロジェクト、Android Projectを作成しようとすると、次のメッセージがポップアップ表示されました。

エラー:タスク ':app:preDebugAndroidTestBuild'の実行に失敗しました。

プロジェクト ':app'の依存関係 'com.android.support:support-annotations'と競合しています。アプリ(26.1.0)とテストアプリ(27.1.1)の解決済みバージョンは異なります。詳細については、https://d.android.com/r/tools/test-apk-dependency-conflicts.htmlを参照してください。情報:Gradleタスク[:app:generateDebugSources、:app:generateDebugAndroidTestSources、:app:mockableAndroidJar]

これは私のプロジェクトのスクリーンショットです。 ここをクリックして、取得したエラーのスクリーンショットを表示してください

このコードを依存関係に追加してみました。androidTestCompile 'com.android.support:support-annotations:23.3.0'これはうまくいきませんでした。私も27.1.1と26.1.0 ..を試しましたが、どちらもうまくいきませんでした。


この質問を確認してください:stackoverflow.com/q/43817004/9611523。それがお役に立てば幸いです。

1
Android Studio(およびその後のエミュレーターなど)を更新すると、この問題は解決しました。

この問題は、Android Studioの新しいプロジェクトの作成ではデフォルトで提供されないアノテーショングラドルが原因です。このヘルプあなたかもしれません:readyandroid.wordpress.com/...
レディAndroidの

回答:


182

あなたのスクリーンショットに基づいて、私は2つの実用的な解決策を見つけました:

最初の解決策:この行をgradleモジュールの依存関係に追加してください

compile 'com.android.support:support-annotations:27.1.1'

プロジェクトを同期します

注: Android Studio 3以降を使用している場合はcompileimplementation

2番目の解決策:ドキュメントhttps://developer.android.com/studio/build/gradle-tips.html#configure-project-wide-propertiesにあるプロジェクト全体のプロパティを設定します

プロジェクトgradleにこの行を追加します:

// This block encapsulates custom properties and makes them available to all
// modules in the project.
ext {
    // The following are only a few examples of the types of properties you can define.
    compileSdkVersion = 26
    // You can also use this to specify versions for dependencies. Having consistent
    // versions between modules can avoid behavior conflicts.
    supportLibVersion = "27.1.1"
}

次に、このセクションにアクセスするには、compileSdkVersion行を次のように変更します。

compileSdkVersion rootProject.ext.compileSdkVersion

そして、で、dependenciesセクション、このようになり、インポートライブラリを変更します。

compile "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}"

プロジェクトを同期します

注: Android Studio 3以降を使用している場合はcompileimplementation

違いcompileimplementationこれを見てください 実装とgradleでのコンパイルの違いは何ですか


4
コンパイルの代わりに「実装」を使用することをお勧めします
SanVed

60

依存関係ブロックの前にapp.gradleファイルに以下の行を追加します。

configurations.all {
    resolutionStrategy {
        force 'com.android.support:support-annotations:26.1.0'
    }
}

理解を深めるために、以下のスクリーンショットもあります。

Configurations.allブロック

  1. 設定.allブロックは、ターゲットSDKを26にしたい場合にのみ役立ちます。27に変更できる場合、app.gradleファイルに設定ブロックを追加しなくてもエラーは発生しません。

  2. app.gradleファイルからすべてのテスト実装を削除するとエラーが解決し、構成ブロックを追加する必要も、targetsdkバージョンを変更する必要もないもう1つの方法があります。

お役に立てば幸いです。


ありがとう、時間を節約してください
Manikandan K

1
@ManikandanK喜んでお手伝いします!
Harsh Jain、

完全な指示を与えてくれたことを称賛してください!(この種の主題に関する多くの答えは、「これを追加: "force 'com.android.support:support-annotations:26.1.0'"」のように、ほとんど/まったくコンテキストがありません!(残念ながら、私はまだ同じことをしていますビルドエラー、私の場合「com.android.support:support-annotations:27.0.0が見つかりませんでした。要求者:trainingiq:bugsnag-react-native:unspecified> com.bugsnag:bugsnag-android:4.3.1」
ドロンツ2018年

35

バージョン26を使用する場合、内部依存関係のバージョンは1.0.1および3.0.1、つまり次のようになります。

  androidTestImplementation 'com.android.support.test:runner:1.0.1'
  androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'

バージョン27を使用する場合、内部依存関係のバージョンは1.0.2および3.0.2、つまり次のようになります。

  androidTestImplementation 'com.android.support.test:runner:1.0.2'
  androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

2
神はあなたを祝福します、地獄で腐敗するアンドロイドサポートライブラリのバージョンアップがあります!
ムハンマドナデリ

Android Studioウィザードは、エラーなしでゼロからプロジェクトを作成しますか?¬¬
セバスチャンBreit

何についての28
alizulfuqar

27

Android Studio 3.1。以降を使用している場合

これをあなたのgradle depedenciesに入れてください:

implementation 'com.android.support:support-annotations:27.1.1'

全体的にこのように:

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

    implementation 'com.android.support:support-annotations:27.1.1'
}

ありがとうbuddy.Lots of love
amilab

23

これはバージョンの競合によるものです。解決するには、サポートアノテーションバージョンを強制的に更新し、モジュールに次の行を追加してください:app gradle

implementation ('com.android.support:support-annotations:27.1.1')

これで問題が解決することを願っています;)

編集する

ほとんど忘れて、バージョンの単一の追加プロパティ(https://docs.gradle.org/current/userguide/writing_build_scripts.html#sec:extra_properties)を宣言し、プロジェクト(または最上位)のgradleファイルに移動して、サポートを宣言するか、この例では注釈バージョンvarを宣言します

ext.annotation_version = "27.1.1"

次に、モジュールgradleでそれを次のものに置き換えます:

implementation ("com.android.support:support-annotations:$annotation_version")

これは@emadabelソリューションと非常によく似ています。これは、ブロックやrootprojectプレフィックスを使用しない代わりに@emadabelソリューションを使用することをお勧めします。


1
上記の解決策が私を助けてくれた
desgraciに感謝し

この行を追加した後、エラー「タスク:: app:processDebugManifestのエラー:実行に失敗しました。>マニフェストのマージが複数のエラーで失敗しました。ログを参照してください」で解決方法を教えてください
Basant

@Basantこれはあなたのgradleを実行する問題なので、どちらが問題であるかを確認する必要があります。これについて質問を開くことをお
勧め

@desgraciの返信が遅くなってすみません、IDEをアップグレードすることでこの問題を解決できました
Basant

@ベイサントはそれを聞いてうれしい!
desgraci


7

心配しないでくださいそれは簡単です:

「Project」ディレクトリ構造に移動し、「Gradle Scripts」に移動し、その中から「build.gradle(Module:app)」に移動してダブルクリックします。

今-プログラムを下にスクロールして、依存関係セクションに移動します:以下のように


依存関係{

implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

}


これで、最後の2行のコードを削除してアプリを再構築すると、機能します

依存関係は次のとおりです。


依存関係{

implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.2'
testImplementation 'junit:junit:4.12'

}


アプリを再構築して動作します!!


何を削除/追加したか説明していません。ここでテストライブラリが必要な場合はどうなりますか?
TheRealChx101 2018年

3

プロジェクトのbuild.gradle(Module App)に移動します。

ここに画像の説明を入力してください

写真に従って、それらのバージョンを変更してください:

compileSdkVersion: 27
targetSdkVersion: 27

Android Studioバージョン2の場合:次の行で行を変更します。

compile 'com.android.support:appcompat-v7:27.1.1'

そうでなければ、次の行で行を変更します。

implementation 'com.android.support:appcompat-v7:27.1.1'

うまくいけば、あなたはあなたのバグを解決するでしょう。


2

これをgradleファイルに追加してください。

implementation 'com.android.support:support-annotations:27.1.1'

1

この問題を解決するもう1つの簡単な方法は、build.gradle(アプリ)を編集することです。

  1. 移動しandroid、タグや変更compileSdkVersion 26compileSdkVersion 27
  2. 移動しdefaultConfig、タグや変更targetSdkVersion 26targetSdkVersion 27
  3. dependenciesタグを付けて変更implementation 'com.android.support:appcompat-v7:26.1.0'するimplementation 'com.android.support:appcompat-v7:27.1.1'

1

同じ問題がありますが、build.gradle(Module:app)で、依存関係内に次のコード行を追加します。

dependencies 
{
   ...
   compile 'com.android.support:support-annotations:27.1.1'
}

それは私のために完全に働いた


1

重要な更新

プロジェクトレベルのbuild.gradleに移動し、グローバル変数を定義します

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    ext.kotlinVersion = '1.2.61'

    ext.global_minSdkVersion = 16
    ext.global_targetSdkVersion = 28
    ext.global_buildToolsVersion = '28.0.1'
    ext.global_supportLibVersion = '27.1.1'
}

アプリレベルのbuild.gradleに移動し、グローバル変数を使用する

アプリbuild.gradle

android {
    compileSdkVersion global_targetSdkVersion
    buildToolsVersion global_buildToolsVersion
    defaultConfig {
        minSdkVersion global_minSdkVersion
        targetSdkVersion global_targetSdkVersion
}
...

dependencies {
    implementation "com.android.support:appcompat-v7:$global_supportLibVersion"
    implementation "com.android.support:recyclerview-v7:$global_supportLibVersion"
    // and so on...
}

一部のライブラリbuild.gradle

android {
    compileSdkVersion global_targetSdkVersion
    buildToolsVersion global_buildToolsVersion
    defaultConfig {
        minSdkVersion global_minSdkVersion
        targetSdkVersion global_targetSdkVersion
}
...

dependencies {
    implementation "com.android.support:appcompat-v7:$global_supportLibVersion"
    implementation "com.android.support:recyclerview-v7:$global_supportLibVersion"
    // and so on...
}

解決策は、バージョンをすべてのモジュールと同じにすることです。あなたが対立しないように。

重要なヒント

すべてのバージョン(gradle、sdks、libraryなど)を更新すると、エラーが少なくなると感じました。開発者はAndroid Studioでの開発を容易にするために懸命に取り組んでいるためです。

常に最新だが安定したバージョンがある不安定なバージョンはalphabetaあり、rc、、開発中にそれらを無視する。

私は自分のプロジェクトで以下のすべてを更新しましたが、これらのエラーにもう直面していません。

幸せなコーディング!:)


0

ターゲットSDKのバージョンを変更しても問題が解決しない場合は、バージョンとの依存関係がある場合3.0.2はに変更し3.0.1ます。

例えば変更

androidTestImplementation 'com.android.support.test.espresso:espresso-contrib:3.0.2'

androidTestImplementation 'com.android.support.test.espresso:espresso-contrib:3.0.1'

0

より良い解決策は公式説明で説明されています。私は以前に与えた答えを水平線の下に残しました。

そこでの解決策によると:

外部タグを使用して、以下のコードをトップレベルのbuild.gradleファイルに書き留めます。バージョンを静的バージョン番号ではなく変数に変更します。

ext {
    compileSdkVersion = 26
    supportLibVersion = "27.1.1"
}

アプリレベルのbuild.gradleファイルの静的バージョン番号を変更します(Module: app)

android {
    compileSdkVersion rootProject.ext.compileSdkVersion // It was 26 for example
    // the below lines will stay
}

// here there are some other stuff maybe

dependencies {
    implementation "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}"
    // the below lines will stay
}

プロジェクトを同期すると、エラーは発生しません。


Gradleスクリプトに何も追加する必要はありません。必要なSDKをインストールすると、問題が解決します。

あなたのケースでは、Preferences> Android SDKまたはTools> Android> SDK Managerから以下のライブラリをインストールしてください

ここに画像の説明を入力してください


0

この行をgradleファイルの依存関係の下に追加します

compile 'com.android.support:support-annotations:27.1.1'
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.