【问题标题】:Android Studio: Multiple dex files define Lcom/sun/activation/registries/LineTokenizer;Android Studio:多个dex文件定义Lcom/sun/activation/registries/LineTokenizer;
【发布时间】:2015-06-16 20:12:03
【问题描述】:

在尝试构建我的项目时收到此异常。已经四处寻找答案,但大多数情况似乎与我的不同。

其他解决方案包括清除临时文件或进行 gradle clean。这确实暂时解决了这个问题,但它在几次构建后再次出现。如果项目包含库的多个副本,则可能出现此问题的另一种方式。我已经搜索了我的项目,并且只有一个 activation.jar 实例位于我的 libs 目录中。大多数其他解决方案似乎都涉及更改 Eclipse 中的构建路径,但我的问题发生在 Android Studio 0.5.8 上。我正在使用 Java 1.7。

Gradle 控制台

意外的顶级异常:com.android.dex.DexException: 多个dex文件定义 Lcom/sun/activation/registries/LineTokenizer; 在 com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:594) 在 com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:552) 在 com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:533) 在 com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:170) 在 com.android.dx.merge.DexMerger.merge(DexMerger.java:188) 在 com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:439) 在 com.android.dx.command.dexer.Main.runMonoDex(Main.java:287) 在 com.android.dx.command.dexer.Main.run(Main.java:230) 在 com.android.dx.command.dexer.Main.main(Main.java:199) 在 com.android.dx.command.Main.main(Main.java:103)

库目录中的库:

  • activation.jar
  • additionnal.jar
  • androidplot-core-0.5.1.jar
  • annotations.jar
  • DatawindAdsSdk-2.0.jar
  • jpct_ae.jar
  • jsr305-1.3.9.jar
  • libGoogleAnalyticsV2.jar
  • mail.jar
  • twitter4j-core-3.0.5.jar

依赖关系: 注意 - ":android-cropimage" 在 build.gradle 中没有任何依赖关系

主模块:

dependencies {
    //Library Projects
    compile project(':android-cropimage')
    compile project(':facebook')

    //Android SDK Libraries
    //This library requires "Google Play Services" and "Google Repository" to be downloaded via SDK Manager.
    compile 'com.google.android.gms:play-services:4.4.52'

    //Third Party
    compile fileTree(dir: 'libs', include: '*.jar')
    compile 'com.github.chrisbanes.actionbarpulltorefresh:extra-abs:+'
    compile 'com.jakewharton:butterknife:4.0.1'
    compile 'com.j256.ormlite:ormlite-core:4.46'
    compile 'com.j256.ormlite:ormlite-android:4.46'
    compile 'net.hockeyapp.android:HockeySDK:3.0.1'
    compile 'org.apache.httpcomponents:httpmime:4.2.5'
    compile 'com.viewpagerindicator:library:2.4.1@aar'
    compile 'com.squareup.picasso:picasso:2.2.0'
    compile 'com.mcxiaoke.volley:library:1.0.+'
    compile 'org.msgpack:msgpack:0.6.11'
}

Facebook 模块:

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

【问题讨论】:

  • “我已经搜索了我的项目,并且只有一个 activation.jar 实例位于我的 libs 目录中”——您还有哪些其他依赖项?例如,您是否从 Maven Central 引用任何 JAR 或 AAR?
  • @CommonsWare 我已经添加了我的依赖项和库内容。

标签: android gradle android-studio


【解决方案1】:

原来这是由于版本 0.10.2 (https://groups.google.com/forum/#!topic/adt-dev/6KbhReCE_fo) 上 Android Gradle 插件的增量 dex 选项存在错误。从我的 build.gradle 文件中删除以下内容解决了这个问题:

android {
    dexOptions {
        incremental true
    }
}

【讨论】:

  • 这个解决方案似乎让 assembleDebug 和 assembleRelease 很慢。我建议在你的 gradle 文件中使用 exclude。见stackoverflow.com/a/21100040/1481408
  • @DeividiCavarzan 谢谢!
【解决方案2】:

正如@Marepork 所说,gradle 存在一个尚未修复的错误

如果您仍然想使用增量构建,您可以随时使用构建变体,并且对于调试使用 multidex 并发布 proguard

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-01
    • 2018-01-15
    • 2017-08-14
    • 1970-01-01
    • 1970-01-01
    • 2014-05-22
    • 2013-03-20
    相关资源
    最近更新 更多