Không thể hợp nhất dex


307

Tôi có Android Studio Beta. Tôi đã tạo một dự án mới bằng cách biên dịch các mô-đun cũ của mình nhưng khi tôi thử khởi chạy ứng dụng thì nó không khởi chạy với thông báo:

Error:Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.

com.android.builder.dexing.DexArchiveMergerException: Không thể hợp nhất dex

Nhưng tôi không biết làm thế nào để giải quyết lỗi này. Tôi đã googled này trong nhiều giờ nhưng không thành công.

Lớp dự án của tôi:

    // Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.0-beta6'
        classpath "io.realm:realm-gradle-plugin:3.7.1"
        classpath 'com.google.gms:google-services:3.1.0'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
        google()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

Lớp ứng dụng của tôi:

    apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    buildToolsVersion "26.0.1"
    defaultConfig {
        applicationId "parad0x.sk.onlyforyou"
        minSdkVersion 21
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        multiDexEnabled true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
        }
    }
    compileOptions {
        targetCompatibility 1.7
        sourceCompatibility 1.7
    }
    packagingOptions {
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE'
    }
    lintOptions {
        checkReleaseBuilds false
    }
    productFlavors {
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    //noinspection GradleCompatible
    compile 'com.android.support:appcompat-v7:26.0.0-alpha1'
    compile project(path: ':loginregisterview')


}

Và lớp mô-đun của tôi:

    apply plugin: 'com.android.library'
apply plugin: 'realm-android'

