我有这个错误:
Execution failed for task ':app:packageAllDebugClassesForMultiDex'.
> java.util.zip.ZipException: duplicate entry: com/google/android/gms/internal/zzrf.class
我想将google play服务添加到我的项目中,所以我把这行放在build.gradle文件中:
compile 'com.google.android.gms:play-services:7.8.0'
所以我必须启用multidex并且我遵循android doc,在build.gradle中添加它:
compile 'com.android.support:multidex:1.0.1'
和
multiDexEnabled true
我在android manifest中添加了这个:
<application
...
android:name="android.support.multidex.MultiDexApplication">
但我有上面写的错误。我发现了很多与此问题相关的问题(app:packageAllDebugClassesForMultiDex),但没有发现(重复条目:com / google / android / gms / internal / zzrf.class)。
我尝试了一些解决方案,例如删除一些谷歌库,但我不知道内部/ zzrf.class是什么。
这是我的gradle文件:
apply plugin: 'com.android.application'
android {
compileSdkVersion 22
buildToolsVersion "22.0.1"
defaultConfig {
applicationId "fr.djey.testgoogleplus"
minSdkVersion 16
targetSdkVersion 22
versionCode 1
versionName "1.0"
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.2.1'
compile 'com.google.android.gms:play-services:7.8.0'
compile 'com.android.support:multidex:1.0.1'
}
答案 0 :(得分:10)
我遇到了同样的问题。在我的情况下,我使用了我的Android应用程序使用的自制Android库。这意味着1个项目有2个独立的模块,而app模块依赖于库模块。 两者都支持multidex。根本原因是谷歌播放服务版本之间的不一致。在应用程序模块中,我使用了7.8。+,在库中我使用了8.1。+。所以我刚刚更新到相同的8.1。+,这对我来说是固定的。所以我的答案是检查你所依赖的所有库,其中一个可能使用你下面的谷歌播放服务版本。
答案 1 :(得分:1)
删除该项目的build文件夹下的所有文件。就我而言,整个google play的jar文件只与广告服务的jar文件冲突。
答案 2 :(得分:0)
正如我在评论中所说的那样:我创建了另一个项目并且做了同样的事情:放谷歌游戏服务和multidex,问题不再出现了。