Android Studio: Gradle - xây dựng không thành công - Không thực thi được tác vụ ': dexDebug'


82

Lỗi:

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)

Cấu trúc dự án:

nhập mô tả hình ảnh ở đây

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'

Tôi có thể sửa lỗi này bằng cách nào?

Câu trả lời:


90

Câu trả lời đúng là một số tệp jar của bạn không biên dịch. Bạn nên truy cập tệp build.gradle trong dự án của mình và xem xét các phần phụ thuộc của bạn.

Nếu bạn chỉ nhập một số tệp jar, bạn có thể cố gắng xóa chúng và thêm từng tệp một. Điều này sẽ giúp bạn xác định một trong số chúng gây ra lỗi.

Trong trường hợp của tôi, tôi đã làm điều đó và khi tôi nhập tệp cuối cùng, ứng dụng đã biên dịch. Vì vậy, tôi nghĩ vấn đề thực sự là tôi đã nhập quá nhiều cùng một lúc. Nhưng bây giờ tất cả đều hoạt động.


20
Nếu bạn biên dịch sử dụng ./gradlew lắp ráp --stacktrace --info nó sẽ cho bạn biết chính xác mà jar là xấu
Nir Hartmann

@NirHartmann Câu hỏi nhanh, có phải lệnh mà tôi sẽ đặt trong lớp xây dựng không? Tôi không chắc nó nên được đặt ở đâu.
Fallenreaper

2
@Fallenreaper không chắc rằng tôi hiểu câu hỏi của bạn, ý tôi là trong thư mục dự án gốc của bạn, bạn có một tệp thực thi gradlew, nếu bạn kích hoạt nó từ terminal hoặc cmd như tôi đã nói, bạn sẽ biết vấn đề ở đâu và sau đó bạn có thể khắc phục nó .
Nir Hartmann

@ Fallenreaper- đã điều hướng đến gradle / gradle trong thiết bị đầu cuối và đầu vào ./gradlew assembly --stacktrace --info nhưng không nhận được một dir nào như vậy, đây có phải là ý bạn trong đề xuất của mình không?
dancebush

Đây thực sự là sự giúp đỡ đầy đủ cho tôi
Bhavesh Kaila

68

Tôi đột nhiên gặp vấn đề tương tự, sau khi không có thay đổi đáng chú ý nào.

Tôi đã giải quyết nó bằng cách xóa app/buildthư mục và để cho gradle xây dựng toàn bộ dự án mới.


2
Vấn đề tương tự ở đây khi thêm một hoạt động để thay thế hoạt động chính. Tôi đã thực hiện sạch sẽ nhưng nó không hoạt động. Cảm ơn cho giải pháp này.
Leo núi

1
Ngoài ra, hãy thử dọn dẹp thư mục ứng dụng / xây dựng trong các dự án thư viện mà bạn có thể đưa vào ứng dụng của mình
Voy

1
Tốt thử nhưng nó không khắc phục được vấn đề của tôi: /
Maxime T

1
khắc phục sự cố của tôi. Cảm ơn bạn
dian

1
Xóa thư mục xây dựng thực sự rất hữu ích.
bhavesh kaila

16

Bạn phải kiểm tra xem JAR đó có được nhập lại hay không. Trong trường hợp của tôi, có một lớp bên trong một cái lọ đang được nhập vào một cái lọ khác. Vì vậy, chỉ cần kiểm tra xem có bất kỳ tệp lib / lớp nào đang được đưa vào hai lần trong toàn bộ dự án hay không!


1
Điều này đúng về mặt kỹ thuật đối với tôi, nhưng đã xảy ra vì phần phụ thuộc của tôi trong tệp build.gradle có thư viện hỗ trợ android được bao gồm hai lần với hai phiên bản khác nhau sau khi thêm một hoạt động mới vào dự án.
Josh

Tôi đã không hoàn thành khi việc này đã được giải quyết, nhưng nó sẽ dẫn tôi đến con đường của mình. Cảm ơn.
Andreas Rudolph

Đã giải quyết vấn đề cho tôi, nhưng tôi sẽ không bao giờ nghĩ đến vấn đề là các JAR bị trùng lặp, từ thông báo lỗi. Tôi đã nhập Volley dưới dạng mô-đun ở cấp dự án, nhưng vì tôi muốn có thể chuyển đổi giữa xây dựng bằng AS và xây dựng bằng Cordova, tôi đã thiết lập môi trường của mình để đưa Volley vào dưới dạng plugin Cordova. Sau khi tạo lại nền tảng tại một số điểm, tôi nhận được thông báo lỗi này. Nhận xét của bạn về cùng một thư viện được nhập hai lần khiến tôi nhận ra rằng lẽ ra tôi nên xóa cài đặt 'Volley as import library', vì vậy, cảm ơn.
Mark Birbeck

4

Tôi gặp phải lỗi tương tự khi cố gắng biên dịch một jar thư viện utils trong eclipse bằng Java JRE 1.8 và sử dụng nó trong / libs / trong Android Studio 1.1.0 của tôi.

Tôi đã thiết lập Android Studio để sử dụng JDK1.8.0.

Tôi đã chuyển Eclipse của mình sang hoạt động với JRE 1.7 và lỗi đã được khắc phục. Eclipse: Window-> Preferences-> tab Java-> Compiler -> Mức tuân thủ 1.7. Rất có thể nó sẽ nhắc bạn chuyển Thư viện hệ thống JRE của mình sang jdk1.7.x_x.

Bạn có thể cần đảm bảo bỏ chọn 'nén jar' khi xuất. Tôi đã không kiểm tra xem nó có ảnh hưởng hay không. Tôi nghi ngờ nó có liên quan.


Cảm ơn! Điều này đã giải quyết vấn đề của tôi với Android Studio 1.4 và Gradle thử nghiệm-0.2.1;) Tuy nhiên, tôi đã phải hoàn nguyên về JDK 1.7.1 để khắc phục hoàn toàn sự cố này
Stef

4

Tôi cũng gặp vấn đề tương tự. Trong trường hợp của tôi, sự cố bắt đầu sau khi khởi động lại. Tôi đã đóng Ứng dụng của mình, sau đó đóng Android Studio (Trong trường hợp của tôi là V1.1.0) và cuối cùng là tắt bình thường. Sau đó, tôi đã sửa đổi một tệp java để thêm một đối tượng RadioGroup và sau đó sự cố xuất hiện.

Tôi đã giải quyết vấn đề của mình chỉ thay đổi số '0' đơn giản cho số '1' trong tệp cấu hình Gradle của tôi, vì nguyên nhân gốc rễ của sự cố được tạo ra trong quá trình thực thi Gradle. Trước đây tôi đã từng có phiên bản '1.0.0' sau đó tôi đã thay đổi nó thành '1.1.0', như đã nêu trong hình.

Vị trí của cấu hình Gradle a đã thay đổi Vị trí của cấu hình Gradle a đã thay đổi

