多DEX文件试图导入谷歌地图为谷歌地图项目时定义的Andr​​oid Studio错误 [英] Multiple dex files define Android studio error when trying to import Google Maps into Google Maps project

查看:163
本文介绍了多DEX文件试图导入谷歌地图为谷歌地图项目时定义的Andr​​oid Studio错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一些问题的最新版Android工作室,拥有一个Facebook SDK合并(仅用于登录)和谷歌地图API。

我已经成立了工作室的Andr​​oid与Facebook的整合,工作正常的项目。但是,我的一个同事创建了谷歌地图的一部分,这我试图复制粘贴/到我的项目。我已经设置了它像<一个href=\"https://developers.google.com/maps/documentation/android/start#getting_the_google_maps_android_api_v2\"相对=nofollow>谷歌文档告诉我。所以这不是问题。

我只具有Facebook的图书馆我的项目,build.cradle文件与build.cradle问题,如果我是正确的。该错误是:


  

意外顶级例外:
  com.android.dex.DexException:多DEX文件定义Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;
      在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)


  
  

失败。


  
  

失败:建立失败,一个异常


  
  

      
  • 出了什么问题:
      执行失败的任务:应用程序:dexDebug。
      com.android.ide.common.internal.LoggedErrorException:无法运行命令:
      C:\\ Program Files文件\\ Android的工作室\\ SDK \\集结TOOLS \\ Android的4.4.2 \\ dx.bat --dex --output D:\\阿明多\\ Android的studioProjects \\ Project4 \\程序\\编译\\ DEX \\调试D: \\阿明多\\ Android的studioProjects \\ Project4 \\程序\\编译\\类\\调试D:\\阿明多\\ Android的studioProjects \\ Project4 \\程序\\编译\\依赖缓存\\调试D:\\阿明多\\ Android版studioProjects\\Project4\\app\\build\\$p$p-dexed\\debug\\android-support-v13-f0554868bfbee0fc4abfdc11fd962734ae0c6d5f.jar D:\\阿明多\\ Android版studioProjects\\Project4\\app\\build\\$p$p-dexed\\debug\\android-support-v4-16277ee73bd8328d9fa6b95c79f131076fa8f4be.jar D:\\阿明多\\ Android版studioProjects\\Project4\\app\\build\\$p$p-dexed\\debug\\bolts-714d8ee0ce6246f4109e078b8cded1f42aea8693.jar D:\\阿明多\\ Android版studioProjects\\Project4\\app\\build\\$p$p-dexed\\debug\\classes-291c4de37af2df287d3f0bde38005eb4ecb484f4.jar D:\\阿明多\\ Android版studioProjects\\Project4\\app\\build\\$p$p-dexed\\debug\\classes-82c2a48def34cb7b1f99f973c27e1ef8562b4177.jar D:\\阿明多\\ Android版studioProjects\\Project4\\app\\build\\$p$p-dexed\\debug\\support-v4-19.0.1-9046a2105fe8ed5a830061a0f501bb9eb2dfd6b0.jar
      错误code:
      2
      输出:

  •   

 意外顶级例外:
com.android.dex.DexException:多DEX文件定义Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;
    在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)