android {
    compileSdkVersion 26
    buildToolsVersion "26.0.1"

    defaultConfig {
        minSdkVersion 19
        targetSdkVersion 26
        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:appcompat-v7:26.0.2'
    compile 'com.android.support:support-v4:26.1.0'
    compile 'com.github.bumptech.glide:glide:4.0.0'
    testCompile 'junit:junit:4.12'
    compile project(path: ':parser')

}

Mô-đun thứ hai của tôi:

     apply plugin: 'com.android.library'
apply plugin: 'realm-android'

android {
    compileSdkVersion 26
    buildToolsVersion "26.0.1"
    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    }

    realm {
        syncEnabled = true
    }
    useLibrary 'org.apache.http.legacy'

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    productFlavors {
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile 'junit:junit:4.12'
    //  compile 'com.android.support:appcompat-v7:23.1.0'

    //   compile 'com.fasterxml.jackson.core:jackson-core:2.9.0'
 //   compile 'com.fasterxml.jackson.core:jackson-annotations:2.9.0'
 //   compile 'com.fasterxml.jackson.core:jackson-databind:2.9.0'
    compile 'com.google.code.gson:gson:2.6.2'
}

____________Phát hiện_________

Khi tôi không nhập mô-đun thứ hai (trình phân tích cú pháp), ứng dụng không gặp sự cố trên dex nhưng khi mô-đun không được nhập, ứng dụng không hoạt động. : D: D


6
Nếu bất cứ ai cũng gặp vấn đề tương tự trong phiên bản Android Studio 3.0 Ổn định, tôi thực sự khuyên bạn nên xem lại câu trả lời stackoverflow.com/questions/46949761/ và xem nó có thể giúp bạn không.
Bhavesh Patadiya

1
Tôi có cùng một vấn đề và tôi đã làm theo mọi phương pháp được đề cập trên trang này nhưng không giúp được tôi nên tôi đi đến lớp và giữ con trỏ trên mỗi thư viện để kiểm tra phiên bản mới của họ có sẵn hay không. những người có phiên bản mới vì vậy tôi đã cập nhật, đồng bộ hóa lớp và chạy. nó đã làm việc.
Shahzad Afridi

Câu trả lời:


293

Tôi đã có cùng một vấn đề khi tôi cập nhật từ com.google.android.gms:play-services:11.2.2đến com.google.android.gms:play-services:11.4.0. Điều này đã giải quyết nó cho tôi:

  1. dọn dẹp
  2. xây dựng lại

Bạn chỉ trì hoãn vấn đề thực sự với giải pháp đó. có lẽ ver 11.4.0 chứa ít phương thức hơn. Xem câu trả lời của tôi dưới đây. bạn sẽ gặp lỗi này trong lần phụ thuộc tiếp theo, bạn sẽ thêm tôi đoán
itzhar

2
Điều này giải quyết vấn đề của tôi, nơi multiDexEnabled truemột mình không
Yuri Brigance

28
cùng isse với com.google.android.gms: play-services-location: 11.6.0 ... đây không phải là một giải pháp hợp lệ
tại

3
Giải pháp này hiệu quả với tôi khi tôi gặp vấn đề tương thích khi sử dụng thư viện phân tích google. Trong AS xem khung điều hướng dự án Android là "Dự án", bạn sẽ thấy "Thư viện bên ngoài", nếu bạn mở rộng các thư viện bên ngoài, bạn sẽ thấy tất cả các lọ và mô-đun được sử dụng để biên dịch dự án. Nó sẽ giúp bạn xác định các kết hợp mô-đun không tương thích.
tức giận

3
Nếu mã trên không hoạt động trong trường hợp "compileSdkVersion 26", hãy thử điều này .. đi đến - build.gradle (Mô-đun: ứng dụng) - thêm "multiDexEnabled true" trong danh mục defaultConfig và bước cuối cùng vào Tệp | Cài đặt | Xây dựng, Thi công, Triển khai | Chạy ngay lập tức và thử bật / Tắt
Sumit Saxena

325

Tôi đã thử tất cả các cách trên và không ai trong số họ giúp đỡ. Cuối cùng, tôi tìm thấy công việc này cho tôi:

ứng dụng / build.gradle:

android {
    defaultConfig {
       multiDexEnabled true
    }
}

11
Cảm ơn. Tôi nghĩ vấn đề là hầu hết các câu trả lời không được tính đến bao gồm các tệp JAR từ các nguồn khác mà bạn không thể xây dựng lại. multiDex dường như cho phép kết hợp mã không tương thích.
Brendon Whateley

2
Giải pháp này hiệu quả với tôi, nhưng ngoài ra, tôi phải kích hoạt rõ ràng multidex cho API <= 21 developer.android.com/studio/build/multidex.html
hamou92

2
DEspite có liên quan nhiều hơn câu trả lời được chấp nhận Tôi vẫn nhận được thông báo "Không thể hợp nhất dex"
John

13
Không làm việc cho tôi. Với thay đổi này, tôi đã gặp một lỗi khác: Thực thi không thành công cho nhiệm vụ ': app: TransformClassWithMultidexlistForDebug
Atul

1
Có trong 5 giờ tôi đã ở với những câu trả lời hoàn toàn khác nhau. Nhưng bằng cách nào đó tôi nhận ra đó là vấn đề Multidex và đã hạ cánh ở đây. Tôi đã đúng Cảm ơn người đàn ông
sud007

59

Hãy chú ý đến Cảnh báo!

Đôi khi bạn chỉ cần loại bỏ các cảnh báolỗi sẽ tự động biến mất. Xem trường hợp đặc biệt dưới đây:


Tôi đã có hai phụ thuộc này trong build.gradletệp cấp mô-đun của mình :

implementation 'com.android.support:appcompat-v7:27.0.2'
implementation 'com.android.support:recyclerview-v7:27.0.2'

và Studio đã cảnh báo ( ngoài vấn đề sáp nhập dex ):

Tất cả các com.android.supportthư viện phải sử dụng cùng một đặc điểm kỹ thuật phiên bản (phiên bản trộn có thể dẫn đến sự cố thời gian chạy). Tìm thấy phiên bản 27.0.2, 21.0.3. Ví dụ bao gồm com.android.support:animated-vector-drawable:27.0.2com.android.support:support-v4:21.0.3

Vì vậy, tôi đã xác định rõ ràng phiên bản củacom.android.support:support-v4 (xem ở đây để biết chi tiết) và cả hai vấn đề (cảnh báo và một vấn đề liên quan đến sáp nhập dex) đã được giải quyết :

implementation 'com.android.support:support-v4:27.0.2'  // Added this line (according to above warning message)
implementation 'com.android.support:appcompat-v7:27.0.2'
implementation 'com.android.support:recyclerview-v7:27.0.2'

Xem bình luận dưới đây cho các tình huống tương tự khác.


1
Cảm ơn bạn, điều này đã khắc phục vấn đề cho tôi. Nguyên nhân ban đầu là do thêm eu.inloop: androidviewmodel: 1.3.4
lsrom

1
Chính xác, tôi chỉ ước rằng lỗi có thể chính xác hơn
Amin Keshavarzian

1
Cảm ơn rất nhiều. Tôi gặp vấn đề tương tự. Tôi đã sử dụng v26, cập nhật lên sdk 27 ​​và giải quyết vấn đề.
Johnny

2
Đây phải là câu trả lời chính xác. Các bản dựng của tôi đã ngừng hoạt động sau khi thêm một thư viện (airbnb / epoxy) có phụ thuộc vào support:design:26.1.0và tôi chưa có sự phụ thuộc đó. Phiên bản thư viện hỗ trợ khác của tôi là 27.1.0. Sau khi thêm support:designphụ thuộc với 27.1.0phiên bản, vấn đề của tôi đã được giải quyết.
alashow 18/03/18

2
Cảm ơn bạn. Bạn tiết kiệm ngày của tôi.
Nithinjith 23/03/18

37

Trong trường hợp của tôi, thật không may, cả giải pháp của Michel và Suragch đều không phù hợp với tôi.

Vì vậy, tôi đã giải quyết vấn đề này bằng cách làm như sau:

Trong gradle: 3.0 , cấu hình biên dịch hiện không được dùng nữa và nên được thay thế bằng cách thực hiện hoặc api . Để biết thêm thông tin bạn có thể đọc ở đây Bạn có thể đọc các tài liệu chính thức tại Gradle Build Tool

Cấu hình biên dịch vẫn tồn tại nhưng không nên được sử dụng vì nó sẽ không cung cấp các đảm bảo mà cấu hình api và triển khai cung cấp.

tốt hơn là sử dụng triển khai hoặc api thay vì biên dịch

chỉ cần thay thế biên dịch bằng cách triển khai , debugCompile bằng debugImcellenceation , testCompile bằng testImcellenceationandroidtestcompile bằng androidTestImcellenceation

Ví dụ: Thay vì điều này

compile 'com.android.support:appcompat-v7:26.0.2'
compile 'com.android.support:support-v4:26.1.0'
compile 'com.github.bumptech.glide:glide:4.0.0'

sử dụng như thế này

implementation 'com.android.support:appcompat-v7:26.0.2'
implementation 'com.android.support:support-v4:26.1.0'
implementation 'com.github.bumptech.glide:glide:4.0.0'

Sau đó

  • Xóa thư mục .gradle bên trong dự án của bạn (Lưu ý rằng, để xem .gradle, bạn cần chuyển sang chế độ xem "Dự án" trong trình điều hướng ở trên cùng bên trái)
  • Xóa tất cả các thư mục xây dựng và bộ đệm cache.
  • Từ menu Build, nhấn nút Clean Project .
  • Sau khi hoàn thành nhiệm vụ, nhấn nút Rebuild Project từ menu Build.

Hy vọng nó sẽ giúp!


2
Cảm ơn, tất cả những gì tôi phải làm là thay đổi biên dịch thành triển khai và nó được xây dựng thành công, không phải hoàn thành các bước khác. Quá trình xây dựng bắt đầu thất bại sau khi tôi cập nhật SDK Facebook
Shayno

2
Làm việc cho tôi - hiểu biết tại sao?
Alex

1
Thư mục cần xóa nên .gradlevà không./gradle
Gary Bak

1
Câu trả lời duy nhất thực sự có hiệu quả với tôi. Cảm ơn!
Michael Richardson

1
Cảm ơn, đó là câu trả lời tuyệt vời nhất. Nó nên ở trên đầu tìm kiếm. Đã làm cho tôi.
Nguy hiểm

27
  1. Xóa .gradlethư mục.

  2. Chạy lại ứng dụng của bạn.

Ghi chú

  • Thư mục .gradlenằm trong thư mục gốc của dự án của bạn. (Bạn có thể phải hiển thị các tệp ẩn trước.)
  • Tôi phải làm điều này mỗi lần tôi cập nhật mô-đun phụ thuộc bằng Android 3.0. (Các bản phát hành gần đây hơn của Android Studio 3 dường như đã giải quyết được vấn đề.)

4
điều này đã giúp tôi khi tôi cũng thực hiện Cache không hợp lệ và khởi động lại
Vasili Fedotov

Tôi đã không tin khi điều này đã khắc phục vấn đề của mình .. tôi đã thử cập nhật mọi thứ, xóa tất cả các từ khóa biên dịch, cập nhật một vài phiên bản ilb nghi ngờ .. khi cuối cùng tôi đã làm điều này, nó đã hoạt động ..
hanzolo

Bạn đã cứu mạng tôi! Cảm ơn
Masterfego

24

Xóa .gradletheo đề nghị của Suragch là không đủ cho tôi. Ngoài ra, tôi đã phải thực hiện một Build > Clean Project.

Lưu ý rằng, để xem .gradle, bạn cần chuyển sang chế độ xem "Dự án" trong bộ điều hướng ở trên cùng bên trái:

Chuyển sang chế độ xem dự án


23

Tôi đã thử mọi giải pháp khác, nhưng không ai làm việc cho tôi. Cuối cùng, tôi đã giải quyết nó bằng cách sử dụng cùng một phiên bản phụ thuộc bằng cách chỉnh sửa build.gradle. Tôi nghĩ vấn đề này xảy ra khi thêm thư viện vào lớp sử dụng phiên bản phụ thuộc khác nhau của thư viện hỗ trợ hoặc thư viện google.

Thêm mã sau vào tập tin lớp xây dựng của bạn. Sau đó cleanrebuilddự án.

ps: đó là giải pháp cũ đối với tôi vì vậy bạn nên sử dụng phiên bản cập nhật của các thư viện sau.

configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
    def requested = details.requested
    if (requested.group == 'com.android.support') {
        if (!requested.name.startsWith("multidex")) {
            details.useVersion '26.1.0'
        }
    } else if (requested.group == "com.google.android.gms") {
        details.useVersion '11.8.0'
        } else if (requested.group == "com.google.firebase") {
            details.useVersion '11.8.0'
          }
      }
}

