Android 앱이 있는 Android Studio 2.2 Preview 1 및 Google 메시징이있는 백엔드 모듈 에서 새 프로젝트를 만들었습니다 . 이것은 앱 파일입니다.
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.3"
defaultConfig {
applicationId "com.xxx.xxx"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha1'
compile 'com.google.android.gms:play-services-gcm:9.0.0'
testCompile 'junit:junit:4.12'
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2'
androidTestCompile 'com.android.support.test:runner:0.5'
androidTestCompile 'com.android.support:support-annotations:23.4.0'
compile project(path: ':backend', configuration: 'android-endpoints')
}
그러나 그것은주고있다 :
오류 : 종속성 ‘com.google.code.findbugs : jsr305’와 충돌합니다. 앱 (1.3.9) 및 테스트 앱 (2.0.1)의 해결 된 버전이 다릅니다. 자세한 내용은 http://g.co/androidstudio/app-test-app-conflict 를 참조하십시오.
Android를 처음 사용하고 있으며이 오류가 무엇인지 찾을 수 없습니다. 어떻게 고치나요?
답변
앱에서 build.gradle
다음을 추가하십시오.
android {
configurations.all {
resolutionStrategy.force 'com.google.code.findbugs:jsr305:1.3.9'
}
}
Gradle은 종속성이 지정한 버전 번호에 관계없이 모든 종속성에 대해 지정한 버전 번호 만 컴파일하도록합니다.
답변
에스프레소 때문입니다. build.grade
이를 완화하기 위해 앱 에 다음을 추가 할 수 있습니다 .
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2') {
exclude group: 'com.google.code.findbugs'
}
답변
방법 1 : 새 프로젝트에 자동으로 포함 된 espresso-core 라인에서 androidTestCompile을 삭제했습니다. 그런 다음 내 Android Studio가 깨끗하게 컴파일됩니다.
androidTestCompile은 “build.gradle (모듈 : app)”에 있습니다.
dependencies {
...
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
...
}
이 삭제로 인해 문제가 발생하는지 여부는 알 수 없지만 현재 프로젝트에서 작동합니다.
방법 2 : findbugs에 제외를 추가해도 작동합니다.
dependencies {
...
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
exclude group: 'com.google.code.findbugs'
})
...
}
방법 3 : 특정 버전으로 강제 컴파일 :
(다음에서는 강제로 상위 버전으로 컴파일합니다.)
dependencies {
...
androidTestCompile 'com.google.code.findbugs:jsr305:3.0.0'
...
}
답변
에서 Gradle을 플러그인 사용자 안내서 :
계측 테스트가 실행될 때 기본 APK와 테스트 APK 모두 동일한 클래스 경로를 공유합니다. 기본 APK와 테스트 APK가 동일한 라이브러리 (예 : 구아바)를 사용하지만 버전이 다른 경우 Gradle 빌드가 실패합니다. gradle이이를 발견하지 못하면 테스트 및 정상 실행 (앱 중 하나의 충돌 포함) 중에 앱이 다르게 작동 할 수 있습니다.
빌드가 성공하려면 두 APK가 동일한 버전을 사용해야합니다. 오류가 간접 종속성 (build.gradle에서 언급하지 않은 라이브러리)에 관한 것이라면 최신 버전에 대한 종속성을 구성에 추가하십시오.
이 라인을 build.gradle 종속성에 추가 하여 두 APK 모두에 최신 버전을 사용 하십시오 .
compile('com.google.code.findbugs:jsr305:2.0.1')
나중에 참조 할 수 있도록 Gradle 콘솔을 확인할 수 있으며 오류 옆에 유용한 링크를 제공하여 모든 gradle 빌드 오류에 도움이됩니다.
답변
이것이 발생하는 이유는 diff 종속성이 동일한 lib의 diff 버전을 사용하기 때문입니다.
따라서이 문제를 해결하려면 3 단계 또는 1 단계가 있습니다.
1 일
더하다
configurations.all {
resolutionStrategy.force 'com.google.code.findbugs:jsr305:2.0.1'
}
당신에 build.gradle
있는 파일android {...}
2 위
안드로이드 스튜디오
실행 ./gradlew -q app:dependencies
명령 에서 터미널을 엽니 다 .
3 위
목록 Clean Project
에서 안드로이드 스튜디오의 메뉴 바에서 클릭하십시오 Build
.
프로젝트를 다시 빌드 한 다음
remove
1 단계에서 코딩합니다.
어쩌면 2 단계 만 실행하면됩니다. 오류가 발생하면 롤백 할 수 없습니다. 시도해보십시오.
답변
내가 추가 할 때 module: 'jsr305'
문을 제외 추가로, 모두 나를 위해 잘 운동했다.
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
exclude module: 'jsr305'
})
답변
로그에 명시된 바와 같이 문제는 두 가지 종속성이 다른 버전의 세 번째 종속성을 사용하려고한다는 것입니다. app-gradle 파일에 다음 중 하나를 추가하십시오.
androidTestCompile 'com.google.code.findbugs:jsr305:2.0.1'
androidTestCompile 'com.google.code.findbugs:jsr305:1.3.9'