尝试将Google地图导入Google地图项目时,多个dex文件会定义Android Studio错误
我在使用最新版本的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