프로젝트 ': 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 새 프로젝트 생성에서 기본적으로 제공되지 않는 주석 gradle로 인해 발생합니다. 도움이 될 수 있습니다 : readyandroid.wordpress.com/…
Ready Android

답변:


182

스크린 샷을 기반으로 두 가지 작동하는 솔루션을 찾았습니다.

첫 번째 솔루션 :이 줄에 gradle 모듈의 종속성에 추가

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

프로젝트 동기화

참고 : Android 스튜디오 3 이상을 사용 compile하는 경우implementation

두 번째 솔루션 : 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 스튜디오 3 이상을 사용 compile하는 경우implementation

간의 차이 compileimplementation이 봐 Gradle을의 구현 및 컴파일의 차이점은 무엇입니까


4
컴파일 대신 '구현'을 사용하는 것이 좋습니다
SanVed

60

depencencies 블록 앞에 app.gradle 파일에 아래 행을 추가하십시오.

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

더 나은 이해를 위해 아래 스크린 샷도 있습니다.

Configurations.all 블록

  1. configuration.all 블록은 대상 sdk를 26으로 설정하려는 경우에만 유용합니다. 27로 변경할 수 있으면 app.gradle 파일에 구성 블록을 추가하지 않고도 오류가 사라집니다.

  2. app.gradle 파일에서 모든 테스트 구현을 제거하면 오류가 해결되고 여기에서 구성 블록을 추가 할 필요가 없으며 targetsdk 버전을 변경할 필요도 없습니다.

도움이 되었기를 바랍니다.


감사합니다. 시간을 절약하세요
Manikandan K

1
@ManikandanK 도와 드리겠습니다!
Harsh Jain

완전한 지침을 주신 당신을 칭찬하십시오! (이런 종류의 주제에 대한 많은 답변은 "Add this :"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"
Dronz

35

버전 26 을 사용하는 경우 내부 종속성 버전은 1.0.13.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.23.0.2 여야 합니다.

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

2
신의 축복이 있기를, 안드로이드 지원 라이브러리가 지옥에서 썩어지기를 바랍니다!
Muhammad Naderi

그렇다면 Android 스튜디오 마법사는 오류가있는 프로젝트를 처음부터 생성합니까? ¬¬
Sebastian Breit

무엇에 대한 28 ?
alizulfuqar 2010 년

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'
}

고마워 친구. 많은 사랑
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접두사 가없는 좋은 대안입니다 .



이 줄을 추가 한 후 "Error : Execution failed for task ': app : processDebugManifest'.> Manifest merger failed with multiple errors, see logs"오류가 발생합니다. 어떻게 해결할 수 있는지 도와주세요
Basant

@Basant Gradle을 실행하는 데 문제가 있기 때문에 문제가 무엇인지 확인해야합니다. 이에 대한 질문을 여는 것이 좋습니다
desgraci

@desgraci 늦게 답장을 보내 드려 죄송합니다. IDE를 업그레이드하여이 문제를 해결했습니다
Basant

@Basant 그 말을 듣고 기쁩니다!
desgraci

9

이것을 build.gradle (Module 앱)에 추가하면 나를 위해 일했습니다.
컴파일 'com.android.support:support-annotations:27.1.1'


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'

}


이제 마지막 두 줄의 코드를 삭제하고 앱을 다시 빌드하면 이제 작동합니다.

종속성은 다음과 같아야합니다.


종속성 {

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

3

프로젝트의 build.gradle (Module App)으로 이동합니다.

여기에 이미지 설명 입력

그림을 따라 해당 버전을 변경하십시오.

compileSdkVersion: 27
targetSdkVersion: 27

그리고 안드로이드 스튜디오 버전 2 : 다음 줄로 줄을 변경하십시오.

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

else 다음 줄로 줄을 변경하십시오.

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

그리고 바라건대 버그를 해결할 것입니다.


2

이것을 gradle 파일에 추가하십시오.

implementation 'com.android.support:support-annotations:27.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, sdk, 라이브러리 등의 모든 버전을 업데이트했을 때 오류가 덜 발생한다고 느꼈습니다. 개발자는 Android Studio에서 쉽게 개발할 수 있도록 열심히 노력하고 있기 때문입니다.

항상 최신이지만 안정적인 버전을 사용하십시오. 불안정한 버전은 alpha, betarc개발시 무시합니다.

내 프로젝트에서 아래의 모든 내용을 업데이트했으며 더 이상 이러한 오류가 발생하지 않습니다.

즐거운 코딩 되세요! :)


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를 설치하면 문제가 해결됩니다.

귀하의 경우 환경 설정> Android SDK 또는 도구> Android> SDK 관리자 에서 아래 라이브러리를 설치하십시오.

여기에 이미지 설명 입력


0

gradle 파일의 종속성 아래에이 줄을 추가하십시오.

compile 'com.android.support:support-annotations:27.1.1'
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.