错误:任务':app:transformClassesWithMultidexlistForDebug'执行失败安卓工作室

时间:2017-11-17 01:50:40

标签: java android android-studio android-gradle build.gradle

我在buildbox上创建一个游戏我导出项目但是我无法在android studio上启动游戏 我的问题是我无法运行应用程序或生成apk文件

有人可以帮助我。

错误

  

错误:任务':app:transformClassesWithMultidexlistForDebug'执行失败。   java.io.IOException:不能写[C:\ Users \ youne \ Desktop \ android2 \ app \ build \ intermediates \ multi-dex \ debug \ componentClasses.jar](不能读[C: \ Users \ youne.gradle \ caches \ transforms-1 \ files-1.1 \ support-core-ui-25.2.0.aar \ 9adfc8649fc899fbc5e371e8bc1c399a \ jars \ classes.jar(;;;;;; **。class)](重复的zip条目[classes.jar:android / support / v4 / view / ViewPager $ 2.class]))

我正在使用

Android Studio 3.0

Java版:Java(TM)SE运行时环境(版本1.8.0_73-b02)。

Gradle版本:com.android.tools.build:grad:4.1.1

我启用了Multidex

在我的app build.gradle文件中:

android {
  compileSdkVersion 27
  buildToolsVersion '27.0.1'

  defaultConfig {
    applicationId "com.drh.bird"
    minSdkVersion 14
    targetSdkVersion 23
    aaptOptions.cruncherEnabled = false
    aaptOptions.useNewCruncher = false
    compileOptions.encoding = 'ISO-8859-1'
    multiDexEnabled = true

    ndk {
      moduleName "player_shared"
    }
  }
  android {
    useLibrary 'org.apache.http.legacy'
  }
  sourceSets {
    main {
      jni.srcDirs = []
    }
  }

  buildTypes {}
  android {
    defaultConfig {
      multiDexEnabled true
    }
  }
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7
  }

  buildTypes {
    release {
      minifyEnabled false
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
    }
  }
}

dependencies {
  compile 'com.android.support:multidex:1.0.1'
  compile 'com.google.android.gms:play-services:+'
  compile files('libs/dagger-1.2.2.jar')
  compile files('libs/javax.inject-1.jar')
  compile files('libs/nineoldandroids-2.4.0.jar')
  compile files('libs/support-v4-19.0.1.jar')
}

3 个答案:

答案 0 :(得分:8)

implementation 'com.android.support:appcompat-v7:27.1.0'
 implementation 'com.android.support:design:27.1.0'
    implementation 'com.android.support:support-v4:27.1.0'
 implementation 'com.android.support:recyclerview-v7:27.1.0'

如上所述将您的所有支持库更新为27.1.0并删除重复项

答案 1 :(得分:1)

您正尝试将compile files('libs/support-v4-19.0.1.jar')compileSdkVersion 27一起使用。但是支持库的主要版本应该等于compileSdkVersion

使用implementation "com.android.support:support-v4:27.0.1"代替

此外,永远不要在依赖版本中使用+。当依赖关系已更新时,您可能会遇到一些问题

答案 2 :(得分:0)

这是因为您的支持库存在冲突。您应始终对compileSdkVersionbuildToolsVersiontargetSdkVersionsupport library使用相同的版本代码。

您不应该使用带有

的jar文件
compile files('libs/support-v4-19.0.1.jar')

相反,您需要使用与compileSdkVersion匹配的支持库,如下所示:

implementation 'com.android.support:support-v4:27.1.0'

您还需要使用精确版本的播放服务,并确保使用特定的个人API。不是这样的:

compile 'com.google.android.gms:play-services:+'

但是这样的事情:

// if you're using only ads
implementation 'com.google.android.gms:play-services-ads:12.0.0'

这将使您的方法计数很小,然后您可以删除multidex。

最后,你的build.gradle应该是这样的:

android {
  compileSdkVersion 27
  buildToolsVersion '27.0.1'

  defaultConfig {
    applicationId "com.drh.bird"
    minSdkVersion 14
    targetSdkVersion 27
    aaptOptions.cruncherEnabled = false
    aaptOptions.useNewCruncher = false
    compileOptions.encoding = 'ISO-8859-1'
    //multiDexEnabled = true

    ndk {
      moduleName "player_shared"
    }
  }
  android {
    useLibrary 'org.apache.http.legacy'
  }
  sourceSets {
    main {
      jni.srcDirs = []
    }
  }

  buildTypes {}
  android {
    defaultConfig {
      //multiDexEnabled true
    }
  }
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7
  }

  buildTypes {
    release {
      minifyEnabled false
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
    }
  }
}

dependencies {
  //compile 'com.android.support:multidex:1.0.1'
  implementation 'com.google.android.gms:play-services:play-services-ads:12.0.0'
  implementation 'com.android.support:support-v4:27.1.0'

  compile files('libs/dagger-1.2.2.jar')
  compile files('libs/javax.inject-1.jar')
  compile files('libs/nineoldandroids-2.4.0.jar')
  //compile files('libs/support-v4-19.0.1.jar')
}