Vị trí nơi tôi lấy đúng phiên bản từ (Tệp -> Cài đặt -> Gradle -> Thử nghiệm Vị trí nơi tôi lấy phiên bản phù hợp từ (Tệp -> Cài đặt -> Gradle -> Thử nghiệm


thay đổi sang gradle toots phiên bản 1.1.0 phù hợp với tôi. cảm ơn!
kalan nawarathne

4

Vấn đề KHÔNG phải về Execution failed for task ':dexDebug'

nếu bạn nhìn phía trên, lỗi được hiển thị bằng màu đỏ, bạn sẽ thấy điều này

nhập mô tả hình ảnh ở đây

Để giải quyết vấn đề này vĩnh viễn, chỉ cần thêm các dòng này vào build.gradletệp của bạn

android {
    dexOptions {
        jumboMode = true
    }
}

Để biết thêm chi tiết, hãy kiểm tra câu hỏi này: tại đây


3

Đảm bảo rằng tệp AndroidManifest của bạn chứa tên gói trong nút tệp kê khai. Đặt tên gói đã khắc phục sự cố này cho tôi.


Trong trường hợp của tôi, tên gói đã được trùng lặp trong 2 dự án con của thư viện.
sasha_trn

3

ANDROID STUDIO Người dùng hãy thử điều này: -

Bạn cần thêm phần sau vào phần phụ thuộc tệp gradle của mình:

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

Và sau đó thêm dòng bên dưới (ứng dụng hỗ trợ multidex) vào applicationthẻ tệp kê khai của bạn :

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

2

Có thể sửa lỗi này bằng cách thêm

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

tới các phụ thuộc trong vertretungsplan build.gradle, biên dịch và sau đó loại bỏ dòng này và biên dịch lại.

bây giờ nó hoạt động


Tại sao lại là 'v4: 18.0.0'? Tại sao không phải 'v4: +'
IgorGanapolsky

4
@IgorGanapolsky vì các phiên bản động nói chung dẫn đến kết quả không được bảo vệ.
aga

1

Tôi đã gặp vấn đề tương tự, bạn nên làm:

File -> Invalidate Caches / Restart


1

Tôi gặp sự cố này vì tôi đã cố gắng sử dụng cả thư viện hỗ trợ và appcompat:

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'
}

Sau khi tôi xóa thư viện hỗ trợ và thay đổi thành phiên bản cũ hơn, nó đã biên dịch:

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

Tôi đã có hai phụ thuộc không tương thích.

Các phần phụ thuộc dưới đây đã gây ra lỗi.

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

Bằng cách thay đổi phụ thuộc thể dục thành phiên bản 8.4.0, tôi đã có thể chạy ứng dụng.

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

0

Tôi đã tìm thấy một vấn đề rất thú vị với Android Studio và việc nâng cấp mircrosoft lên trình duyệt web. Tôi đã nâng cấp "một cách ngu ngốc" lên phiên bản mới nhất của ie. tất nhiên Microsoft với trí tuệ vô hạn của họ biết chính xác phải làm gì với bảo mật. Khi tôi cố gắng biên dịch ứng dụng của mình, tôi liên tục gặp lỗi Gradle - xây dựng không thành công - Thực thi không thành công cho tác vụ. nhìn trong ngăn xếp, tôi thấy rằng nó không nhận ra đường dẫn đến java.exe. Tôi thấy điều đó thật kỳ quặc vì tôi vừa có thể biên dịch một ngày trước đó. Tôi đã thêm JAVA_HOME vào env vars cho hệ thống, đóng Android Studio và mở lại. Thấp và nhìn nếu màn hình bức tường lửa không bật lên hỏi tôi có muốn tất cả jave.exe thông qua không.

Thật là một cụm!


0

(Đây có thể là chủ đề sai, vì vấn đề của bạn có vẻ cụ thể hơn, nhưng đó là chủ đề mà tôi đã tìm thấy khi tìm kiếm các từ khóa của vấn đề)

Bất chấp tất cả các gợi ý hay, điều duy nhất đã giúp tôi và tôi muốn chia sẻ đề phòng trường hợp mọi thứ khác không hoạt động:

Xóa thư mục .gradle trong thư mục chính của bạn và để Android Studio xây dựng lại / tải xuống lại cho bạn.

Đã sửa tất cả các loại lỗi kỳ lạ đối với tôi mà không thể sửa được bằng cách cài đặt lại Android Studio hoặc SDK.


0

Một lý do có thể là thư viện trùng lặp sau khi nhập từ IDE Eclipse.

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')}

Tôi đã gặp vấn đề tương tự, sau khi nhận xét:

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

Ứng dụng không có lỗi.


Bạn nên xóa các bình cục bộ khỏi thư mục libs và phụ thuộc vào kho lưu trữ Trung tâm.
WonderCsabo

0

Tôi gặp phải vấn đề tương tự. Giải quyết bằng cách thực hiện điều này. Đi tới actionbarsherlock -> cài đặt mô-đun -> phụ thuộc. Xóa thư viện hỗ trợ v4. Ở dưới cùng bên trái có một nút dấu cộng, từ đó thêm 1 Phụ thuộc Thư viện (Chọn hỗ trợ-v4). Hãy để dự án đồng bộ lại và làm sạch gradle sau khi hoàn thành.


0

Nhiều câu trả lời ở đây là thử và sai để tìm các phụ thuộc trùng lặp nhưng nếu bạn cuộn lên chỉ một chút so với Execution failed for task ':app:dexDebug'.dòng, nó sẽ cung cấp cho bạn một gợi ý về sự trùng lặp

lỗi với một gợi ý.

Trong trường hợp của tôi, tôi đã gặp lỗi sau:

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

Vì vậy, tôi biết rằng để sửa lỗi này, tôi cần phải tìm các phụ thuộc trùng lặp xác định parse.AbstractQueryController

Trong trường hợp của tôi, tôi có hai mô-đun đã nhập đang tải trong hai thư viện Phân tích cú pháp khác nhau. Làm cho dự án của tôi chỉ tải một đã khắc phục sự cố của tôi.


0

Tôi cũng đã gặp phải lỗi này khi gói trong một trong các tệp lớp của tôi bị viết sai chính tả. Nhiều câu trả lời trong số này ngay lập tức chuyển đến tệp Jar nhưng tôi cũng sẽ kiểm tra để đảm bảo các gói của bạn được viết đúng chính tả.


0

chỉ cần thêm vào build.gradle

biên dịch 'com.parse.bolts: bolt-android: 1. +'

biên dịch 'com.parse: parse-android: 1.11.0'

và đồng bộ hóa Dự án với các tệp Gradle nhập mô tả hình ảnh ở đây nhưng không thêm Jar phân tích cú pháp trong libs :) OKK


