【问题标题】:Android studio Unexpected Top Level exceptionAndroid工作室意外的顶级异常
【发布时间】:2015-06-29 18:01:11
【问题描述】:

我遵循了这个问题的指南:Android Studio - UNEXPECTED TOP-LEVEL EXCEPTION:

但还是无法正确编译,我试过寻找重复的条目但找不到,错误如下

Error:Execution failed for task ':app:dexDebug'. com.android.ide.common.internal.LoggedErrorException: Failed to run command:
    C:\Users\ShadowFox\Android-sdk\build-tools\21.1.1\dx.bat --dex --output C:\Work\SystemMonitor - version 4.0\app\build\intermediates\dex\debug --input-list=C:\Work\SystemMonitor - version 4.0\app\build\intermediates\tmp\dex\debug\inputList.txt
Error Code:
    2
Output:
    UNEXPECTED TOP-LEVEL EXCEPTION:
    com.android.dex.DexException: Multiple dex files define Landroid/support/v7/app/ActionBar$Callback;
        at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596)
        at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554)
        at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535)
        at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)
        at com.android.dx.merge.DexMerger.merge(DexMerger.java:189)
        at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454)
        at com.android.dx.command.dexer.Main.runMonoDex(Main.java:302)
        at com.android.dx.command.dexer.Main.run(Main.java:245)
        at com.android.dx.command.dexer.Main.main(Main.java:214)
        at com.android.dx.command.Main.main(Main.java:106)

然后对于我的 Module:app build.gradle 我有

    apply plugin: 'com.android.application'

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.1"

    defaultConfig {
       applicationId "edu.fiu.cis.visa.systemmonitor"
        minSdkVersion 19
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.2.0'
    compile files('libs/dropbox-android-sdk-1.6.3.jar')
    compile files('libs/httpmime-4.0.3.jar')
    compile files('libs/json_simple-1.1.jar')
    compile project(":libs:AndroidCommon")
}

而我图书馆的build.gradle如下

apply plugin: 'com.android.library'

dependencies {
    compile 'com.android.support:support-v4:21.0.3'
}

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"

    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 22
    }

 >   sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            res.srcDirs = ['res']
        }
    }

    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        compile files('libs/gson-2.2.2.jar')
        compile files('libs/jackson-all-1.9.11.jar')
        compile files('libs/RootTools-3.4.jar')
    }
} 

【问题讨论】:

  • Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompatIcs您的依赖项似乎存在冲突。该消息意味着您对此类有多个定义,并且系统不知道可以选择哪一个。请向我们展示gradle.build 文件
  • 你能发布你的 build.gradle 吗?
  • 只需编辑 build.grade
  • @Eddi3 ,它的格式不正确。它造成了很多混乱
  • 如何正确格式化?我尝试使用框中的注释,然后直接从 android studio 控制台复制并粘贴,但它弄乱了缩进

标签: java android android-studio


【解决方案1】:

com.android.support:appcompat-v7 被两次获取。删除第一个。

您获取库,然后您的库的 build.gradle 再次获取它

【讨论】:

  • 你确定吗?因为我注释掉了一个,如果你看到它,它后面有 // 所以它被注释掉了
  • 已编辑,所以没有人会感到困惑,这就是我现在所拥有的
  • 确保在文件上点击Save 以便文件系统更新它,同时运行gradle --refresh-dependecies 以清理缓存并重新获取依赖项。
  • Ok, so in the latest version of Android Studio 0.1.3, they've added a Gradle project refresh button next to the other Android specific buttons in the toolbar. Make changes manually to the build.gradle files and settings.gradle and then click this button. It should configure and refresh your project settings based on the gradle files. android studio中有一个按钮可以刷新gradle依赖。找到它并点击它。
  • 是的,我已经这样做了,但它仍然给我这个编译错误
【解决方案2】:

试试这个

app:build.gradle

defaultConfig {
        applicationId "edu.fiu.cis.visa.systemmonitor"
        minSdkVersion 19
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
        // Enabling multidex support.
        multiDexEnabled true
         }

并将其放入 app:build.gradle 文件中

android {
    packagingOptions {
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/LICENSE.txt'
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-07
    • 2015-08-29
    • 2014-11-04
    • 1970-01-01
    • 1970-01-01
    • 2015-04-04
    • 1970-01-01
    相关资源
    最近更新 更多