我在我的摇篮文件的依赖性正在寻找这样的:
项目的build.cradle:(请注意,从主体工程的库文件夹中是进口的,例如库/ Facebook的


  

依赖性{
      编译文件树(导演:'库',包括:['的* .jar'])结果
      编制项目(':库:Facebook的)结果
      编译com.google.android.gms:发挥服务:+'结果
  }


Facebook的build.cradle:


  

依赖性{
      编译文件树(导演:'库',包括:['的* .jar'])结果
      编译文件(库/ b​​olts.jar')结果
      编译文件(库/ Android的支持 - v4.jar')结果
  }


该错误只发生在我加入编译com.google.android.gms:发挥服务:+到项目的摇篮

我已经试过几乎所有关于这个话题就到这里已经还试图导入相同的lib两个发祥地的。任何想法?

EDIT1:
试了一下斯科特说。但我相信它是由它仍然有2次Android的支持所致。采用最新的3.14.1的Facebook SDK。

EDIT2:
Facebook的构建摇篮更改depency:

编译 - 类路径编制的主要来源
+ --- Project4.libraries:Facebook的:未指定结果
    | \\ --- com.android.support:support-v13:13.0.+ - &GT; 13.0.0
    | \\ --- com.android.support:support-v4:13.0.0 - &GT; 19.0.1
    \\ --- com.google.android.gms:发挥服务:+ - &GT; 52年4月4日
         \\ --- com.android.support:support-v4:19.0.1

因此​​,它看起来像Facebook仍然在使用V4之下。

EDIT3:
注释后,再次改变了buildToolsVersion到19.0.1的两个版本。也改变facebook.cradle 编译com.android.support:support-v4:19.0.1

终端现在提供我这个:
+ --- Project4.libraries:Facebook的:未指定结果
    | \\ --- com.android.support:support-v4:19.0.1
    \\ --- com.google.android.gms:播放服务:52年4月4日
         \\ --- com.android.support:support-v4:19.0.1

所以我猜想,现在是正确的,但我仍然收到同样的错误。这是完全错误日志(我认为这是和以前一样,但只是检查墙壁)。

最后,也是最后编辑:固定
我的应用程序build.cradle:
{相关性
    编译com.google.android.gms:游戏服务:52年4月4日
    编译文件树(包括:['的* .jar'],DIR:库)
    编译文件(构建/库/解析-1.5.1.jar')
    编制项目(':库:Facebook的)
}

我的Facebook的lib build.cradle:
{相关性
    编译com.google.android.gms:游戏服务:52年4月4日
    编译文件树(包括:['的* .jar'],DIR:库)
    编译文件(构建/库/解析-1.5.1.jar')
}

要解决这个问题我不得不导入播放服务为 BOTH 库,DERP


解决方案

只需导入播放服务进两个 build.cradle文件编译<$ C $固定它C> com.google.android.gms:播放服务:52年4月4日

I'm having some problems with the latest version of Android studio, combined with a Facebook SDK (used only for logging in) and the Google Maps API.

I've set up a project in Android studio with the Facebook integration which works fine. But a colleague of mine created the Google Maps part, which I am trying to copy/paste into my project. I've set up it like the Google documentation tells me to. So that's not the problem.

I am only having problems with the build.cradle from my project and build.cradle file of the facebook library if I'm correct. The error is:

UNEXPECTED TOP-LEVEL EXCEPTION: com.android.dex.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl; at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:594) at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:552) at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:533) at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:170) at com.android.dx.merge.DexMerger.merge(DexMerger.java:188) at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:439) at com.android.dx.command.dexer.Main.runMonoDex(Main.java:287) at com.android.dx.command.dexer.Main.run(Main.java:230) at com.android.dx.command.dexer.Main.main(Main.java:199) at com.android.dx.command.Main.main(Main.java:103)

FAILED

FAILURE: Build failed with an exception.

  • What went wrong: Execution failed for task ':app:dexDebug'. com.android.ide.common.internal.LoggedErrorException: Failed to run command: C:\Program Files\android-studio\sdk\build-tools\android-4.4.2\dx.bat --dex --output D:\Armindo\Android studioProjects\Project4\app\build\dex\debug D:\Armindo\Android studioProjects\Project4\app\build\classes\debug D:\Armindo\Android studioProjects\Project4\app\build\dependency-cache\debug D:\Armindo\Android studioProjects\Project4\app\build\pre-dexed\debug\android-support-v13-f0554868bfbee0fc4abfdc11fd962734ae0c6d5f.jar D:\Armindo\Android studioProjects\Project4\app\build\pre-dexed\debug\android-support-v4-16277ee73bd8328d9fa6b95c79f131076fa8f4be.jar D:\Armindo\Android studioProjects\Project4\app\build\pre-dexed\debug\bolts-714d8ee0ce6246f4109e078b8cded1f42aea8693.jar D:\Armindo\Android studioProjects\Project4\app\build\pre-dexed\debug\classes-291c4de37af2df287d3f0bde38005eb4ecb484f4.jar D:\Armindo\Android studioProjects\Project4\app\build\pre-dexed\debug\classes-82c2a48def34cb7b1f99f973c27e1ef8562b4177.jar D:\Armindo\Android studioProjects\Project4\app\build\pre-dexed\debug\support-v4-19.0.1-9046a2105fe8ed5a830061a0f501bb9eb2dfd6b0.jar Error Code: 2 Output:

UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;
    at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:594)
    at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:552)
    at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:533)
    at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:170)
    at com.android.dx.merge.DexMerger.merge(DexMerger.java:188)
    at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:439)
    at com.android.dx.command.dexer.Main.runMonoDex(Main.java:287)
    at com.android.dx.command.dexer.Main.run(Main.java:230)
    at com.android.dx.command.dexer.Main.main(Main.java:199)
    at com.android.dx.command.Main.main(Main.java:103)