0

Nếu bạn cũng đang sử dụng Daggerhoặc Butterknifebạn nên thêm ổi làm phụ thuộc vào build.gradletệp chính của mình như classpath:

com.google.guava:guava:20.0

Mặt khác, nếu bạn đang gặp sự cố với heap lớn hơn cho daemon Gradle, bạn có thể tăng thêm vào radletệp của mình :

 dexOptions {
        javaMaxHeapSize "4g"
    } 

0

Trong trường hợp của tôi, tôi đã làm Build > Clean Projectvà nó hoạt động!


-1

Làm sạch Dự án bằng cách sử dụng Xây dựng trong Thanh Menu hoạt động đối với nhiều trường hợp lỗi trong Android Studio và do đó, nó hoạt động trong trường hợp này.


Bạn có bất kỳ thông tin nào về lý do tại sao điều này sẽ giải quyết vấn đề này?
Greg Bair

1
Coz theo bất kỳ cách nào mà bạn không thể loại trừ các thư viện trong build.gradle và giải pháp được chấp nhận cũng yêu cầu chúng tôi xóa và thêm các tệp jar không thể được biên dịch..Vì vậy, không phải các tệp jar đó đang gây ra sự cố , chúng đã hoạt động trước khi sự cố xuất hiện và vẫn đang hoạt động sau khi tôi giải quyết bằng phương pháp mà tôi đã đề cập, vì vậy đó là sự cố xây dựng và mã không được biên dịch. Vì vậy, cách tốt nhất là gì khi một công trình xây dựng bị lỗi, bạn dọn dẹp dự án và xây dựng lại. Cảm ơn bạn!
code4salvation

đối với hầu hết mọi người, thông báo này sẽ xuất hiện nếu họ chuẩn bị xây dựng dự án của mình. vì vậy đây chắc chắn không phải là một giải pháp
maysi

1
Tôi hy vọng bạn đọc câu trả lời, đó là lỗi xây dựng do các phụ thuộc không được biên dịch và do đó, nó sẽ xuất hiện khi bạn chỉ "xây dựng dự án". Để luôn đồng bộ với Android Studio của bạn, hãy đảm bảo rằng bạn cập nhật Java lên phiên bản mới nhất hiện có. đó là một câu chuyện khác trước và sau nó.
code4salvation
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.