Android Studio: Gradle - derleme başarısız - ': dexDebug' görevi için yürütme başarısız oldu


82

Hata:

Gradle: Execution failed for task ':vertretungsplan:dexDebug'.
> Failed to run command:
    P:\Android-Studio\sdk\build-tools\18.0.1\dx.bat --dex --output P:\Projekte\VertretungsplanProject\vertretungsplan\build\libs\vertretungsplan-debug.dex P:\Projekte\VertretungsplanProject\vertretungsplan\build\classes\debug P:\Projekte\VertretungsplanProject\vertretungsplan\build\dependency-cache\debug P:\Android-Studio\sdk\extras\android\m2repository\com\android\support\support-v4\18.0.0\support-v4-18.0.0.jar P:\Projekte\VertretungsplanProject\vertretungsplan\libs\commons-io-2.4.jar P:\Projekte\VertretungsplanProject\vertretungsplan\build\exploded-bundles\VertretungsplanProjectLibrariesActionbarsherlockUnspecified.aar\classes.jar
Error Code:
    2
Output:
    trouble processing:
    bad class file magic (cafebabe) or version (0033.0000)
    ...while parsing de/MayerhoferSimon/Vertretungsplan/LoginActivity$2.class
    ...while processing de/MayerhoferSimon/Vertretungsplan/LoginActivity$2.class
    trouble processing:
    bad class file magic (cafebabe) or version (0033.0000)
    ...while parsing de/MayerhoferSimon/Vertretungsplan/MainActivity$1.class
    ...while processing de/MayerhoferSimon/Vertretungsplan/MainActivity$1.class
    trouble processing:
    bad class file magic (cafebabe) or version (0033.0000)
    ...while parsing de/MayerhoferSimon/Vertretungsplan/YQL/YqlVplanParser.class
    ...while processing de/MayerhoferSimon/Vertretungsplan/YQL/YqlVplanParser.class
    3 warnings
    UNEXPECTED TOP-LEVEL EXCEPTION:
    com.android.dx.util.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;
        at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:592)
        at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:550)
        at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:531)
        at com.android.dx.merge.DexMerger.mergeDexBuffers(DexMerger.java:168)
        at com.android.dx.merge.DexMerger.merge(DexMerger.java:186)
        at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:300)
        at com.android.dx.command.dexer.Main.run(Main.java:232)
        at com.android.dx.command.dexer.Main.main(Main.java:174)
        at com.android.dx.command.Main.main(Main.java:91)

Proje yapısı:

görüntü açıklamasını buraya girin

build.gradle (actionbarsherlock)

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
    }
}
apply plugin: 'android-library'

dependencies {
    compile 'com.android.support:support-v4:18.0.0'
}

android {
    compileSdkVersion 18
    buildToolsVersion "18.0.1"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 11
    }

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            res.srcDirs = ['res']
        }
    }
}

build.gradle (vertretungsplan)

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
    }
}
apply plugin: 'android'

dependencies {
    compile files('libs/commons-io-2.4.jar')
    compile project(':libraries:actionbarsherlock')
}

android {
    compileSdkVersion 18
    buildToolsVersion "18.0.1"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 11
    }
}

settings.gradle

include ':vertretungsplan', ':libraries:actionbarsherlock'

Bu hatayı nasıl düzeltebilirim?

Yanıtlar:


89

Doğru cevap, bazı jar dosyalarınızın derlenmemesidir. Projenizde build.gradle dosyanıza gitmeli ve bağımlılıklarınıza bakmalısınız.

Yalnızca bazı jar dosyalarını içe aktarıyorsanız, bunları kaldırıp birer birer eklemeyi deneyebilirsiniz. Bu, hangisinin hataya neden olduğunu belirlemenize yardımcı olacaktır.

Benim durumumda, tam da bunu yaptım ve sonuncuyu içe aktarırken uygulama derlendi. Sanırım asıl sorun, aynı anda çok fazla ithal ediyor olmamdı. Ama şimdi hepsi çalışıyor.


20
./Gradlew assemble --stacktrace --info kullanarak derlerseniz, hangi kavanozun kötü olduğunu tam olarak size bildirir
Nir Hartmann

@NirHartmann Hızlı Soru, komut, derleme sınıfına yerleştireceğim bir şey mi? Nereye yerleştirilmesi gerektiğinden emin değildim.
Fallenreaper

2
@ Fallenreaper sorunuzu anladığımdan emin değilim, kök proje dizininizde bir exec gradlew dosyası olduğunu söyledim, dediğim gibi terminalden veya cmd'den ateşlerseniz, sorunun nerede olduğunu bilirsiniz ve sonra düzeltebilirsiniz. .
Nir Hartmann