5
đã thử tất cả các giải pháp khác, cuối cùng chỉ có điều này giúp: /
Ante

@Ali Gurelli Cảm ơn bạn rất nhiều, tôi đã thử nhiều giải pháp nhưng chỉ có công việc này thôi.
Bipin Bharti

Thanx Nhưng đối với tôi, tôi sử dụng chi tiết Phiên bản.useVersion '15 .0.0 '
Elsunhoty

Cảm ơn giải pháp. Vấn đề tương tự đã xảy ra với tôi. google tap và pay là 10.0.0 và phần còn lại tất cả các lib đều có trên phiên bản mới nhất
R World

Làm việc suôn sẻ Cảm ơn
Sankalp

14

nếu (1. Cố gắng làm sạch và xây dựng lại công việc) thì tốt

khác nếu (2. Cố gắng loại bỏ công việc gradle) thì tốt

other-> 3. Cố gắng thêm vào lớp.properies

android.enableD8 = false

other-> 4. Thêm multiDexEnabledtrue vào build.gradle của bạn

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

và thêm phụ thuộc

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

Nó có thể là cái đầu tiên hoạt động cho bạn và v.v. nhưng nó thực sự phụ thuộc vào bản chất vấn đề của bạn đối với tôi chẳng hạn

Tôi đã gặp lỗi khi tôi thêm thư viện này

