Cevap vermenin geç olmasına rağmen, bu Google için zor bir soru (tek alıntılar) ve ne olduğu net değil. Henüz yorum yapacak veya kapsam soracak (veya 3 bağlantı gönderecek) itibarım yok, bu yüzden bu yanıt biraz sıkıcı olabilir.
Hızlı cevap vermek için, projenizde birden fazla Gradle eklentiniz olabilir.
Gradle Wrapper ve Eklentileri Senkronize Edin
Sorunum bozuk bir IML dosyasıyla başlıyor gibiydi. Android Studio (bir projeyi kapatmak ve yeniden açmak arasında) bir IML'nin gittiğinden (değildi) şikayet etmeye başladı ve bir modülün silinmesi gerekiyor, bunu reddettiğim. Devam etti, AS 0.8.7'ye (kanarya kanalı) yükselttim ve OP konusunda takılıp kaldım (Görev '' kök projede bulunamadı). Bu tamamen engellenmiş yapılar olduğundan Gradle'a girmek zorunda kaldım.
OSX'teki onarım adımlarım (lütfen Windows için ayarlayın):
- Android Studio'yu 0.8.7'ye yükseltin
- Tercihler | Güncellemeler | "Beta Kanalı" nı "Kanarya Kanalı" na değiştirin, ardından Şimdi Kontrol Edin.
- Bunu atlayabilirsiniz.
Gradle paketleyicisini kontrol ettim (şu anda 1.12.2; şu anda 2.0'ı kullanmayı denemeyin).
Belirli bir sürüme ihtiyacınız olmadığını varsayarsak, desteklenen en son dağıtımı kullanın
$ vi ~/project/gradle-wrapper.properties
...
distributionUrl=http\://services.gradle.org/distributions/gradle-1.12-all.zip
Bu, Android Studio'da Tercihler | Gradle (ancak 0.8.7 bana 'geçersiz konum' hataları veriyordu).
- "Sarıcı", her Android Studio projesi için Gradle'ın yalnızca bir kopyasıdır. İşletim sisteminizde Gradle 2'ye ve projelerinizde farklı sürümlere sahip olmanızı sağlar. Android Geliştirici belgeleri bunu burada açıklamaktadır .
- Ardından eklenti için build.gradle dosyalarınızı ayarlayın . Gradle eklenti sürümü, tüm proje için dağıtım / sarıcı sürümüyle uyumlu olmalıdır. Araçlar belgeleri (tools.android.com/tech-docs/new-build-system/user-guide#TOC-Requirements) biraz eski olduğundan, eklenti sürümünü çok düşük (0.8.0 gibi) ayarlayabilirsiniz ve Android Studio, sarmalayıcı için kabul edilebilir aralıkta bir hata verecektir.
Örneğin, build.gradle'da şu eklentiye sahipsiniz:
dependencies {
classpath "com.android.tools.build:gradle:0.12.+"
}
Bunu tam sürüme geçirmeyi deneyebilirsiniz, örneğin:
dependencies {
classpath "com.android.tools.build:gradle:0.12.2"
}
ve (her durumda hangi sürümü değiştirdiğinizi kaydettikten sonra) projenizdeki her build.gradle dosyasının aynı eklenti sürümünü çektiğini doğrulayın. "+" Karakterini tutmak işe yaramalı (0.12.0, 0.12.1, 0.12.2, vb. İçin), ancak Google'ın Volley kitaplığını (orijinal olarak derecelendirme: 0.8. +) Ve ana projemi (orijinal olarak 0.12. +) sabit versiyona: gradle: 0.12.2.
Diğer kontroller
Aynı Projede iki Android Uygulama modülünüzün olmadığından emin olun
Bu, nihai çözümle (yukarıdaki farklı Gradle sürümleri) etkileşime girebilir ve
UNEXPECTED TOP-LEVEL EXCEPTION: com.android.dex.DexException: Multiple dex files define (various classes)
Kontrol etmek için, Oluştur | Make Project, hangi uygulamayı yapmak istediğinizi soran bir pencere açmamalıdır.
- Önbelleklerinizi geçersiz kılın
- Dosya | Önbellekleri Geçersiz Kıl / Yeniden Başlat (stackoverflow.com/a/19223269/513413)
- Adım 2 işe yaramazsa, ~ / .gradle / (www.wuttech.com/index.php/tag/groovy-lang-closure/) silin.
- Android Studio'dan çıkın
- $ rm -rf ~ / .gradle /
- Android Studio'yu başlatın, ardından senkronize edin:
- Araçlar | Android | Gradle Dosyaları ile Projeyi Senkronize Et
- Vazgeçmeden önce tüm diziyi birkaç kez tekrarlayın (senkronizasyondan çıkın).
- Projeyi temizleyin
Bunu Görürseniz ...
Son derlemelerimde korkunç başarısızlıklar görmeye devam ettim (istisna sayfaları), ancak saniyeler içinde mesajlar temizlenir, başarılı bir şekilde oluşturulur ve uygulama devreye girer. Asla açıklayamayacağım ve uygulama çalıştığı için, projemde iki Gradle eklentim olduğunu hiç fark etmedim. Bu yüzden Gradle eklentilerinin birbirleriyle savaştığını düşünüyorum; biri çöktü, diğeri durumunu kaybetti ve hatayı bildirdi.
Vaktiniz varsa, 1 saatlik "Gradle'a Nazik Bir Giriş" (www.youtube.com/watch?v=OFUEb7pLLXw) videosu Gradle derleme dosyalarına, görevlere, derleme kararlarına vb. Yaklaşmama gerçekten yardımcı oldu.
Feragatname
Tüm bu yığını, yabancı bir işletim sisteminde, farklı bir kariyerden sonra öğreniyorum ... hepsi aynı anda ve baskı altında. Son birkaç ayda Android'in sahip olduğunu düşündüğüm her duvara çarptım; Buraya oldukça sık geldim ve bu benim ilk yazım. Bunun zor bir düzeltme olduğunu düşündüm, bu yüzden cevabımın kalitesi ona ulaşmakta yaşadığım zorluğu yansıtıyorsa içtenlikle özür dilerim.