Không thực hiện được Android Studio 3.0 cho tác vụ: không thể hợp nhất dex


85

android studio đã gặp lỗi xây dựng trong khi thực thi xây dựng với sau:

Lỗi: Không thực thi được tác vụ ': app :formationDexArchiveWithExternalLibsDexMergerForDebug'. java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Không thể hợp nhất dex "

Ứng dụng của tôi: tệp build.gradle:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    buildToolsVersion '26.0.2'
    defaultConfig {
        applicationId "com.pdroid.foodieschoice"
        minSdkVersion 16
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    compile 'com.firebaseui:firebase-ui-auth:2.3.0'

    testCompile 'junit:junit:4.12'
}
configurations.all {
    resolutionStrategy {
        force 'com.android.support:appcompat-v7:26.0.1'
        force 'com.android.support:support-compat:26.0.1'
        force 'com.android.support:support-core-ui:26.0.1'
        force 'com.android.support:support-annotations:26.0.1'
        force 'com.android.support:recyclerview-v7:26.0.1'
    }
}

apply plugin: 'com.google.gms.google-services'

bất kỳ giải pháp

Chỉnh sửa: tôi đã làm với mẫu thông qua trang web github firebase và đã giải quyết được


bạn phải bao gồm hỗ trợ multiDex trong ứng dụng của mình
Sudheesh R

và thử dọn dẹp, xây dựng lại dự án của bạn
Sudheesh R

Tôi khuyên bạn nên chỉnh sửa câu hỏi của mình và đăng toàn bộ đầu ra của bảng điều khiển Gradle, không chỉ một dòng. Chi tiết về vấn đề của bạn nằm ở chỗ khác trong đầu ra.
CommonsWare

@CommonsWare tôi đã đăng toàn bộ lỗi của mình .. chỉ có hai dòng duy nhất.
Anguraj

2
Cố gắng tắt chạy ngay lập tức, dọn dẹp dự án của bạn và thêm android {defaultConfig {multiDexEnabled true}}
Tara

Câu trả lời:


65

Đối với dự án dựa trên Cordova, hãy chạy cordova clean androidtrước khi xây dựng lại, như @mkimmet đã đề xuất.


1
Ai đó hãy đánh dấu câu trả lời này đúng. Nó giải quyết vấn đề.
pamekar

1
Đối với tôi, việc cài đặt 'cordova-plugin-androidx' và 'cordova-plugin-androidx-adapter' đã giải quyết được vấn đề
ssz

57

Lỗi này xảy ra khi bạn thêm thư viện bên ngoài có thể không tương thích với thư viện của bạn compileSdkVersion.

Hãy cẩn thận khi bạn thêm một external library.

Tôi đã dành 2 ngày cho vấn đề này và cuối cùng nó đã được giải quyết theo các bước sau.

  • Đảm bảo rằng tất cả các thư viện hỗ trợ của bạn giống với thư viện compileSdkVersioncủa bạn build.gradle(Module:app)trong trường hợp của tôi 26.nhập mô tả hình ảnh ở đây

  • Trong danh mục defaultConfig của bạn, hãy nhập multiDexEnabled true . Đây là một phần quan trọng.multiDexEnabled hình ảnh True

  • Đi tới Tệp | Cài đặt | Xây dựng, Thực thi, Triển khai | Chạy tức thì và thử Bật / Tắt Chạy tức thì để hoán đổi nóng ... và bấm OK Bật Instant Run to Hot swap ... Hình ảnh

  • Sync Dự án của bạn.

  • Cuối cùng, đi tới Xây dựng | nhấp vào Xây dựng lại Dự án .

  • Lưu ý: Trước tiên, Rebuild Project dọn dẹp và sau đó xây dựng dự án.


nó là hữu ích cho tôi, cảm ơn bạn.
Sumit Saxena vào

rất vui khi nghe điều đó. Chúc bạn sử dụng Android vui vẻ.
Niamatullah Bakhshi

1
@YajliMaclo tuyệt vời!
Niamatullah Bakhshi 19/1218

47

Cố gắng thêm cái này vào gradle

    android {
      defaultConfig {
        multiDexEnabled true
        }
   }

Bạn đã cố gắng làm mất hiệu lực bộ nhớ cache trong android studio? @Anguraj
Ishan Fernando

Không phải là bước duy nhất để kích hoạt multidex. Cũng không cần thiết trong các cấp API mới hơn
OneCricketeer

25

Độ phân giải:

Tham khảo liên kết này : Vì có nhiều tùy chọn khác nhau để tắt cảnh báo tùy thuộc vào minSdkVersion, nó được đặt dưới 20 :

 android {
     defaultConfig {
         ...
         minSdkVersion 15 
         targetSdkVersion 26
         multiDexEnabled true
     }
     ... }

 dependencies {   compile 'com.android.support:multidex:1.0.3' }

Nếu bạn có minSdkVersion lớn hơn 20 trong bộ build.gradle của mình, hãy sử dụng cách sau để tắt cảnh báo:

  android {
      defaultConfig {
          ...
          minSdkVersion 21 
          targetSdkVersion 26
          multiDexEnabled true
      }
      ... }

Cập nhật các phần phụ thuộc như sau:

     dependencies {
        implementation 'com.android.support:multidex:1.0.3'
     }

Một lần nữa, sự khác biệt duy nhất là các từ khóa trong các phần phụ thuộc:

minSdkVersion dưới 20: sử dụng biên dịch

minSdkVersion trên 20: sử dụng triển khai

  1. Tôi hy vọng điều này hữu ích, vui lòng ủng hộ nếu nó giải quyết được vấn đề của bạn, Cảm ơn bạn đã dành thời gian.
  2. Ngoài ra để biết thêm thông tin, về lý do tại sao điều này xảy ra , vui lòng đọc đoạn đầu tiên trong liên kết, nó sẽ giải thích cặn kẽ tại sao? cảnh báo này có ý nghĩa gì.

24

Đơn giản chỉ cần thử thực hiện "Xây dựng -> Dự án sạch". Điều đó đã giải quyết vấn đề cho tôi.


5
Cảm ơn điều này đã làm việc cho tôi trong một dự án Ionic / Cordova bằng cách chạy cordova clean android trong khi tôi cũng đã cài đặt plugin cordova-android-support-gradle-release.
mkimmet

Yêu nó khi một cái gì đó đơn giản sửa chữa mọi thứ !! Cảm ơn!
tonejac

Điều này đã sửa nó cho tôi khi làm việc với React Native.
Michael Auderer

Cảm ơn, đó là giải pháp dễ dàng nhất cho vấn đề này, tôi đã dành 3 ngày để giải quyết vấn đề này và câu trả lời của bạn giải quyết được tất cả vấn đề của tôi. Một lần nữa xin cảm ơn người anh em của tôi !!!
gautamsinh mori

Cảm ơn. Đã giúp tôi trên Android Studio 4.1. Đã lưu ngày của tôi.
Atif

7

Đối với tôi, thêm

multiDexEnabled true

packagingOptions {
        exclude 'META-INF/NOTICE' 
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/notice'
        exclude 'META-INF/notice.txt'
        exclude 'META-INF/license'
        exclude 'META-INF/license.txt'
    }

vào tệp Build.gradle cấp ứng dụng đã giải quyết được sự cố


5

Đi tới build.gradletệp cấp mô-đun của bạn và thêm các dòng sau vào mã

    defaultConfig {
        ...
        minSdkVersion 15 
        targetSdkVersion 28
        multiDexEnabled true
    }
    ...
}

dependencies {
  implementation 'com.android.support:multidex:1.0.3'
}

Điều đó đã giải quyết vấn đề một cách dễ dàng. Kiểm tra tài liệu này


4

Sử dụng multiDexEnabled true như bên dưới.

{
 minSdkVersion 17
    targetSdkVersion 28
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    multiDexEnabled true
}

implementation 'com.android.support:multidex:1.0.3'

Giải pháp này đã làm việc cho tôi.


4