implementation 'com.jjoe64:graphview:4.2.2'

và sau đó tôi phát hiện ra rằng tôi phải kiểm tra điều đó và tôi phải thêm cùng một phiên bản của các thư viện hỗ trợ. Vì vậy, tôi phải thử một phiên bản khác

compile 'com.jjoe64:graphview:4.2.1'

và nó khắc phục vấn đề. Vì vậy, hãy chú ý cho điều đó.


3
Cách hữu ích nhất cho vấn đề này. Một điều tôi muốn đề cập ở đây là, bạn có thể sử dụng ứng dụng 'gradlew: TransformDexArchiveWithExternalLibsDexMergerForDebug --stacktrace' để biết thêm chi tiết. Tôi cứu tôi, thấy tôi phải kích hoạt multidex. Hy vọng hữu ích.
gấu trúc

13

Trong trường hợp của tôi, vấn đề là do thư viện phòng:

compile 'android.arch.persistence.room:runtime:1.0.0-alpha1'

Thay đổi nó thành:

compile 'android.arch.persistence.room:runtime:1.0.0'

đã làm việc.


Cảm ơn rất nhiều, điều này đã giúp tôi rất nhiều!
Phil

Rất vui mừng khi tìm thấy câu trả lời này. Cảm ơn!
gọiOfCode

