Android studio构建包含相同包的2个依赖项

时间:2015-12-25 18:31:09

标签: android android-studio gradle jar android-gradle

我在Android项目中有两个包作为依赖项:A和B,在build.gradle中定义如下:

dependencies {
    compile 'dependency-A'

    compile files('libs/dependency-B.jar')
}

我可以构建项目,但是当尝试运行它时,我收到以下错误:

  

:应用程序:compileDebugSources
  :应用:transformClassesWithDexForDebug
  意想不到的顶级例外:
  com.android.dex.DexException:多个dex文件定义Lcommon / package / in / both / Dependencies;
      在com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:579)
      在com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:535)
      在com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:517)
      在com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:164)
      在com.android.dx.merge.DexMerger.merge(DexMerger.java:188)
      在com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:504)
      在com.android.dx.command.dexer.Main.runMonoDex(Main.java:334)
      在com.android.dx.command.dexer.Main.run(Main.java:277)
      在com.android.dx.command.dexer.Main.main(Main.java:245)
      在com.android.dx.command.Main.main(Main.java:106)
  失败
  失败:构建失败,例外。
  *出了什么问题:
  任务':app:transformClassesWithDexForDebug'执行失败。

如何排除常见软件包或对其执行某些操作,以便它可以正确构建和运行?

我使用Android Studio 1.5.1,buildToolsVersion 23.0.2,com.android.tools.build:grad:1.5.0

1 个答案:

答案 0 :(得分:0)

我还没有找到简单易用的解决方案,但是这里有一种可能的解决方法(如果不禁止任何依赖项的反编译):

  1. dependency-A删除常见的包/类:解压缩.jar文件,删除文件,将剩余文件压缩回jar中;

  2. 用任何java反编译器反编译dependency-B,例如与this one;

  3. 添加经过反编译的dependency-B .java文件作为模块资源的一部分,或者作为单独的文件添加;

  4. 构建并运行项目。