尝试将Google地图导入Google地图项目时,多个dex文件会定义Android Studio错误 [英] Multiple dex files define Android studio error when trying to import Google Maps into Google Maps project
问题描述
我在使用最新版本的Android Studio,以及一个Facebook SDK(仅用于登录)和Google Maps API的问题。
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.
我在Android工作室设立了一个项目,Facebook整合工作正常。但是我的一位同事创建了Google Maps部分,我正在尝试复制/粘贴到我的项目中。我已经设置好了,像 Google 文档告诉我的。所以这不是问题。
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.
如果我是正确的,我只能从我的项目的build.cradle和facebook库的build.cradle文件中遇到问题。错误是:
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:
未指定的顶级例外:
com.android.dex.DexException:多个dex文件定义了Landroid /支持/ 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)
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)
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:构建失败,例外。
FAILURE: Build failed with an exception.
- 什么出现错误:
执行失败的任务':app:dexDebug'。
com.android.ide.common.internal.LoggedErrorException:无法运行命令:
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-714d8ee0ce6246f4109e07 8b8cded1f42aea8693.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
错误代码:
2
输出:
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)
我的基座文件中的依赖关系如下所示:
project的build.cradle(注意,主项目的lib是以文件夹,例如图书馆/ facebook
)
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 )
依赖关系{
编译fileTree(dir:'libs',include:['* .jar'])
编译项目(':libraries:facebook')
compile' com.google.android.gms:play-services:+'
}
dependencies { compile fileTree(dir: 'libs', include: ['*.jar'])
compile project(':libraries:facebook')
compile 'com.google.android.gms:play-services:+'
}
facebook的build.cradle:
facebook's build.cradle:
依赖关系{
compile fileTree(dir:'libs',include:['* .jar'])
编译文件('libs / bolt.jar')
编译文件('libs / android-support-v4.jar')
}
dependencies { compile fileTree(dir: 'libs', include: ['*.jar'])
compile files('libs/bolts.jar')
compile files('libs/android-support-v4.jar')
}
只有当我添加编译'com.google.android.gms:play-services:+'
到项目的摇篮。
The error only occurs when I add compile 'com.google.android.gms:play-services:+'
to the project's cradle.
我已经尝试了几乎所有关于这个的主题,并尝试在摇篮中导入相同的lib。任何想法?
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:
试过Scott说的话。但是我相信它是由Android仍然支持Android的2倍引起的。使用最新的3.14.1 Facebook SDK。
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 :
更改Facebook的构建基座的版本:
Changed depency of facebook's build cradle:
compile - 用于编译主要源的类路径。
+ --- 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
所以看起来像Facebook正在使用v4。
So it looks like Facebook is still using v4 underneath..
Edit3:
注释后,将buildToolsVersion再次更改为19.0.1 on两个版本。也改变了facebook.cradle 编译'com.android.support:support-v4:19.0.1'
。
终端现在提供给我:
+ --- 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
所以我猜这是正确的,但我仍然收到相同的错误。这是完整的错误日志(我认为这是一样的,但只是检查墙壁)。
The terminal now provides me with this:
+--- Project4.libraries:facebook:unspecified
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).
| \--- 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
最后和最后编辑:固定!
我的应用程序build.cradle:
依赖项{
编译'com.google.android.gms:play-services编译文件(包括:['* .jar'],dir:'libs')
编译文件('build / libs / Parse-1.5.1.jar')
编译项目(':libraries:facebook')
}
我的Facebook的lib build.cradle:
$ code依赖关系{
compile'com.google.android.gms:play-services:4.4.52'
compile fileTree(include:['* .jar'],dir: 'libs')
编译文件('build / libs / parse-1.5.1.jar')
}
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')
}
为了解决这个问题,我只需要把这个play服务导入到 BOTH 中,这个库,derp
To fix it I just had to import the play services into BOTH the libraries, derp
推荐答案
>通过简单地将播放服务导入到 build.cradle文件中来修正s编译 com.google.android.gms:play-services:4.4.52
Fixed it by just importing the play services into both build.cradle files compile com.google.android.gms:play-services:4.4.52
这篇关于尝试将Google地图导入Google地图项目时,多个dex文件会定义Android Studio错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!