@ Fallenreaper- terminalde gradle / gradle'a gittiniz ve giriş ./gradlew assemble --stacktrace --info ama böyle bir direk yok, önerinizde kastettiğin bu mu?
dancingbush

Bu benim için gerçekten çok yardımcı oluyor
bhavesh kaila

69

Kayda değer bir değişiklik olmadan birdenbire aynı sorunu yaşadım.

app/buildDizini silerek çözdüm ve gradle'ın tüm projeyi yeni inşa etmesine izin verdim .


2
Ana aktiviteyi değiştirmek için bir aktivite eklerken de aynı problem burada. Temiz yaptım ama işe yaramadı. Bu çözüm için teşekkürler.
2015 12

1
Ayrıca, uygulamanıza dahil ediyor olabileceğiniz kitaplık projelerindeki uygulama / derleme klasörünü temizlemeyi deneyin
Voy

1
İyi deneme ama sorunumu çözmedi: /
Maxime T

1
sorunumu çöz. Teşekkür ederim
dian

1
Derleme klasörünü silmek gerçekten çok yardımcı olur.
bhavesh kaila

15

Aynı JAR'ın tekrar içe aktarılıp aktarılmadığını kontrol etmelisiniz. Benim durumumda, bir kavanozun içinde başka bir kavanoza ithal edilen bir sınıf vardı. Bu yüzden herhangi bir lib / class dosyasının tüm projeye iki kez dahil edilip edilmediğini kontrol edin!


1
Bu benim için teknik olarak doğruydu, ancak bu, projeye yeni bir etkinlik ekledikten sonra build.gradle dosyasındaki bağımlılıklarımın iki farklı sürümle birlikte iki kez dahil edilen android destek kitaplığına sahip olması nedeniyle oldu.
Josh

Bu çözüldüğünde işim bitmedi, ama beni kendi yoluma götürdü. Teşekkürler.
Andreas Rudolph

Benim için bir problemi çözdü, ancak hata mesajından JAR'ların çoğaltılması problemini asla düşünmezdim. Volley'i proje düzeyinde bir modül olarak içe aktarıyordum, ancak AS ile bina ve Cordova ile bina arasında geçiş yapabilmek istediğim için, ortamımı bir Cordova eklentisi olarak Volley'i getirecek şekilde ayarladım. Platformu bir noktada yeniden oluşturduktan sonra bu hata mesajını aldım. Aynı kitaplıkların iki kez içe aktarılmasıyla ilgili yorumunuz, "Volley olarak içe aktarılmış kitaplık" ayarlarını kaldırmam gerektiğini anlamamı sağladı, bu yüzden teşekkürler.
Mark Birbeck

4

Java JRE 1.8 kullanarak tutulmada bir utils kitaplığı kavanozunu derlemeye ve Android Studio 1.1.0'da / libs / uygulamasında kullanmaya çalıştığımda da aynı tür hatayı aldım.

Android Studio'mu JDK1.8.0'ı kullanacak şekilde ayarladım.

Eclipse'imi JRE 1.7 ile çalışacak şekilde değiştirdim ve hata düzeltildi. Eclipse: Pencere-> Tercihler-> Java sekmesi-> Derleyici -> Uyumluluk seviyesi 1.7. Büyük olasılıkla sizden JRE Sistem Kitaplığınızı jdk1.7.x_x olarak değiştirmenizi isteyecektir.

Dışa aktarırken "kavanozu sıkıştır" seçeneğinin işaretini kaldırmanız gerekebilir. Etkisi olup olmadığını test etmedim. İlgili olduğundan şüpheliyim.


Teşekkürler! Bu, Android Studio 1.4 ve Gradle deneysel-0.2.1 ile ilgili sorunumu çözdü;) Bu sorunu tamamen düzeltmek için JDK 1.7.1'e geri dönmek zorunda kaldım
Stef

4

Ben de aynı sorunu yaşadım. Benim durumumda sorun yeniden başlatmanın ardından başladı. Uygulamamı kapattım, ardından Android Studio'yu (Benim durumumda V1.1.0) ve sonunda normal bir kapatma yaptım. Bundan sonra, bir RadioGroup nesnesi eklemek için bir java dosyasını değiştirdim ve sonra sorun ortaya çıktı.

Gradle yapılandırma dosyamda '1' yerine basit bir '0'ı değiştirerek sorunumu çözdüm, çünkü sorunun temel nedeni Gradle yürütme sürecinde oluşturulmuştu. Önceden '1.0.0' sürümüne sahiptim, sonra resimlerde belirtildiği gibi '1.1.0' olarak değiştirdim.

Gradle yapılandırmasının konumu değiştirildi Gradle yapılandırmasının konumu değiştirildi

