2017-11-08 37 views
5

Tôi đang cố gắng thêm "phòng" vào dự án của mình."Không thể hợp nhất dex" khi sử dụng phòng

Khi tôi cố gắng xây dựng một dự án, tôi nhận được một lỗi:

Error:Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'. java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex

Những gì tôi đã làm:

  1. sạch/Rebuild dự án
  2. tôi thêm "multiDexEnabled true" trong defaultConfig {}. Sau đó, tôi nhận được lỗi:

    Error:Execution failed for task ':app:transformClassesWithMultidexlistForDebug'. java.io.IOException: Can't write [C:\Users\user1\AndroidStudioProjects\git\mobile\app\build\intermediates\multi-dex\debug\componentClasses.jar] (Can't read [C:\Users\user1.gradle\caches\transforms-1\files-1.1\support-core-utils-26.1.0.aar\a6c34f6784b0b6bc5c2fc7a7815426da\jars\classes.jar(;;;;;;**.class)] (Duplicate zip entry [classes.jar:android/support/v4/content/PermissionChecker$PermissionResult.class]))

Nếu tôi loại bỏ các "phòng" từ dự án của tôi, đó là xây dựng mà không có lỗi.

Tôi đang sử dụng Android Studio 3, công cụ xây dựng gradle 3.0.0.

Đây là build.gradle tôi:

apply plugin: 'com.android.application' 
apply plugin: 'me.tatarka.retrolambda' 

buildscript { 
    repositories { 
     mavenCentral() 
    } 

    dependencies { 
     classpath 'me.tatarka:gradle-retrolambda:3.2.5' 
    } 
} 

repositories { 
    mavenCentral() 
} 

android { 
    compileSdkVersion 23 
    buildToolsVersion '26.0.2' 

    defaultConfig { 
     applicationId "trsnet.gtp2.com" 
     minSdkVersion 17 
     targetSdkVersion 23 
     multiDexEnabled true 
    } 

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

    compileOptions { 
     sourceCompatibility JavaVersion.VERSION_1_8 
     targetCompatibility JavaVersion.VERSION_1_8 
    } 

} 

dependencies { 

    compile files('libs/commons-codec-1.9.jar') 
    compile files('libs/ksoap2-android-assembly-3.0.0-jar-with- 
    dependencies.jar') 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:cardview-v7:23.2.1' 
    compile 'com.android.support:appcompat-v7:23.2.1' 
    compile 'com.android.support:design:23.2.1' 
    compile 'com.android.support.constraint:constraint-layout:+' 
    compile 'io.reactivex:rxandroid:1.2.1' 
    compile 'io.reactivex:rxjava:1.1.6' 
    compile 'com.jakewharton.rxbinding:rxbinding:0.4.0' 
    implementation 'android.arch.persistence.room:runtime:1.0.0' 
    annotationProcessor 'android.arch.persistence.room:compiler:1.0.0' 
} 
+0

Tôi đã sử dụng 'biên dịch 1.0.0-alpha', thay đổi thành' triển khai 1.0.0' đã khắc phục sự cố của tôi – faztp12

Trả lời

3

Tôi đã có vấn đề này quá và nó đã cho tôi nhiều thời gian để giải quyết, nhưng cuối cùng tôi đã nhận nó. ROOM sử dụng một số thư viện hỗ trợ-v4 vì vậy đây là lý do tại sao bạn nhận được lỗi có các mục nhập zip trùng lặp. Trong tình huống của tôi, ROOM đang sử dụng các thành phần từ một phiên bản cũ hơn so với những gì tôi cần. Vậy điều gì đã làm việc cho tôi (found here) sẽ bổ sung sau đây để cấp gốc của file Gradle:

configurations { 
    all*.exclude group: 'com.android.support', module: 'support-v4' 
} 

Những gì tôi thấy điều này là nó ngăn chặn các thư viện bao gồm bất kỳ thành phần hỗ trợ-v4, nhưng sau đó bạn phải tự bao gồm các thành phần cần thiết cho cả ROOM và bất kỳ thứ gì khác mà bạn có thể cần. Nếu bạn cần tìm chính xác thư viện nào là bản sao thì bạn có thể theo dõi these instructions để xem từng thư viện và phụ thuộc của nó.

Hơi không liên quan lưu ý: Tính đến Gradle 3.0 bằng cách sử dụng cấu hình compile bị phản đối và cần được thay thế với implementation hoặc api, một lời giải thích đẹp có thể được tìm thấy here.

Các vấn đề liên quan