【问题标题】:Unexpected Top-Level Exception in AndroidAndroid 中的意外顶级异常
【发布时间】:2015-06-21 11:27:30
【问题描述】:

我目前正在 Android Studio 中开发一个 Android 应用程序。我已将两个模块导入应用程序。下面的列表显示了项目的结构和我在应用程序中拥有的模块:

  1. Gradle 项目(youtube应用程序)
  2. 模块 #1 Gradle(YT SDK 字符串库)
  3. App Gradle(应用)
  4. 模块 #2 Gradle (vIMEOSDKStringLibrary)

当我尝试运行该应用程序时,我收到以下消息 gradle build,这显然显示了“意外顶级”异常:

输出: 意外的顶级异常: com.android.dex.DexException:多个dex文件定义LA$1; 在 com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596) 在 com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554) 在 com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535) 在 com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171) 在 com.android.dx.merge.DexMerger.merge(DexMerger.java:189) 在 com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454) 在 com.android.dx.command.dexer.Main.runMonoDex(Main.java:303) 在 com.android.dx.command.dexer.Main.run(Main.java:246) 在 com.android.dx.command.dexer.Main.main(Main.java:215) 在 com.android.dx.command.Main.main(Main.java:106)

我已阅读有关该异常的信息。而且它是由库的重复版本引起的,我试图检查项目的 gradle 文件但无法修复它。我会一一列出gradle文件:

1) Gradle 项目(youtube应用程序)

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.0.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

2) Module #1 Gradle(YT SDK 字符串库)

apply plugin: 'com.android.library'

android {
    compileSdkVersion 22
    buildToolsVersion "21.1.2"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 19
    }

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

dependencies {
    compile files('libs/jsoup-1.7.3.jar')
    compile files('libs/mobilecore.jar')
    compile files('libs/vimeo_m_1_0_0_1.jar')
}

3) App Gradle(应用程序)

apply plugin: 'com.android.application'

android {
    compileSdkVersion 22
    buildToolsVersion '21.1.2'
    defaultConfig {
        applicationId "com.me.thats.youtubeappliction"
        minSdkVersion 15
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    productFlavors {
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:22.+'

    compile 'com.melnykov:floatingactionbutton:1.2.0'
    compile 'com.squareup.picasso:picasso:2.5.2'
    compile project(':YT SDK String Library')
    compile project(':vIMEOSDKStringLibrary')

}

4) 模块 #2 Gradle (vIMEOSDKStringLibrary)

apply plugin: 'com.android.library'

android {
    compileSdkVersion 20
    buildToolsVersion "19.1.0"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 19
    }

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

dependencies {
    compile files('libs/jsoup-1.7.3.jar')
    compile files('libs/mobilecore.jar')
    compile files('libs/vimeo_m_1_0_0_1.jar')
}

=========================

已编辑:

我刚刚运行了 Gradle 命令“:app:androidDependencies”来获取项目的依赖树。有人可以告诉我关于 Gradle 命令“:app:androidDependencies”的输出是否有什么可做的

    10:52:36 PM: Executing external task ':app:androidDependencies'...
:app:androidDependencies
debug
+--- LOCAL: YouTubeAndroidPlayerApi.jar
+--- com.android.support:appcompat-v7:22.1.1
|    \--- com.android.support:support-v4:22.1.1
|         \--- LOCAL: internal_impl-22.1.1.jar
+--- com.melnykov:floatingactionbutton:1.2.0
|    \--- com.android.support:recyclerview-v7:21.0.2
|         \--- com.android.support:support-v4:22.1.1
|              \--- LOCAL: internal_impl-22.1.1.jar
+--- youtubeappliction:YT SDK String Library:unspecified
|    \--- LOCAL: ytsdk_4_0_M.jar
\--- youtubeappliction:vIMEOSDKStringLibrary:unspecified
     +--- LOCAL: jsoup-1.7.3.jar
     +--- LOCAL: mobilecore.jar
     \--- LOCAL: vimeo_m_1_0_0_1.jar

debugTest
No dependencies

release
+--- LOCAL: YouTubeAndroidPlayerApi.jar
+--- com.android.support:appcompat-v7:22.1.1
|    \--- com.android.support:support-v4:22.1.1
|         \--- LOCAL: internal_impl-22.1.1.jar
+--- com.melnykov:floatingactionbutton:1.2.0
|    \--- com.android.support:recyclerview-v7:21.0.2
|         \--- com.android.support:support-v4:22.1.1
|              \--- LOCAL: internal_impl-22.1.1.jar
+--- youtubeappliction:YT SDK String Library:unspecified
|    \--- LOCAL: ytsdk_4_0_M.jar
\--- youtubeappliction:vIMEOSDKStringLibrary:unspecified
     +--- LOCAL: jsoup-1.7.3.jar
     +--- LOCAL: mobilecore.jar
     \--- LOCAL: vimeo_m_1_0_0_1.jar

BUILD SUCCESSFUL

Total time: 3.448 secs
10:52:40 PM: External task execution finished ':app:androidDependencies'.

注意:当我导入模块 #2 时会出现此问题。当我删除它时,一切都很好。

提前致谢

【问题讨论】:

    标签: android android-studio android-gradle-plugin


    【解决方案1】:

    删除最近的 android studio 插件并重新安装,这在大多数情况下都有效

    【讨论】:

    • 项目编译得很好,正如我在帖子中所说的那样。但是,当我尝试导入另一个模块时,我得到了那个异常。我知道这是因为项目中有重复的库,无论如何,除了列出项目依赖项的“:app:dependencies”Gradle 命令的输出之外,我还包含了所有 build.gradle 文件。请告诉我是什么问题以及如何解决它。谢谢。
    【解决方案2】:

    就我而言,在您的依赖项中,您拥有不同版本的相同库。
    1) 运行 Gradle :app:dependencies 以查看您的项目和每个模块的依赖关系树
    2)检查依赖列表并找到重复的库,检查它们的版本
    3)如果你发现一些不同版本的库,更新依赖以确保你在项目的任何地方都有相同版本的库。

    我刚刚发现您的模块 2 中有以下构建配置
    compileSdkVersion 20 buildToolsVersion "19.1.0"

    尝试将其更改为模块 1 配置:

    compileSdkVersion 22 buildToolsVersion "21.1.2"

    【讨论】:

    • 我刚刚运行了 Gradle 命令行 ":app:dependencies",并且我编辑了原始帖子并包含了该命令的输出。您能否告诉我导致该异常的错误在哪里。以及如何解决?
    • @Androider 您是否在项目的顶层执行了 :app:dependencies ?我没有看到底层项目的依赖树(YouTube + Vimeo SDK)
    • 我已经编辑了原帖。我运行一个名为“:app:androidDependencies”而不是“”:app:dependencies”的Gradle命令行可以吗?我在“youtubeapplication”的根目录上运行它。告诉我我应该得到什么?谢谢
    • 我已将其更改为Module 1配置,但同样的问题仍然存在,抛出了“顶级异常”。我想这与模块中的库有关。您还有其他可以解决此问题的建议吗?
    猜你喜欢
    • 1970-01-01
    • 2015-04-04
    • 1970-01-01
    • 2015-09-07
    • 2015-08-29
    • 2014-11-04
    • 1970-01-01
    • 2016-01-31
    • 1970-01-01
    相关资源
    最近更新 更多