12

Chỉ cần thêm vào các giải pháp trên:

Đảm bảo rằng bạn không có các phụ thuộc trùng lặp trỏ đến các phiên bản khác nhau của chúng, ở nhiều nơi (hoặc thậm chí trong cùng một tệp).


Tôi nghĩ rằng điều này nên được kiểm tra trước khi thêm multiDexEnables đúng và thử các câu trả lời khác. Cảm ơn!
Alexanderr A

11

Xin chào Tôi có cùng một vấn đề đã thử hầu hết mọi thứ. Vì vậy, cuối cùng tôi đã giải quyết sau 6 giờ vật lộn bằng cách gỡ lỗi mọi thứ theo từng dòng.

classpath 'com.google.gms:google-services:3.0.0'

Google-services 3.0 Không hỗ trợ firebase với Studio 3.0 với playServiceVersion: 11.6.0 trở xuống.

implementation "com.google.firebase:firebase-messaging:$rootProject.ext.playServiceVersion"
implementation "com.google.firebase:firebase-core:$rootProject.ext.playServiceVersion"
implementation "com.firebase:firebase-jobdispatcher-with-gcm-dep:$rootProject.ext.jobdispatcherVersion"

Giải pháp :

Tôi đã thay đổi dịch vụ google thành

classpath 'com.google.gms:google-services:3.1.1'

Và nó hỗ trợ các dịch vụ căn cứ hỏa lực.

Hy vọng ai đó tiết kiệm thời gian của anh ấy / cô ấy.


1
Tôi có cùng một vấn đề Tôi đã sử dụng playServiceVersion khi triển khai 11.4.0 "com.google.firebase: firebase-core: 11.4.0" thay đổi nó thành triển khai "com.google.firebase: firebase-core: 11.6.2" đã sửa lỗi của tôi vấn đề . Vì vậy, vui lòng xác minh sự phụ thuộc phiên bản cho các lib khác nhau
durgeshtrivedi

9
  1. Kích hoạt

    defaultConfig {multiDexEnables true}

  2. Nếu bước 1 không hoạt động thì

    Đi đến cấu trúc dự án và tìm ra thư viện bên ngoài đang sử dụng một phiên bản khác. Nhấp đúp chuột vào nó và xóa tập tin jar của nó. Đóng dự án và mở lại android studio sẽ xây dựng lại dự án. Vấn đề nên biến mất.


+1 - Tôi đã có lib, rxjava và phụ thuộc của bên thứ 3 (13k dòng). Mắt tôi gần như bật ra khi tôi thấy phương pháp đếm.
snodnipper

6

Một trong những khả năng là: sự hiện diện của cùng một thư viện nhưng với các phiên bản khác nhau trong phần phụ thuộc .

Tôi gặp vấn đề này với các dòng sau trong tập tin gradle:

  • compile fileTree(include: ['*.jar'], dir: 'libs')
  • compile 'com.google.code.gson:gson:2.8.2'

