답변은 늦었지만 Google (작은 따옴표)에게는 어려운 일이며 무슨 일이 일어나고 있는지 분명하지 않습니다. 아직 댓글을 달거나 범위를 요청 (또는 링크 3 개 게시) 할 평판이 없기 때문에이 답변은 약간 지루할 수 있습니다.
빠른 답변을 위해 프로젝트에 여러 Gradle 플러그인이있을 수 있습니다.
Gradle 래퍼 및 플러그인 동기화
내 문제는 손상된 IML 파일로 시작하는 것 같습니다. Android Studio (프로젝트 닫기와 다시 열기 사이)는 IML이 없어졌고 (아닙니다) 모듈을 삭제해야한다고 불평하기 시작했습니다. 계속해서 AS 0.8.7 (카나리아 채널)로 업그레이드했고 OP 문제 (루트 프로젝트에서 찾을 수없는 태스크 '')에 갇혀있었습니다. 이것은 빌드를 완전히 차단했기 때문에 Gradle을 파헤쳐 야했습니다.
OSX에서의 수리 단계 (Windows에 맞게 조정하십시오) :
- Android Studio를 0.8.7로 업그레이드
- 환경 설정 | 업데이트 | "Beta Channel"을 "Canary Channel"로 전환 한 다음 지금 확인을 수행합니다.
- 이것을 건너 뛸 수 있습니다.
Gradle 래퍼를 확인했습니다 (현재 1.12.2, 현재 2.0을 사용하지 마십시오).
특정 버전이 필요하지 않다고 가정하면 지원되는 최신 배포판을 사용하십시오.
$ vi ~/project/gradle-wrapper.properties
...
distributionUrl=http\://services.gradle.org/distributions/gradle-1.12-all.zip
이것은 Preferences | Android Studio에서 설정할 수 있습니다. Gradle (하지만 0.8.7은 '잘못된 위치'오류를 표시했습니다).
- '래퍼'는 각 Android Studio 프로젝트에 대한 Gradle의 복사본입니다. 이를 통해 OS에 Gradle 2를, 프로젝트에 다른 버전을 사용할 수 있습니다. Android 개발자 문서에서 여기에 대해 설명합니다 .
- 그런 다음 플러그인에 대한 build.gradle 파일을 조정합니다 . Gradle 플러그인 버전은 전체 프로젝트에 대해 배포 / 래퍼 버전과 호환되어야합니다. 도구 문서 (tools.android.com/tech-docs/new-build-system/user-guide#TOC-Requirements)가 약간 오래되었으므로 플러그인 버전을 너무 낮게 (예 : 0.8.0) 설정할 수 있습니다. Android Studio는 래퍼의 허용 범위와 함께 오류를 발생시킵니다.
예를 들어 build.gradle에 다음 플러그인이 있습니다.
dependencies {
classpath "com.android.tools.build:gradle:0.12.+"
}
다음과 같이 정확한 버전으로 전환 해 볼 수 있습니다.
dependencies {
classpath "com.android.tools.build:gradle:0.12.2"
}
(각 경우에서 변경하는 버전을 기록한 후) 프로젝트의 모든 build.gradle 파일이 동일한 플러그인 버전을 가져 오는지 확인합니다. "+"를 유지하면 (0.12.0, 0.12.1, 0.12.2 등), Google의 Volley 라이브러리 (원래 gradle : 0.8. +)와 기본 프로젝트 (원래 0.12. +) 고정 버전 : gradle : 0.12.2.
기타 수표
동일한 프로젝트에 두 개의 Android 애플리케이션 모듈이 없는지 확인하십시오.
이는 최종 솔루션 (위의 다른 Gradle 버전)과 상호 작용할 수 있으며
UNEXPECTED TOP-LEVEL EXCEPTION: com.android.dex.DexException: Multiple dex files define (various classes)
확인하려면 빌드 | Make Project는 어떤 응용 프로그램을 만들고 싶은지 묻는 창이 나타나지 않아야합니다.
- 캐시 무효화
- 파일 | 캐시 무효화 / 다시 시작 (stackoverflow.com/a/19223269/513413)
- 2 단계가 작동하지 않으면 ~ / .gradle / (www.wuttech.com/index.php/tag/groovy-lang-closure/)를 삭제하십시오.
- Android Studio 종료
- $ rm -rf ~ / .gradle /
- Android Studio를 시작한 다음 동기화 :
- 도구 | 안드로이드 | 프로젝트를 Gradle 파일과 동기화
- 포기하기 전에이 전체 시퀀스 (quit ... sync)를 몇 번 반복하십시오.
- 프로젝트 정리
이걸 보면 ...
최근 빌드에서 끔찍한 실패 (예외 페이지)가 계속 표시되었지만 몇 초 내에 메시지가 지워지고 빌드가 성공했으며 앱이 배포되었습니다. 설명 할 수 없었고 앱이 작동했기 때문에 프로젝트에 두 개의 Gradle 플러그인이 있다는 사실을 알아 차리지 못했습니다. 그래서 저는 Gradle 플러그인이 서로 싸웠다 고 생각합니다. 하나는 충돌하고 다른 하나는 상태를 잃고 오류를보고했습니다.
시간이 있다면 1 시간짜리 동영상 'A Gentle Introduction to Gradle'(www.youtube.com/watch?v=OFUEb7pLLXw)이 Gradle 빌드 파일, 작업, 빌드 결정 등에 접근하는 데 정말 도움이되었습니다.
부인 성명
나는 다른 직업에서 일한 후 외국 OS 에서이 전체 스택을 배우고 있습니다. 동시에 압력을 받고 있습니다. 지난 몇 달 동안 저는 안드로이드가 가지고 있다고 생각하는 모든 벽에 부딪 혔습니다. 나는 꽤 자주 여기에 있었고 이것이 나의 첫 번째 게시물입니다. 나는 이것이 어려운 수정이라고 생각했기 때문에 내 답변의 질이 내가 그것을 얻는 데 어려움을 반영하는지 진심으로 사과드립니다.