Mặc dù trả lời muộn, nhưng đây là một câu hỏi khó đối với Google (chỉ trích dẫn duy nhất) và không rõ chuyện gì đang xảy ra. Tôi chưa có danh tiếng để bình luận hoặc yêu cầu phạm vi (hoặc đăng 3 liên kết), vì vậy câu trả lời này có thể hơi tẻ nhạt.
Để trả lời nhanh, bạn có thể có nhiều plugin Gradle trong dự án của mình.
Đồng bộ hóa Gradle Wrapper và Plugins
Sự cố của tôi dường như bắt đầu với một tệp IML bị hỏng. Android Studio (giữa việc đóng và mở lại một dự án) bắt đầu phàn nàn rằng IML đã biến mất (nó không phải) và một mô-đun sẽ bị xóa, tôi đã từ chối. Nó vẫn tiếp diễn, tôi đã nâng cấp lên AS 0.8.7 (kênh canary) và gặp vấn đề về OP (Tác vụ '' không tìm thấy trong dự án gốc). Bản dựng này bị chặn hoàn toàn nên tôi phải tìm hiểu về Gradle.
Các bước sửa chữa của tôi trên OSX (vui lòng điều chỉnh cho Windows):
- Nâng cấp Android Studio lên 0.8.7
- Sở thích | Thông tin cập nhật | Chuyển "Kênh Beta" thành "Kênh Canary", sau đó thực hiện Kiểm tra ngay.
- Bạn có thể bỏ qua điều này.
Đã kiểm tra trình bao bọc Gradle (hiện tại là 1.12.2; đừng cố sử dụng 2.0 vào lúc này).
Giả sử bạn không cần một phiên bản cụ thể, hãy sử dụng bản phân phối được hỗ trợ mới nhất
$ vi ~/project/gradle-wrapper.properties
...
distributionUrl=http\://services.gradle.org/distributions/gradle-1.12-all.zip
Điều này có thể được đặt trong Android Studio tại Tùy chọn | Gradle (nhưng 0.8.7 đã cho tôi lỗi 'vị trí không hợp lệ').
- 'Wrapper' chỉ là một bản sao của Gradle cho mỗi dự án Android Studio. Nó cho phép bạn có Gradle 2 trong hệ điều hành và các phiên bản khác nhau trong các dự án của bạn. Tài liệu dành cho nhà phát triển Android giải thích điều đó tại đây .
- Sau đó, điều chỉnh các tệp build.gradle của bạn cho plugin . Phiên bản plugin Gradle phải tương thích với phiên bản phân phối / trình bao bọc, cho toàn bộ dự án. Do tài liệu Công cụ (tools.android.com/tech-docs/new-build-system/user-guide#TOC-Requirements) hơi lỗi thời, bạn có thể đặt phiên bản plugin quá thấp (như 0.8.0) và Android Studio sẽ báo lỗi với phạm vi chấp nhận được cho trình bao bọc.
Ví dụ, trong build.gradle, bạn có plugin này:
dependencies {
classpath "com.android.tools.build:gradle:0.12.+"
}
Bạn có thể thử chuyển nó sang phiên bản chính xác, như sau:
dependencies {
classpath "com.android.tools.build:gradle:0.12.2"
}
và (sau khi ghi lại phiên bản bạn đang thay đổi trong từng trường hợp) xác minh rằng mọi tệp build.gradle trong dự án của bạn đều kéo trong cùng một phiên bản plugin. Giữ “+” sẽ hoạt động (cho 0.12.0, 0.12.1, 0.12.2, v.v.), nhưng bản dựng của tôi đã thành công khi tôi cập nhật thư viện Volley của Google (ban đầu là gradle: 0.8. +) Và dự án chính của tôi (ban đầu là 0.12. +) sang phiên bản cố định: gradle: 0.12.2.
Séc khác
Đảm bảo bạn không có hai mô-đun Ứng dụng Android trong cùng một Dự án
Điều này có thể tương tác với giải pháp cuối cùng (các phiên bản Gradle khác nhau, ở trên) và nguyên nhân
UNEXPECTED TOP-LEVEL EXCEPTION: com.android.dex.DexException: Multiple dex files define (various classes)
Để kiểm tra, Build | Make Project sẽ không bật lên một cửa sổ hỏi bạn muốn tạo ứng dụng nào.
- Vô hiệu hóa bộ nhớ đệm của bạn
- Tập tin | Không hợp lệ bộ nhớ đệm / Khởi động lại (stackoverflow.com/a/19223269/513413)
- Nếu bước 2 không hoạt động, hãy xóa ~ / .gradle / (www.wuttech.com/index.php/tag/groovy-lang-closure/)
- Thoát khỏi Android Studio
- $ rm -rf ~ / .gradle /
- Khởi động Android Studio, sau đó đồng bộ hóa:
- Công cụ | Android | Đồng bộ hóa dự án với tệp Gradle
- Lặp lại toàn bộ trình tự này (thoát ... đồng bộ hóa) một vài lần trước khi bỏ.
- Làm sạch dự án
Nếu bạn thấy điều này ...
Trong các bản dựng gần đây của mình, tôi liên tục thấy lỗi khủng khiếp (các trang ngoại lệ) nhưng trong vài giây các thông báo sẽ rõ ràng, bản dựng thành công và ứng dụng được triển khai. Vì tôi không thể giải thích nó và ứng dụng hoạt động, tôi không bao giờ nhận thấy rằng tôi có hai plugin Gradle trong dự án của mình. Vì vậy, tôi nghĩ rằng các plugin Gradle đã chiến đấu với nhau; một cái bị rơi, cái kia mất trạng thái và báo lỗi.
Nếu bạn có thời gian, video dài 1 giờ "Giới thiệu nhẹ nhàng về Gradle" (www.youtube.com/watch?v=OFUEb7pLLXw) đã thực sự giúp tôi tiếp cận các tệp, tác vụ, quyết định xây dựng Gradle, v.v.
Khước từ
Tôi đang học toàn bộ thứ này, trên một hệ điều hành nước ngoài, sau khi làm một công việc khác ... tất cả cùng một lúc và chịu áp lực. Trong vài tháng gần đây, tôi đã chạm vào mọi bức tường mà tôi nghĩ Android có; Tôi đã ở đây khá thường xuyên và đây là bài viết đầu tiên của tôi. Tôi nghĩ rằng đây là một sửa chữa khó, vì vậy tôi thành thật xin lỗi nếu chất lượng câu trả lời của tôi phản ánh khó khăn mà tôi gặp phải khi thực hiện nó.