Doğru sürümü aldığım yer (Dosya -> Ayarlar -> Gradle -> Deneysel Doğru sürümü aldığım yer (Dosya -> Ayarlar -> Gradle -> Deneysel


gradle toots sürüm 1.1.0'a geçiş benim için çalıştı. Teşekkürler!
kalan nawarathne

4

Sorun bununla ilgili DEĞİLDİR Execution failed for task ':dexDebug'

kırmızıyla gösterilen hatanın üstüne bakarsanız, bunu göreceksiniz

görüntü açıklamasını buraya girin

Bu sorunu kalıcı olarak çözmek için bu satırları build.gradledosyanıza eklemeniz yeterlidir.

android {
    dexOptions {
        jumboMode = true
    }
}

Daha fazla ayrıntı için bu soruyu kontrol edin: burada


3

AndroidManifest dosyanızın manifest düğümünde bir paket adı içerdiğinden emin olun. Bir paket adı belirlemek bu sorunu benim için çözdü.


Benim durumumda paket adı 2 kütüphane alt projesinde çoğaltıldı.
sasha_trn

3

ANDROID STUDIO Kullanıcıları şunu dener: -

Aşağıdakileri gradle dosya bağımlılıklarınıza eklemeniz gerekir:

compile 'com.android.support:multidex:1.0.0'

Ve sonra manifestinizin applicationetiketine aşağıdaki satırı (multidex destek uygulaması) ekleyin :

android:name="android.support.multidex.MultiDexApplication"

2

Ekleyerek bunu düzeltebilir misiniz?

compile 'com.android.support:support-v4:18.0.0'

vertretungsplan build.gradle içindeki bağımlılıklara, derleyin ve sonra bu satırı kaldırın ve tekrar derleyin.

şimdi çalışıyor


Neden 'v4: 18.0.0'? Neden 'v4: +' değil
IgorGanapolsky

4
@IgorGanapolsky, çünkü genel olarak dinamik sürümler beklenmedik sonuçlara yol açar.
aga

1

Ben de aynı sorunu yaşadım, yapmalısın:

File -> Invalidate Caches / Restart


1

Bu sorunu yaşadım çünkü hem destek kitaplığını hem de appcompat'ı kullanmaya çalıştım:

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile 'com.android.support:support-v4:23.1.0'
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:design:23.1.1'
    compile 'com.google.android.gms:play-services:8.3.0'
}

Destek kitaplığını sildikten ve eski sürüme geçtikten sonra derledi:

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    /*compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:design:23.1.1'*/
    compile 'com.android.support:appcompat-v7:22.2.0'
    compile 'com.android.support:design:22.2.0'
    compile 'com.google.android.gms:play-services:8.3.0'
}

1

İki uyumsuz bağımlılığım vardı.

Aşağıdaki bağımlılıklar hataya neden oldu.

compile 'com.google.android.gms:play-services-fitness:8.3.0'
compile 'com.google.android.gms:play-services-wearable:8.4.0'

Fitness bağımlılığını 8.4.0 sürümüne değiştirerek uygulamayı çalıştırabildim.

compile 'com.google.android.gms:play-services-fitness:8.4.0'
compile 'com.google.android.gms:play-services-wearable:8.4.0'

0

Android Studio ve mircrosoft'un web tarayıcısına yükseltilmesi ile ilgili çok ilginç bir sorun buldum. İe'nin son sürümüne "aptalca" yükselttim. elbette Microsoft sonsuz bilgeliğiyle güvenlikle ne yapılacağını tam olarak bilir. Uygulamamı derlemeye çalıştığımda Gradle hatası almaya devam ettim - derleme başarısız oldu - Yürütme görev için başarısız oldu. yığına baktığımda java.exe yolunu tanımadığını gördüm. Bunu bir gün önce derleyebildiğim için tuhaf buldum. JAVA_HOME'u sistemin ortam değişkenlerine ekledim, Android Studio'yu kapattım ve yeniden açtım. Düşük ve yangın duvarı nag ekranı tüm jave.exe'yi isteyip istemediğimi sorup açılmadıysa dikkat edin.

Ne bir küme!


0

(Sorununuz daha spesifik göründüğü için bu yanlış ileti dizisi olabilir, ancak sorunun anahtar kelimelerini ararken bulduğum ileti dizisi budur)

Tüm güzel ipuçlarına rağmen, bana yardımcı olan ve diğer her şey işe yaramazsa, her ihtimale karşı paylaşmak istediğim tek şey:

.Gradle dizininizi ana dizininizden kaldırın ve Android Studio tarafından sizin için yeniden oluşturmasını / yeniden indirmesini sağlayın.

Ne Android Studio'nun kendisini ne de SDK'yı yeniden yükleyerek düzeltilemeyen her tür garip hata düzeltildi.


0