Thư viện gson nằm trong thư mục libs của tôi nhưng với phiên bản trước. Tôi đã xóa gson-2.3.1.jarthư mục libs và mọi thứ trở lại bình thường.


gỡ bỏ compile fileTree(include: ['*.jar'], dir: 'libs')cố định cho tôi quá .. cảm ơn (y)
Dinuka Salwathura

5

Nếu lỗi này xuất hiện cho bạn sau khi bao gồm hỗ trợ kotlin và không có giải pháp nào khác hoạt động, hãy thử thay đổi phụ thuộc kotlin của mô-đun ứng dụng build.gradlethành:

implementation ("org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version") {
    exclude group: 'org.jetbrains', module: 'annotations'
}

Điều này hoạt động với tôi trên Android Studio 3.0 Beta 6. Xem câu trả lời này để được giải thích thêm.


Đúng, có vẻ như phần giới thiệu của Kotlin có thể phá vỡ bản dựng nếu các chú thích không được loại trừ.
Stoycho Andreev

Cảm ơn. Đây là bản sửa lỗi cho tôi. Tôi vật lộn 3 ngày để xác định vấn đề của mình.
Naveen Kumar M

Thay vào đó, hãy thử nâng cấp lên plugin Kotlin phiên bản 1.2.30 (vừa được phát hành). Bây giờ Instant Run cũng có thể được kích hoạt lại!
KTCO


5

[KHÔNG THỂ GIẢI QUYẾT DEX MERGE] Sau nhiều giờ chồng chất, tôi đã giải quyết "UNABLE TO MERGE DEX ERROR"

  1. Cập nhật tất cả các dòng com.android.support trong lớp của bạn lên v27.1.0

Nguyên nhân - Android đã cập nhật thư viện hỗ trợ lên v27.1.0, vì vậy bạn phải thay đổi tất cả các dòng hỗ trợ Android trong tệp lớp của bạn thành 27.1.0 từ 26.1.0

  1. Đảm bảo rằng phần kho lưu trữ bao gồm phần maven có điểm cuối " https://maven.google.com ". Ví dụ:

    allprojects {kho lưu trữ {jcenter () maven {url " https://maven.google.com "}}}

Nguyên nhân: - Android không thể cập nhật các thư viện hỗ trợ trong trình quản lý SDK và hiện tại, nó sử dụng maven.google.com để cập nhật, do đó bạn phải đưa nó vào để sử dụng các thư viện hỗ trợ 27.1.0

Sau khi thay đổi phiên bản: 1. Dự án sạch 2. Dự án xây dựng lại


4

thêm các lệnh dưới đây:

android {
...

    dexOptions {

        jumboMode true
        javaMaxHeapSize "4g"

    }
}

4

Cài đặt dịch vụ Google play (phiên bản mới nhất) + bao gồm

android {
    defaultConfig {
        multiDexEnabled true
        }
}

trong build.gradle đã giải quyết vấn đề cho tôi, đảm bảo dọn dẹp và xây dựng lại dự án!


3

Trong trường hợp của tôi, đó là gson-2.8.1.jar mà tôi đã thêm vào thư mục libs của dự án. Nhưng tài liệu tham khảo đã có sẵn bởi SDK. Vì vậy, không cần thiết phải thêm gson-2.8.1.jar vào thư mục libs.

Khi tôi lấy nó ra, dự án gson-2.8.1.jar sẽ biên dịch mà không gặp lỗi này.

Vì vậy, cố gắng sửa đổi thư mục libsphụ thuộc .


3

Tôi đồng ý với Chris-Jr. Nếu bạn đang sử dụng Firebase để nhúng quảng cáo AdMob của mình (hoặc thậm chí nếu bạn không), phân tích dịch vụ chơi bao gồm quảng cáo dịch vụ chơi ngay cả khi bạn không thêm phụ thuộc vào đó. Google rõ ràng đã mắc lỗi trong lần giới thiệu 11.4.0 của họ vì các phân tích bao gồm phiên bản 10.0.1 của quảng cáo, chứ không phải 11.4.0 (chuột trên gợi ý trong lớp cho thấy điều này).