Tôi đã thử nhiều giải pháp như đã đề cập ở trên bao gồm multiDexEnabled true nhưng không có giải pháp nào phù hợp với tôi.

Đây là giải pháp phù hợp với tôi - sao chép mã này trong tệp app \ build.gradle

configurations.all {
    resolutionStrategy.eachDependency { DependencyResolveDetails details ->
        def requested = details.requested
        if (requested.group == 'com.android.support' && requested.name != 'multidex') {
            details.useVersion "${rootProject.ext.supportLibVersion}"
        }
    }
}

Đảm bảo chạy gradlew sạch trước khi chạy mã


Tôi đã thay đổi minSdkVersion, đủ rồi
Mr Special

2

Điều tương tự cũng xảy ra với tôi, phát hiện ra rằng tôi đang cập nhật lên AS 3.0.1 và sau khi cập nhật, dọn dẹp và xây dựng lại ứng dụng, mọi thứ đã được khắc phục.


2

Đối với tôi, điều đã sửa lỗi này là thay đổi một dòng trong phần phụ thuộc gradle của ứng dụng của tôi.

từ cái này :

compile('com.google.android.gms:play-services-gcm:+') {
    force = true
}

Về điều này :

compile('com.google.android.gms:play-services-gcm:11.8.0') {
    force = true
}

Chỉ điều đó làm việc cho tôi. Tôi không cần thêm lực lượng = true
Paulo Linhares - Packapps

1

Ngoài ra, hãy chắc chắn rằng ứng dụng của bạn đang phân lớp MultiDexApplication

import android.support.multidex.MultiDexApplication

class App : MultiDexApplication()

hoặc nếu không phân lớp Ứng dụng, hãy thêm vào AndroidManifest.xml

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

0

Bạn đang ở giữa các bản cập nhật SDK hoặc nền tảng? Nếu có, hãy hoàn thành những điều đó hoàn toàn và sau đó cố gắng tiếp tục. Tôi thường cập nhật các gói riêng lẻ cần được cập nhật khi thực hiện toàn bộ bản cập nhật, đôi khi có thể lên đến 2,5 GB. Thực hiện cập nhật hoàn chỉnh này đôi khi không thành công. Tôi đã có một số bản cập nhật SDK sau khi nâng cấp lên Android Studio 3.0 và gặp lỗi ở trên vì tất cả các gói chưa được cập nhật. Khi tôi cập nhật tất cả các gói, lỗi trên đã biến mất.


Hy vọng bạn đã xóa hoặc làm mất hiệu lực bộ nhớ cache của mình và khởi động lại Android Studio? Đối với tôi, Android Studio 3 có vẻ lỗi so với các phiên bản trước.
Vineet Jain

có ai từng sửa cái này không? không thể vượt qua nó!
68060

0

Trong trường hợp của tôi, việc thay đổi phiên bản thư viện firebase từ 2.6.0 sang 2.4.2 đã khắc phục sự cố


0

Đối với tôi, vấn đề là việc sử dụng Java 1.8 trong một mô-đun, nhưng không phải trong mô-đun ứng dụng. Tôi đã thêm cái này vào gradle xây dựng ứng dụng và đã hoạt động:

android{
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

0

Cùng một vấn đề. Tôi đã bật multidex: defaultConfig {applicationId "xxx.xxx.xxxx" minSdkVersion 24 targetSdkVersion 26 multiDexEnabled true

Tôi đã xóa bộ nhớ cache, chạy sạch gradle, xây dựng lại, tạo, cố gắng đảm bảo không có xung đột trong các thư viện đã nhập (Đã xóa tất cả các phụ thuộc bắc cầu) và thực hiện tất cả các cập nhật. Vẫn:

Lỗi: Không thực thi được tác vụ ': app :formationDexArchiveWithExternalLibsDexMergerForDebug'. java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Không thể hợp nhất dex

Hóa ra bản dựng không giống như: thực hiện 'org.slf4j: slf4j-android: 1.7.21'


0

Khi phiên bản Android Studio là 3.0.1, Phiên bản Gradle là 4.1 và Android PluginVersion là 3.0.0, nó sẽ gặp sự cố này. Sau đó, tôi hạ cấp Phiên bản Gradle là 3.3, Android Android là 0, không có vấn đề như vậy.


0

Tôi đã gặp điều này khi phiên bản SDK được yêu cầu không khớp với các phần phụ thuộc. Bạn có thể nhấp vào dòng được đánh dấu và sửa lỗi này bằng cách nhấp vào bóng đèn màu đỏ. Không cần phải tìm phiên bản thực tế, chỉ cần để IDE tìm ra nó cho bạn. Và thêm google repo vào cấu hình maven.


0

Tôi đã nhận được báo lỗi tương tự và trong tôi trường hợp , lỗi đã được giải quyết khi tôi sửa lỗi bản dựng được liên kết với một biến thể bản dựng khác với bản hiện tôi đang xây dựng.

Tôi đang xây dựng phiên bản xây dựng mà tôi đang xem xét tốt và không có lỗi, nhưng cố gắng gỡ lỗi đã gây ra app:transformDexArchiveWithExternalLibsDexMergerForDebuglỗi. Khi tôi chuyển sang xây dựng phiên bản xây dựng khác, tôi đã phát hiện ra lỗi của mình trong quá trình xây dựng và đã sửa nó. Điều này dường như giải quyết được app:transformDexArchiveWithExternalLibsDexMergerForDebugvấn đề của tôi cho tất cả các biến thể bản dựng.

Lưu ý rằng lỗi này không nằm trong mô-đun bên ngoài được tham chiếu mà trong một tập hợp nguồn riêng biệt của một biến thể bản dựng đã tham chiếu đến mô-đun bên ngoài. Hy vọng điều đó hữu ích cho những người có thể gặp trường hợp tương tự như tôi!


0

Tôi đã hoàn thành và khắc phục sự cố này bằng cách chỉ thực hiện công việc này trong mã của mình

Mở -> build.gradle Thay đổi giá trị từ

compile 'com.google.code.gson:gson:2.6.1'

đến

compile 'com.google.code.gson:gson:2.8.2'

0

Để loại bỏ vấn đề Dex này, chỉ cần triển khai một phụ thuộc. Sự cố này xảy ra khi chúng tôi đang sử dụng nhiều dịch vụ khác nhau từ cùng một máy chủ. Giả sử chúng ta đang sử dụng quảng cáo và Firestore trong một dự án và cả hai đều có maven kho lưu trữ. vì vậy chúng ta cần gọi các dữ liệu khác nhau trên kho lưu trữ mà chúng ta cần phụ thuộc dex để triển khai. Bản cập nhật mới Sự phụ thuộc: -

 implementation 'com.android.support:multidex:1.0.3'

Tôi chắc chắn rằng nó sẽ giải quyết vấn đề của bạn vĩnh viễn


sự phụ thuộc của nó đưa nó vào gradle
Pradeep Sheoran

0
1) Vui lòng thêm multiDexEnabled true
2) nếu bạn gặp lỗi biên dịch, hãy kiểm tra thời tiết build.gradle cấp ứng dụng của bạn, các phụ thuộc giống nhau được triển khai với các phiên bản khác nhau.
3) Loại bỏ một nếu bạn tìm thấy các phụ thuộc giống nhau.

android {compileSdkVersion 28 defaultConfig {

    minSdkVersion 17
    targetSdkVersion 28
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    multiDexEnabled true
}
hy vọng nó hoạt động tốt :) Happy Coding

0

Cách dễ nhất để tránh loại lỗi này là:

-Thay đổi thư viện combilesdkversion giống như phiên dịch ứng dụng của bạn

-Thay đổi phiên bản supportLibrary của thư viện giống như build.gradle (ứng dụng) của bạn


0

Đây là những gì làm việc cho tôi. chuẩn bị sạch sẽ và chạy.

cordova clean android;
ionic cordova prepare andriod;
ionic cordova run andriod;

hy vọng nó giúp.



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.