Eclipse IDE'den içe aktarıldıktan sonra kitaplıkların çoğaltılmasının bir nedeni olabilir.

dependencies {
compile 'com.github.japgolly.android:svg-android:2.0.5'
compile 'com.google.android.gms:play-services:+'
compile 'com.android.support:appcompat-v7:21.0.3'
compile files('libs/androidannotations-api-2.7.1.jar')
compile files('libs/androidasync-2.1.2.jar')
//compile files('libs/google-play-services.jar')
compile files('libs/universal-image-loader-1.8.2.jar')}

Yorumdan sonra aynı sorunu yaşadım:

//compile files('libs/google-play-services.jar')

Uygulamada hata yok.


Yerel kavanozları libs klasöründen kaldırmanız ve Merkezi depolara bağlı olmanız gerekir.
WonderCsabo

0

Ben de aynı sorunla karşılaştım. Bunu yaparak çözdüm. Actionbarsherlock -> modül ayarları -> bağımlılıklara gidin. Destek v4 kitaplığını kaldırın. Sol altta bir artı düğmesi vardır, buradan 1 Kitaplık Bağımlılığı ekleyin (destek-v4'ü seçin). Tamamlandığında, derecelendirmenin yeniden senkronize etmesine ve projeyi temizlemesine izin verin.


0

Buradaki yanıtların çoğu, yinelenen bağımlılıkları bulmak için deneme yanılma yöntemidir, ancak Execution failed for task ':app:dexDebug'.satırdan biraz yukarı kaydırırsanız , yinelemelerde size bir ipucu verecektir.

bir ipucu ile hata.

Benim durumumda aşağıdaki hatayı aldım:

UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define L/com/parse/AbstractQueryController$1;
...
...
...
Execution failed for task ':app:dexDebug'.

Bu nedenle, bu hatayı düzeltmek için tanımlayan yinelenen bağımlılıkları bulmam gerektiğini biliyordum parse.AbstractQueryController

Benim durumumda, iki farklı Ayrıştırma kitaplığında yüklenen içe aktarılmış iki modülüm vardı. Projemin yalnızca bir tane yüklemesini sağlamak sorunumu çözdü.


0

Ayrıca sınıf dosyalarımdan birindeki paket yanlış yazıldığında da bu hatayla karşılaştım. Bu yanıtların çoğu hemen Jar dosyalarına atlar, ancak paketlerinizin doğru yazıldığından emin olmak için de kontrol ederdim.


0

sadece build.gradle ekleyin

'com.parse.bolts: bolts-android: 1. +' derleyin

'com.parse: parse-android: 1.11.0' derleyin

ve Projeyi Gradle Dosyaları ile senkronize edin, ancak görüntü açıklamasını buraya girin ayrıştırma kavanozunu kitaplara eklemeyin :) OKK


0

Ayrıca kullanıyorsanız DaggerveyaButterknifebuild.gradle sınıf yolu gibi ana dosyanıza bağımlılık olarak guava eklemeniz gerekiyorsa :

com.google.guava:guava:20.0

Diğer yandan, Gradle arka plan programı için daha büyük yığınla ilgili sorunlar yaşıyorsanız, radledosyanıza eklemeyi artırabilirsiniz :

 dexOptions {
        javaMaxHeapSize "4g"
    } 


-1

Menü Çubuğunda Oluştur'u kullanarak Projeyi temizlemek, Android Studio'daki birçok hata senaryosunda çalışır ve bu durumda da işe yarar.


Bunun bu sorunu neden çözeceğine dair herhangi bir bilginiz var mı?
Greg Bair

1
Herhangi bir şekilde build.gradle'daki kitaplıkları hariç tutamayacağınız ve kabul edilen çözüm de bize derlenemeyen jar dosyalarını kaldırmamızı ve eklememizi söylüyor ... Yani sorun yaratan jar dosyaları değildi , sorun ortaya çıkmadan önce çalışıyorlardı ve bahsettiğim yöntemi kullanarak çözdükten sonra hala çalışıyorlar, bu yüzden bir yapı sorunu ve kod derlenmedi. Öyleyse, bir yapı başarısız olduğunda projeyi temizleyip yeniden inşa etmenin en iyi yolu nedir? Teşekkür ederim!
code4salvation

Çoğu insan için bu mesaj projelerini inşa edeceklerse görünür. bu yüzden bu kesinlikle bir çözüm değil
maysi

1
Umarım cevabı, bağımlılıkların derlenmemesi nedeniyle bir derleme hatası olarak okursunuz ve bu nedenle yalnızca "projeyi oluşturduğunuzda" görünecektir. Android Studio'nuzla senkronize kalmak için Java'yı mevcut en son sürüm coz'a güncellediğinizden emin olun. ondan önce ve sonra farklı bir hikaye.
code4salvation
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.