app:Android Studio 3.0.1中的transformDexArchiveWithExternalLibsDexMergerForDebug

时间:2018-03-13 11:16:34

标签: android android-gradle dex appium-android

消息Gradle build:

错误:任务执行失败':app:transformDexArchiveWithExternalLibsDexMergerForDebug'。

  

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

以下是gradle构建文件:

apply plugin: 'com.android.application'

    android {

        compileSdkVersion 26
        defaultConfig {

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

    dependencies {

        implementation fileTree(include: ['*.jar'], dir: 'libs')
        implementation 'com.android.support:appcompat-v7:26.1.0'
        implementation 'com.android.support.constraint:constraint-layout:1.0.2'
        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'
        implementation files('libs/bsh-core-2.0b4.jar')
        implementation files('libs/selenium-java-2.3.0.jar')
        implementation files('libs/selenium-remote-driver-3.0.0.jar')
        // https://mvnrepository.com/artifact/io.appium/java-client
        implementation  group: 'io.appium', name: 'java-client', version: '5.0.4'

    }

6 个答案:

答案 0 :(得分:0)

在“build.gradle(Module:app)”文件中尝试此操作:

android {
    defaultConfig 
    {
        multiDexEnabled true
    }
}

答案 1 :(得分:0)

此错误是通用错误,可能是由许多原因引起的

  

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

首先,您需要知道遇到什么错误。因此,您有两种选择:

  • CMD:转到android工作区,然后放入 gradlew installDebug --stacktrace (可选--info --debug)
  • 运行或构建项目:转到“文件”>“设置”>“构建,执行,部署”>“编译器”,然后在命令行选项中编写:-stacktrace --debug < / li>

接下来,您需要转到原因原因部分(最后一次,因为u可能有多个错误)。

如果您有:

  

原因:com.android.dex.DexIndexOverflowException:方法ID不在[0,0xffff]中:65536

然后,您需要像前面所说的评论一样放置它,但是如果您的mindSdkVersion> = 21

tap(myMobileElement);

如果您的mindSdkVersion <21,您还需要输入此

android {
    defaultConfig 
    {
        multiDexEnabled true
    }
}

更多信息here

答案 2 :(得分:0)

就我而言,问题是重复的软件包。我使用了react-native链接,但该应用程序无法识别出已链接的软件包,因此重复了这些软件包。

重复的软件包在MainApplication.java中生成-导入和类初始化。

还要检查settings.gradle和build.gradle / app-可能有重复的软件包也会破坏您的应用程序。

答案 3 :(得分:0)

在您的gradle中添加两条重要的代码:multidex易用性和实现。

android {
    defaultConfig {
        ...
        minSdkVersion 15 
        targetSdkVersion 28
        multiDexEnabled true
    }
    ...
}
dependencies {
     implementation 'com.android.support:multidex:1.0.3'  
  }

答案 4 :(得分:0)

我在使用 react-native 和 android 4.4 kit-kat 时遇到了这个问题,不仅我必须添加:

android {
    defaultConfig {
        ...
        minSdkVersion 15 
        targetSdkVersion 28
        multiDexEnabled true
        ...
    }
    
}
dependencies {
     implementation 'com.android.support:multidex:2.0.1'  
  }

但也必须添加到我的 MainAplication.java 中:

import androidx.multidex.MultiDexApplication; // <-- THIS IMPORT

并改变:

public class MainApplication extends Application implements ReactApplication

到:

public class MainApplication extends MultiDexApplication implements ReactApplication

您可以在这里找到更多信息: https://developer.android.com/studio/build/multidex

答案 5 :(得分:-1)

我有一个类似的问题,这就是原因:

  

java.lang.RuntimeException:   com.android.builder.dexing.DexArchiveMergerException:时出错   合并dex归档文件:

     

原因:   com.android.builder.dexing.DexArchiveMergerException:时出错   合并dex归档文件:在上了解如何解决该问题   https://developer.android.com/studio/build/dependencies#duplicate_classes。   程序类型已经存在:org.apache.http.HeaderElementIterator

     

原因:com.android.tools.r8.utils.AbortException:   错误:程序类型已存在:   org.apache.http.HeaderElementIterator