My dependencies in my cradle files are looking like this: project's build.cradle: (Note that the libs from the main project are imported in a folder, e.g. libraries/facebook )

dependencies { compile fileTree(dir: 'libs', include: ['*.jar'])
compile project(':libraries:facebook')
compile 'com.google.android.gms:play-services:+'
}

facebook's build.cradle:

dependencies { compile fileTree(dir: 'libs', include: ['*.jar'])
compile files('libs/bolts.jar')
compile files('libs/android-support-v4.jar')
}

The error only occurs when I add compile 'com.google.android.gms:play-services:+' to the project's cradle.

I've tried almost all the topics about this on here already and also tried to import the same lib in both cradle's. Any ideas?

Edit1: Tried what Scott said. But I believe it is caused by it still having 2 times Android-support. Using the latest 3.14.1 Facebook SDK.

Edit2: Changed depency of facebook's build cradle:

compile - Classpath for compiling the main sources. +--- Project4.libraries:facebook:unspecified
| \--- com.android.support:support-v13:13.0.+ -> 13.0.0 | \--- com.android.support:support-v4:13.0.0 -> 19.0.1 \--- com.google.android.gms:play-services:+ -> 4.4.52 \--- com.android.support:support-v4:19.0.1

So it looks like Facebook is still using v4 underneath..

Edit3: After the comment, changed the buildToolsVersion again to 19.0.1 on both versions. Also changed facebook.cradle compile 'com.android.support:support-v4:19.0.1'.

The terminal now provides me with this: +--- Project4.libraries:facebook:unspecified
| \--- com.android.support:support-v4:19.0.1 \--- com.google.android.gms:play-services:4.4.52 \--- com.android.support:support-v4:19.0.1
So I guess that that is correct now, but I am still receiving the same error. This is the full error log (i think it's the same as before. But just checking the walls).

Last and final edit: Fixed! my application build.cradle: dependencies { compile 'com.google.android.gms:play-services:4.4.52' compile fileTree(include: ['*.jar'], dir: 'libs') compile files('build/libs/Parse-1.5.1.jar') compile project(':libraries:facebook') }

my facebook's lib build.cradle: dependencies { compile 'com.google.android.gms:play-services:4.4.52' compile fileTree(include: ['*.jar'], dir: 'libs') compile files('build/libs/Parse-1.5.1.jar') }

To fix it I just had to import the play services into BOTH the libraries, derp

解决方案

Fixed it by just importing the play services into both build.cradle files compile com.google.android.gms:play-services:4.4.52

这篇关于多DEX文件试图导入谷歌地图为谷歌地图项目时定义的Andr​​oid Studio错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