【问题标题】:Android studio Execution failed for task ':app:packageAllDebugClassesForMultiDex'任务':app:packageAllDebugClassesForMultiDex'的Android工作室执行失败
【发布时间】:2015-08-23 09:38:52
【问题描述】:

我有这个错误:

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)。

我尝试了一些解决方案,例如删除一些谷歌库,但我不知道什么是指 internal/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'
}

【问题讨论】:

  • 转到您的 build.gradle 并设置 multiDexEnabled=true 它发生的原因是您超过了 java 设置的 65,000 个方法。当您向应用程序添加一些模块时,通常会发生这种情况
  • 感谢您的回答,但已经完成,我在问题中已经说过了
  • 一切开始时你添加了哪个库?或者粘贴你的 build.gradle 文件
  • 我把我的 build.gradle 文件放了
  • 这样做,让我们看看结果minifyEnable=truemultiDexEnabled true

标签: android android-studio google-play-services


【解决方案1】:

我遇到了同样的问题。就我而言,我使用了我的 Android 应用程序使用的自制 Android 库。这意味着 1 个项目有 2 个独立的模块,而 app 模块依赖于库模块。 两者都支持multidex。根本原因是 google play 服务版本不一致。在应用程序模块中我使用了 7.8.+,在库中我使用了 8.1.+。所以我只是将两者都更新到了相同的 8.1.+ 并且为我修复了。所以我的回答是检查你所依赖的所有库,其中可能有 1 个使用低于你的谷歌播放服务版本。

【讨论】:

  • 最后,我创建了另一个项目,只是做同样的事情:放置google play服务和multidex,问题不再出现。我认为您的答案适用于某些情况,在其他情况下只需创建另一个项目。
  • 只需运行 ./gradlew 依赖项即可找出哪些模块包含 Play 服务的冲突版本。
【解决方案2】:

删除该项目的 build 文件夹下的所有文件。就我而言,是整个google play的jar文件与只有ads服务的jar文件冲突。

【讨论】:

    【解决方案3】:

    正如我在评论中所说:我创建了另一个项目,只是做了同样的事情:放置 google play services 和 multidex,问题不再出现。

    【讨论】:

      猜你喜欢
      • 2016-12-28
      • 1970-01-01
      • 2014-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多