Tôi đã thêm thủ công biên dịch 'com.google.android.gms: play-services-ads: 11.4.0' ở đầu hoạt động, nhưng chỉ sau khi tôi tắt Instant Run: http://stackoverflow.com/a353169716/530047

Vì vậy, nó hồi quy thành 10.0.1 hoặc thêm quảng cáo và tắt Instant Run. Đó là những gì tôi tìm thấy nếu nó giúp bất kỳ.


OP có đề cập đến Dịch vụ Play không?
IgorGanapolsky

Câu trả lời đã được phê duyệt. Nếu vấn đề này đang nổi lên mà không có kịch bản đó thì tôi không biết!
Jonathan

2

Tôi gặp phải vấn đề tương tự và tìm thấy lý do thực sự cho trường hợp của tôi. Trước đây, tôi cũng đã thử lại tất cả các câu trả lời trước đó, nhưng nó không giải quyết được vấn đề. Tôi có hai mô-đun trong dự án ứng dụng mặc của mình và build.gradle như sau

xây dựng mô-đun mặc.gradle:

implementation project(':common')
implementation files('libs/farmer-motion-1.0.jar')

build.gradle của mô-đun chung:

implementation files('libs/farmer-motion-1.0.jar')

Trước khi nâng cấp lên lớp 3.x, 'triển khai' đều là 'biên dịch'.

Tôi chạy gradlew với tùy chọn --stacktrace để lấy dấu vết ngăn xếp, bạn chỉ cần nhấp vào đây trên cửa sổ bảng điều khiển lớp khi vấn đề này phát sinh. Và thấy rằng sự phụ thuộc vào gói jar lặp đi lặp lại:

Caused by: com.android.dex.DexException: Multiple dex files define Lcom/farmer/motion/common/data/pojo/SportSummary$2;

Class SportSummary trong gói farmer-motion-1.0.jar, sau khi đọc hướng dẫn di chuyển chính thức , tôi đã thay đổi build.gradle của mình để làm theo:

xây dựng mô-đun mặc.gradle:

implementation project(':common')
// delete dependency implementation files('libs/farmer-motion-1.0.jar')

mô-đun chung 的 build.gradle:

api files('libs/farmer-motion-1.0.jar') // change implementation to api

Bây giờ mô-đun hao mòn sẽ có sự phụ thuộc của xuất nông-chuyển động-1.0.jar theo mô-đun chung. Nếu có không có sự phụ thuộc vào gói jar trong thời gian chạy , ' thực hiện ' phụ thuộc của gói jar cũng có thể được thay đổi để 'compileOnly' .


2

Tôi cũng đã có vấn đề.

Tôi đã có thể giải quyết bằng cách thay đổi compileSdkVersiontargetSdkVersionphiên bản mới nhất.


2

Đối với dự án của chúng tôi, chúng tôi vô tình thêm cùng một bình hai lần với tên khác nhau. Loại bỏ một trong số họ đã giải quyết vấn đề.


Điều này đã giải quyết vấn đề của tôi. Tôi đang xây dựng một dự án thư viện Android nội bộ và trong libsthư mục của nó , tôi có hai tệp jar, một trong số đó chỉ là bản sao lưu của cái kia nhưng có tên tệp khác.
hopia

2

Đây có thể không phải là vấn đề của bạn, nhưng tôi đã gặp lỗi này khi vô tình đưa hai thư viện giống hệt nhau (nhưng được đặt tên khác nhau) vào phần phụ thuộc {} của dự án.


1

Đối với tôi, nó đang cập nhật tin nhắn firebase trong app \ build.gradle:

compile 'com.google.firebase:firebase-messaging:10.0.1'

đến

compile 'com.google.firebase:firebase-messaging:11.4.2'

1

Một trong những nguyên nhân gốc có thể xảy ra: trùng lặp phụ thuộc tạm thời không được xử lý đúng khi nhập Android Studio cho các dự án đa mô-đun. Kiểm tra danh sách của bạn và loại bỏ chúng. Đối với tôi, bản sửa lỗi theo nghĩa đen là:

