Android - 无法将dex与Google数据库合并

时间:2018-01-08 03:00:44

标签: android google-sheets-api gdata android-multidex

我有这个运行良好的android项目。我的想法是,我将使用已经存在的Google表格作为我的应用程序数据库。我搜索并搜索,直到找到example。所以我添加了

  1. GDATA-客户1.0.jar
  2. GDATA客户端 - 间 - 1.0.jar
  3. GDATA核-1.0.jar
  4. GDATA电子表格-3.0.jar
  5. GDATA电子表格 - 间 - 3.0.jar
  6. 番石榴11.0.2.jar
  7. 然后出现了错误:

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

    java.lang.RuntimeException:java.lang.RuntimeException:com.android.builder.dexing.DexArchiveMergerException:无法合并dex

    所以我尝试使用

    multiDexEnabled true
    

    在我运行项目之前运行良好(成功的gradle)。

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

    java.io.IOException:不能写[E:\ AndroidStudioProjects \ Corporate Outcome Request System(CORS)\ app \ build \ intermediates \ multi-dex \ debug \ componentClasses.jar](Can'阅读[C:\ Users \ hp.gradle \ _caches \ modules-2 \ files-2.1 \ com.google.guava \ guava-jdk5 \ 17.0 \ 463f8378feba44df7ba7cd9272d01837dad62b36 \ guava-jdk5-17.0.jar(;;;;;; **。class)](重复的zip条目[guava-jdk5-17.0.jar:com / google / common / annotations / Beta.class]))

    这是我的build.gradle现在:

    apply plugin: 'com.android.application'
    
    android {
        compileSdkVersion 26
        defaultConfig {
            applicationId "com.YearZero.CORS"
            minSdkVersion 15
            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'
            }
        }
        configurations.all {
            resolutionStrategy.force 'com.google.code.findbugs:jsr305:1.3.9'
        }
    }
    
    dependencies {
        implementation fileTree(dir: 'libs', include: ['*.jar'])
        implementation 'com.android.support:appcompat-v7:26.1.0'
        implementation 'com.android.support.constraint:constraint-layout:1.0.2'
        implementation 'com.android.support:design:26.1.0'
        compile 'com.google.android.gms:play-services-auth:11.8.0'
        compile 'pub.devrel:easypermissions:0.3.0'
        compile 'com.android.support:multidex:1.0.2'
        compile('com.google.api-client:google-api-client-android:1.23.0') {
            exclude group: 'org.apache.httpcomponents'
        }
        compile('com.google.apis:google-api-services-sheets:v4-rev496-1.23.0') {
            exclude group: 'org.apache.httpcomponents'
        }
        testImplementation 'junit:junit:4.12'
        androidTestImplementation 'com.android.support.test:runner:1.0.1'
        androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
    }
    

    还有一些情况我得到 transformClassesWithMultidexlistForDebug transformClassesWithDexlistForDebug :P

2 个答案:

答案 0 :(得分:1)

以下是我发现的有关您的错误类型的内容。我举的例子类似于你的案例。

<强>解决方案

尝试将以下exclude group: 'com.google.guava'放入com.google.api-client:google-api-client-android:1.23.0或com.google.apis:google-api-services-sheets:v4 -rev496-1.23.0,看看会发生什么。

在某些情况下:

  1. 您的依赖项背后可能存在一些冲突,gradle可能不知道如何解决它们。例如,如果您的应用build.gradle包含相同依赖项的不同版本,例如一个依赖项使用play-services:11.6.0,另一个play-services:11.6.1 gradle可能不知道如何合并它们。另一个例子可能是'com.android.support:appcompat-v7:26.1.0,但你的设计 库可能正在使用旧版本,例如 'com.android.support:design:25.0.0'
  2. 在某些情况下,如果您使用的是包含旧版应用程序的模拟器/设备,并且您更改了应用程序build.gradle上的依赖关系,从而导致(步骤1)中提到的冲突。这里的简单解决方案是在您的设备上卸载并重新安装

答案 1 :(得分:0)

尝试一次: -

android {
      defaultConfig {
        multiDexEnabled true
        }
   }

可能会帮助你..