添加play-services库后出错:':app:transformClassesWithJarMergingForDebug'

时间:2015-10-16 06:46:24

标签: android android-studio gradle android-gradle

我的项目与包括的那些库完美配合:

// Support libraries
compile 'com.android.support:support-v4:23.1.0'
compile 'com.android.support:appcompat-v7:23.1.0'
compile 'com.android.support:cardview-v7:23.1.0'
compile 'com.android.support:recyclerview-v7:23.1.0'
// Other stuff
compile 'com.jakewharton:butterknife:7.0.1'
compile 'com.squareup.picasso:picasso:2.5.2'
compile 'com.google.code.gson:gson:2.3'
compile 'com.squareup.retrofit:retrofit:1.9.0'
compile 'com.afollestad:material-dialogs:0.7.8.1'
compile 'com.jpardogo.materialtabstrip:library:1.1.0'
compile 'com.melnykov:floatingactionbutton:1.3.0'
compile 'com.code-troopers.betterpickers:library:2.0.0'
compile 'com.loopj.android:android-async-http:1.4.9'
compile 'com.squareup.okhttp:okhttp:2.5.0'
compile 'com.facebook.fresco:fresco:0.7.0'

现在我尝试按照本教程:Set up a GCM Client App on Android

我添加了

  
      
  1. 将依赖项添加到项目的顶级build.gradle中:
      classpath 'com.google.gms:google-services:1.4.0-beta3'
  2.   
  3. 将插件添加到您的应用级build.gradle:
      apply plugin: 'com.google.gms.google-services'
  4.   

然后我补充道:

compile "com.google.android.gms:play-services:8.1.0"

现在,当我尝试同步,清理或重建时。 Gradle告诉我它已成功完成。

错误: 当我尝试运行应用程序并选择设备。我收到这个错误:

Error:Execution failed for task ':app:transformClassesWithJarMergingForDebug'.
> com.android.build.transform.api.TransformException: java.util.zip.ZipException: duplicate entry: android/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoIcsImpl.class

这是我的应用级build.gradle的最后一个版本:

apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'

android {
    packagingOptions {
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/license.txt'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/notice.txt'
        exclude 'META-INF/ASL2.0'
        exclude 'META-INF/services/javax.annotation.processing.Processor'
    }
    compileSdkVersion 23
    buildToolsVersion "23.0.0"
    defaultConfig {
        applicationId "com.mbh.gcmTest"
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 12
        versionName "1.2.2"

        // Enabling multidex support. trying to fix 
        multiDexEnabled true
    }
    lintOptions {
        disable 'InvalidPackage'
    }
    buildTypes {
        release {
            minifyEnabled false
        }
    }
    dexOptions {
        preDexLibraries = false
    }
    productFlavors {
    }
}

//compile fileTree(include: ['*.jar'], dir: 'libs')
//debugCompile 'com.squareup.leakcanary:leakcanary-android:1.3.1'
//releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3.1'
dependencies {
    provided 'org.glassfish:javax.annotation:10.0-b28'

    // Support Libraries
    compile 'com.android.support:support-v4:23.1.0'
    compile 'com.android.support:appcompat-v7:23.1.0'
    compile 'com.android.support:cardview-v7:23.1.0'
    compile 'com.android.support:recyclerview-v7:23.1.0'

    compile 'com.jakewharton:butterknife:7.0.1'
    compile 'com.squareup.picasso:picasso:2.5.2'
    compile 'com.google.code.gson:gson:2.3'
    compile 'com.squareup.retrofit:retrofit:1.9.0'
    compile 'com.afollestad:material-dialogs:0.7.8.1'
    compile 'com.jpardogo.materialtabstrip:library:1.1.0'
    compile 'com.melnykov:floatingactionbutton:1.3.0'
    compile 'com.code-troopers.betterpickers:library:2.0.0'
    compile 'com.loopj.android:android-async-http:1.4.9'
    compile 'com.squareup.okhttp:okhttp:2.5.0'
    compile 'com.facebook.fresco:fresco:0.7.0'

    // FOR GCM
    compile 'com.android.support:multidex:1.0.1'
    compile 'com.google.android.gms:play-services:8.1.0'
}

在尝试@JBirdVegas提供的答案后,我收到了这个错误:

Error:Execution failed for task ':app:transformClassesWithDexForDebug'.
> com.android.build.transform.api.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.8.0_51\bin\java.exe'' finished with non-zero exit value 1

这是gradle日志:

Note: the configuration refers to the unknown method 'void attachBaseContext(android.content.Context)' in class 'com.emse.emseportal3.App'
Note: there were 1 references to unknown class members.
      You should check your configuration for typos.
Note: there were 14 classes trying to access annotations using reflection.
      You should consider keeping the annotation attributes
      (using '-keepattributes *Annotation*').
      (http://proguard.sourceforge.net/manual/troubleshooting.html#attributes)
Note: there were 20 classes trying to access generic signatures using reflection.
      You should consider keeping the signature attributes
      (using '-keepattributes Signature').
      (http://proguard.sourceforge.net/manual/troubleshooting.html#attributes)
Note: there were 3 classes trying to access enclosing classes using reflection.
      You should consider keeping the inner classes attributes
      (using '-keepattributes InnerClasses').
      (http://proguard.sourceforge.net/manual/troubleshooting.html#attributes)
Note: there were 15 unresolved dynamic references to classes or interfaces.
      You should check if you need to specify additional program jars.
      (http://proguard.sourceforge.net/manual/troubleshooting.html#dynamicalclass)
Note: there were 33 accesses to class members by means of introspection.
      You should consider explicitly keeping the mentioned class members
      (using '-keep' or '-keepclassmembers').
      (http://proguard.sourceforge.net/manual/troubleshooting.html#dynamicalclassmember)
Note: you're ignoring all warnings!
Preparing output jar [D:\EmseArge\Mohamad\Android\EmsePortal2\app\build\intermediates\multi-dex\debug\componentClasses.jar]
  Copying resources from program jar [D:\EmseArge\Mohamad\Android\EmsePortal2\app\build\intermediates\transforms\CLASSES\FULL_PROJECT\jarMerging\debug\classes.jar]
:app:transformClassesWithDexForDebug
Uncaught translation error: java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: GC overhead limit exceeded
Uncaught translation error: java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: GC overhead limit exceeded
Uncaught translation error: java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: GC overhead limit exceeded
3 errors; aborting
Error:Execution failed for task ':app:transformClassesWithDexForDebug'.
> com.android.build.transform.api.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.8.0_51\bin\java.exe'' finished with non-zero exit value 1
Information:BUILD FAILED

1 个答案:

答案 0 :(得分:22)

看起来play-services已包含support-v4。尝试将其从类路径中排除

compile('com.google.android.gms:play-services:8.1.0') {
    exclude group: 'com.android.support', module: 'support-v4'
}

第二个错误是不同的。首先不要使用Java8,而不是支持使用Java7您使用的是什么版本的Android Gradle Plugin?试试最新的com.android.tools.build:gradle:1.4.0-beta4

同时尝试不使用最新的play-services我遇到了针对8.1.0而不是7.8.0编译的问题