--- a/project/module/build.gradle
+++ b/project/module/build.gradle
@@ -21,5 +21,4 @@ android {
 dependencies {
     implementation project(':upstream-dependency-project')
     implementation 'com.android.support:support-v4:18.0.0'
-    implementation files('libs/slf4j-android-1.6.1-RC1.jar')
 }

1

Tôi tìm ra lý do của vấn đề này cho dự án của tôi. Tôi đã được thêm một phụ thuộc hai lần trong build.gradle . Một lần bằng cách thêm phụ thuộc và một lần nữa bằng cách thêm phụ thuộc jar:

biên dịch 'org.achartengine: achartengine: 1.2.0'
...
các tệp thực hiện ('../ achartengine-1.2.0.jar')

Sau khi loại bỏ vấn đề dòng đầu tiên được giải quyết.


1

Trong trường hợp các câu trả lời hàng đầu không có hiệu quả với bạn, vấn đề của bạn có thể là bạn có nhiều phụ thuộc phụ thuộc vào cùng một thư viện.

Dưới đây là một số mẹo gỡ lỗi. Trong mã mẫu này, com.google.code.findbugs:jsr305:3.0.0là thư viện vi phạm.

Luôn luôn làm sạch và xây dựng lại mỗi khi bạn sửa đổi để kiểm tra giải pháp của bạn!

  1. Xây dựng với --stacktracecờ trên để biết thêm chi tiết. Nó sẽ phàn nàn về một lớp, Google lớp đó để tìm thư viện. Đây là cách bạn có thể thiết lập studio Android để luôn chạy phân lớp với --stacktracecờ .

  2. Hãy xem qua Bảng điều khiển Gradle trong Android Studio View > Tool Windows > Gradle Consolesau khi xây dựng

  3. Kiểm tra sự phụ thuộc lặp đi lặp lại bằng cách chạy ./gradlew -q app:dependencies. Bạn có thể chạy lại cái này mỗi lần bạn sửa đổi build.gradle của mình.

  4. Trong build.gradle,

    android {
            ...
            configurations.all {
                resolutionStrategy {
                    // Force a particular version of the library 
                    // across all dependencies that have that dependency
                    force 'com.google.code.findbugs:jsr305:3.0.0'
                }
            }
    }
  5. Trong build.gradle,

    dependencies {
        ...
        implementation('com.google.auth:google-auth-library-oauth2-http:0.6.0') {
            // Exclude the library for this particular import
            exclude group: 'com.google.code.findbugs'
        }
    }
  6. Trong build.gradle,

    android {
        ...
        configurations.all {
            resolutionStrategy {
                // Completely exclude the library. Works for transitive
                // dependencies.
                exclude group: 'com.google.code.findbugs'
            }
        }
    }
  7. Nếu một số phụ thuộc của bạn nằm trong tệp jar, hãy mở tệp jar và xem liệu có bất kỳ tên lớp xung đột nào không. Nếu có, có lẽ bạn sẽ phải xây dựng lại các lọ với tên lớp mới hoặc nhìn vào bóng .

Một số cách đọc nền khác:


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

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

2
Bạn có thể giải thích?
sg7

Tôi cũng gặp vấn đề tương tự nhưng tôi nhận ra rằng giải quyết vấn đề của mình tại thời điểm đó nhưng trong các bản cập nhật trong tương lai, mọi thứ thực sự có thể thay đổi.
Eben Watts

1

Trong trường hợp của tôi, một thư viện gây ra vấn đề này, thư viện đã được thêm vào dự án thành công nhưng khi tôi chạy ứng dụng của mình thì nó hiển thị cho tôi lỗi này. Vì vậy, nếu điều này cũng xảy ra với bạn, bạn có thể vào github và kiểm tra các vấn đề hoặc nêu vấn đề mới. Nếu bạn không tìm thấy bất kỳ giải pháp nào liên quan đến thư viện, tôi khuyên bạn nên thay thế nó.

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.