运行我的应用时出现错误com.android.dex.DexException: Multiple dex files define Lcom/google/android/gms/internal/zzau;
gradle文件是
app.gradle
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:support-v4:21.0.3'
compile 'com.android.support:appcompat-v7:21.0.3'
compile 'com.android.support:recyclerview-v7:21.0.0'
compile 'com.android.support:cardview-v7:21.0.0'
compile 'com.google.android.gms:play-services:7.0.+'
compile 'com.android.support:mediarouter-v7:21.0.3'
compile 'com.squareup:otto:1.3.5'
compile 'com.squareup.picasso:picasso:2.3.4'
compile 'com.squareup.okhttp:okhttp:2.2.0'
compile 'com.squareup.okhttp:okhttp-urlconnection:2.2.0'
compile 'com.squareup.retrofit:retrofit:1.9.0'
compile 'com.github.ksoichiro:android-observablescrollview:1.4.0'
compile 'com.astuetz:pagerslidingtabstrip:1.0.1'
compile 'com.facebook.android:facebook-android-sdk:4.1.0'
compile 'com.parse.bolts:bolts-android:1.+'
compile 'com.edmodo:rangebar:1.0.0'
compile 'com.melnykov:floatingactionbutton:1.3.0'
compile project(':library_viewpager')
compile project(':androidHorizontalListView')
compile project(':CastCompanionLibrary')
compile project(':mobihelp_sdk_android_v1.4')
compile fileTree(include: 'Parse-*.jar', dir: 'libs')
compile files('libs/Parse-1.9.2.jar')
compile files('libs/GoogleConversionTrackingSdk-2.2.2.jar')
}
CastCompanionLibrary
dependencies {
compile 'com.android.support:appcompat-v7:22.+'
compile 'com.android.support:mediarouter-v7:22.+'
compile 'com.google.android.gms:play-services-cast:7.5.0'
}
我该如何解决这个问题?我想错误的发生是因为我在模块和应用程序中都使用谷歌播放服务。但版本不同。是造成问题吗?
答案 0 :(得分:29)
我有类似的问题,你的问题帮助我解决了我的问题,可能会帮助你解决问题。问题是你已定义:
dependencies {
...
compile 'com.google.android.gms:play-services-cast:7.5.0'
}
和
dependencies {
...
compile 'com.google.android.gms:play-services:7.0.+'
...
}
自Google服务7.5.0以来,如果您使用播放服务中的单个模块,则无法同时将整个播放服务用作依赖项。解决方案是仅选择您需要的服务而不是整个包,例如:
而不是
dependencies {
...
compile 'com.google.android.gms:play-services:7.0.+'
...
}
使用
dependencies {
...
compile 'com.google.android.gms:play-services-maps:7.0.+'
compile 'com.google.android.gms:play-services-location:7.0.+'
compile 'com.google.android.gms:play-services-gcm:7.0.+'
...
}
此外,我不确定,但在两个gradle配置中使用相同版本的Google服务可能是个好主意。
答案 1 :(得分:16)
使用phonegap / cordova构建后我遇到了类似的问题: com.android.dex.DexException:多个dex文件定义Lcom / google / android / gms / internal / zzsk;
我通过编辑build.gradle(模块Android)来修复它,因为我有2个库应该具有完全相同的版本和不同的版本号(在我的情况下为8.4.0和9.2.1)
dependencies{
....
//make sure are both same version (8.4.0 or 9.2.1 in my case)
compile 'com.google.android.gms:play-services-gcm:9.2.1'
// this is the one I changed: compile 'com.google.android.gms:play-services-location:8.4.0'
compile 'com.google.android.gms:play-services-location:9.2.1' // it was 8.4.0
....
}
答案 2 :(得分:5)
Firebase Android SDK现在具有独立的版本号,允许 更频繁,更灵活的更新。
将所有Firebase依赖关系更新为最新版本(截至2018年5月2日):
Firebase Core com.google.firebase:firebase-core:15.0.2
Ads com.google.firebase:firebase-ads:15.0.0
Analytics com.google.firebase:firebase-analytics:15.0.2
App Indexing com.google.firebase:firebase-appindexing:15.0.0
Authentication com.google.firebase:firebase-auth:15.1.0
Cloud Firestore com.google.firebase:firebase-firestore:16.0.0
Cloud Functions com.google.firebase:firebase-functions:15.0.0
Cloud Messaging com.google.firebase:firebase-messaging:15.0.2
Cloud Storage com.google.firebase:firebase-storage:15.0.2
Crash Reporting com.google.firebase:firebase-crash:15.0.2
Crashlytics com.crashlytics.sdk.android:crashlytics:2.9.1
Invites com.google.firebase:firebase-invites:15.0.2
Performance Monitoring com.google.firebase:firebase-perf:15.1.0
Realtime Database com.google.firebase:firebase-database:15.0.0
Remote Config com.google.firebase:firebase-config:15.0.2
发行说明:https://firebase.google.com/support/release-notes/android
答案 3 :(得分:4)
手动将Firebase添加到我的应用后,我遇到了同样的问题 对我来说,解决方案正在改变:
classpath 'com.google.gms:google-services:3.2.0'
为:
classpath 'com.google.gms:google-services:3.0.0'
在根级 build.gradle 文件中。
答案 4 :(得分:4)
如果使用react-native-device-info进行此操作,则只能更改:
compile(project(':react-native-device-info'))
到
compile(project(':react-native-device-info')) {
exclude group: 'com.google.android.gms'
}
答案 5 :(得分:3)
集成firebase时遇到同样的问题。对于我的情况,它是由版本不匹配引起的。
在app gradle上,我有:ext {
PLAY_SERVICES_VERSION = '10.2.0'
}
dependencies {
compile "com.google.android.gms:play-services-maps:$PLAY_SERVICES_VERSION"
compile "com.google.android.gms:play-services-location:$PLAY_SERVICES_VERSION"
compile "com.google.android.gms:play-services-places:$PLAY_SERVICES_VERSION"
compile 'com.google.firebase:firebase-database:10.0.1'
}
通过Android studio中的集成firebase插件添加了firebase
依赖性。当我匹配版本时,它有效。
答案 6 :(得分:2)
我最近遇到过这个问题,原因是版本差异:
'com.google.firebase:firebase-ads:9.0.6'
'com.google.firebase:firebase-crash:11.0.2'
所以请确保您拥有相同的版本。
答案 7 :(得分:1)
我遇到了同样的问题,但我的火灾是由最新版本2.0.0引起的。所以我降级到1.2.0并将以下行添加到Project level build.gradle文件中:
allprojects {
repositories {
jcenter()
// Add the following code
maven {
url 'https://maven.fabric.io/public'
}
}
}
答案 8 :(得分:1)
我的项目是一个cordova ionic1项目,我花了一整夜和早上来解决这个问题,这就是我所做的,因为我有firebase依赖和google服务: 转到此文件: 平台\机器人\科尔多瓦-插件-火力\科尔多瓦-插件-火力\ APP-的build.gradle
buildscript {
repositories {
mavenCentral()
}
dependencies {
// classpath 'com.google.gms:google-services:3.0.0'
// i changed the above line from 3.0.0 to 3.1.1
classpath 'com.google.gms:google-services:3.1.1'
}
}
repositories {
mavenCentral()
}
dependencies {
compile 'me.leolin:ShortcutBadger:1.1.4@aar'
//compile 'com.google.firebase:firebase-crash:+'
// i changed the above line from + to 11.0.2
compile 'com.google.firebase:firebase-crash:11.0.2'
}
然后转到此文件: 平台\机器人\ project.properties 本来我有这个
target=android-26
android.library.reference.1=CordovaLib
cordova.gradle.include.1=cordova-plugin-firebase/app-build.gradle
cordova.system.library.1=com.google.gms:google-services:+
cordova.system.library.2=com.google.firebase:firebase-core:+
cordova.system.library.3=com.google.firebase:firebase-messaging:+
cordova.system.library.4=com.google.firebase:firebase-crash:+
cordova.system.library.5=com.google.firebase:firebase-config:+
cordova.system.library.6=com.android.support:support-v4:24.1.1+
cordova.system.library.7=com.google.android.gms:play-services-auth:11.+
cordova.system.library.8=com.google.android.gms:play-services-identity:11.+
然后我评论了google服务,因为我们需要特定的依赖项,我还将firebase和gms的版本设置为相同的版本号11.0.2 所以我的文件看起来像这样
target=android-26
android.library.reference.1=CordovaLib
cordova.gradle.include.1=cordova-plugin-firebase/app-build.gradle
# cordova.system.library.1=com.google.gms:google-services:+
cordova.system.library.2=com.google.firebase:firebase-core:11.0.2
cordova.system.library.3=com.google.firebase:firebase-messaging:11.0.2
cordova.system.library.4=com.google.firebase:firebase-crash:11.0.2
cordova.system.library.5=com.google.firebase:firebase-config:11.0.2
cordova.system.library.6=com.android.support:support-v4:24.1.1+
cordova.system.library.7=com.google.android.gms:play-services-auth:11.0.2
cordova.system.library.8=com.google.android.gms:play-services-identity:11.0.2
答案 9 :(得分:0)
我遇到了这个问题,没有一个解决方案有效。对我有用的是添加这个插件
cordova plugin add cordova-android-play-services-gradle-release --save
然后在/ platforms / android / cordova-plugin-fcm /和/ platforms / android / cordova-plugin-open / replace
apply plugin: com.google.gms.googleservices.GoogleServicesPlugin
使用:
ext.postBuildExtras = {
apply plugin: com.google.gms.googleservices.GoogleServicesPlugin
}
答案 10 :(得分:0)
如果有人遇到与我相同的问题,我删除了firebase-core依赖,它就像一个魅力。
dependencies{
implementation 'com.google.firebase:firebase-core:15.0.0'
implementation 'com.google.android.gms:play-services-ads:15.0.0'
implementation 'com.google.firebase:firebase-crash:15.0.0'
implementation 'com.google.firebase:firebase-messaging:15.0.0'
}
到
dependencies{
implementation 'com.google.android.gms:play-services-ads:15.0.0'
implementation 'com.google.firebase:firebase-crash:15.0.0'
implementation 'com.google.firebase:firebase-messaging:15.0.0'
}
答案 11 :(得分:0)
如果其他人在Ionic删除并重新添加该平台时遇到此问题,那么:
> ionic cordova rm platform android
> ionic cordova add platform android
答案 12 :(得分:0)
对于想知道如何为 Apache Cordova插件修复此问题的任何人,我通过确保所有plugin.xml
文件都包含主要和次要版本,但最新版本是<< / strong>,就像这样:
<framework src="com.google.firebase:firebase-auth:15.0.+" />
<framework src="com.google.firebase:firebase-messaging:15.0.+" />
在使用上面的15.0.0
时,由于某些原因引发了com.android.dex.DexException
错误。通过使用+
作为修订号(意味着最新),一切都可以在cordova 7.1.0和cordova-android 6.3.0上完美地工作。
在通过插件编辑plugin.xml
后,请记住删除并重新添加android平台,否则您的更改将根本不会应用!
还:确保只有一个gradle文件正在应用此文件,以防万一:
dependencies {
classpath 'com.android.tools.build:gradle:+'
classpath 'com.google.gms:google-services:3.0.0'
}
答案 13 :(得分:0)
我也遇到了这个问题,我尝试了多种方法来解决此问题。对我有用的是从gradle中删除以下行。
compile 'com.google.firebase:firebase-core:16.0.3'
起初,我同时拥有firebase-core
和firebase-ml-vision
(我只需要firebase-ml-vision
),如下所示。
compile 'com.google.firebase:firebase-ml-vision:17.0.0'
compile 'com.google.firebase:firebase-core:16.0.3'
删除行后,我得到以下警告
警告:应用gradle文件必须依赖于 com.google.firebase:firebase-core,以便Firebase服务可以像
但是,根据官方文档,核心依赖项可能不存在(https://firebase.google.com/docs/ml-kit/android/detect-faces),因此可以忽略。