繁体   English   中英

调试应用程序时出现Android Studio dexDebug错误

[英]Android Studio dexDebug error on debugging an app

昨天,当我尝试调试应用程序并在设备上运行它时,Gradle控制台在:mobile:dexDebug之后立即开始显示此错误:

AGPBI: {"kind":"SIMPLE","text":"UNEXPECTED TOP-LEVEL EXCEPTION:","position":{},"original":"UNEXPECTED TOP-LEVEL EXCEPTION:"}
AGPBI: {"kind":"SIMPLE","text":"com.android.dex.DexException: Multiple dex files define Lcom/parse/ParseFacebookUtils;","position":{},"original":"com.android.dex.DexException: Multiple dex files define Lcom/parse/ParseFacebookUtils;"}
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596)","position":{},"original":"\tat com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596)"}
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554)","position":{},"original":"\tat com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554)"}
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535)","position":{},"original":"\tat com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535)"}
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)","position":{},"original":"\tat com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)"}
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.merge.DexMerger.merge(DexMerger.java:189)","position":{},"original":"\tat com.android.dx.merge.DexMerger.merge(DexMerger.java:189)"}
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:502)","position":{},"original":"\tat com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:502)"}
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.command.dexer.Main.runMonoDex(Main.java:334)","position":{},"original":"\tat com.android.dx.command.dexer.Main.runMonoDex(Main.java:334)"}
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.command.dexer.Main.run(Main.java:277)","position":{},"original":"\tat com.android.dx.command.dexer.Main.run(Main.java:277)"}
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.command.dexer.Main.main(Main.java:245)","position":{},"original":"\tat com.android.dx.command.dexer.Main.main(Main.java:245)"}
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.command.Main.main(Main.java:106)","position":{},"original":"\tat com.android.dx.command.Main.main(Main.java:106)"}


 FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':mobile:dexDebug'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.8.0_11\bin\java.exe'' finished with non-zero exit value 2

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

我在这里做了一些研究,它似乎与build.gradle文件中的依赖关系有关。 我所有的SDK都是最新的。

build.gradle(模块:移动):

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion '23.0.0'

    defaultConfig {
        applicationId "com.intap.tof"
        minSdkVersion 14
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

repositories { mavenCentral() }

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    wearApp project(':wear')
    compile 'com.parse:parse-android:1.+'
    compile fileTree(include: 'achartengine-1.1.0.jar', dir: 'libs')
    compile 'com.android.support:appcompat-v7:23.0.1'
    compile 'com.google.android.gms:play-services:7.8.0'
    compile 'com.parse.bolts:bolts-android:1.+'
    compile 'com.facebook.android:facebook-android-sdk:4.0.0'
    compile 'com.android.support:cardview-v7:23.0.1'
    compile 'com.android.support:design:23.0.1'
    compile 'com.jjoe64:graphview:4.0.1'
}

com.android.dex.DexException:多个dex文件定义Lcom / parse / ParseFacebookUtils;“,” position“:{},”原始“:” com.android.dex.DexException:多个dex文件定义Lcom / parse / ParseFacebookUtils; “}

首先,在build.gradle部分中添加multidex

  1. 设置buildToolsVersion '23.0.1'
  2. 设置compile 'com.parse.bolts:bolts-android:1.2.1'

  3. 设置compile 'com.parse:parse-android:1.11.0'

  4. 更改您的Gradle构建配置以启用Multidex

  5. 清洁重建同步

修改您的应用Gradle构建文件配置,以包括支持库并启用multidex输出。

    android {
    compileSdkVersion 23
    buildToolsVersion '23.0.1'

    defaultConfig {
        ...
        minSdkVersion 14
        targetSdkVersion 23
        ...

        // Enabling multidex support.
        multiDexEnabled true
    }
    ...
}

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

有关详细信息,请阅读DexException

https://developer.android.com/intl/es/tools/building/multidex.html

因为应用程序已达到64k方法的限制,所以您将收到此异常。 因此,您可以按照其他答案中正确建议的方式在应用程序中启用multidex 但是,启用multidex会增加您的构建时间,在许多情况下,这不是可取的。

因此,我建议您对调试和发行版本使用不同的proguard文件(在调试版本中,请勿混淆变量和类名)。 在大多数情况下, Proguard将有助于克服此异常。 如果这不起作用,那么您将不得不使用multidex。

我解决了问题!
我切换回Parse SDK 1.9.3,突然工作了!

无论如何,谢谢你们试图帮助我解决这个问题。 非常好吃。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM