错误:任务执行失败':app:transformClassesWithDexForDebug'
错误
错误:任务“:app:transformClassesWithDexForDebug”的执行失败。 /usr/lib/jvm/java-8-oracle/com.android.build.transform.api.TransformException:com.android.ide.common.process.ProcessException:org.gradle.process.internal.ExecException:进程'command'/ usr / lib / jvm / java-8-oracle / bin / java''以非零的退出值1结束
我的应用程序gradle文件:
apply plugin: 'com.android.application' apply plugin: 'com.google.gms.google-services' android { compileSdkVersion 23 buildToolsVersion "23.0.1" defaultConfig { applicationId 'Hidden application ID' minSdkVersion 15 targetSdkVersion 23 versionCode 1 versionName "1.0" multiDexEnabled true } buildTypes { debug { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } lintOptions { disable 'InvalidPackage' } packagingOptions { exclude 'META-INF/services/javax.annotation.processing.Processor' } productFlavors { } } repositories { mavenCentral() } dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') compile 'com.android.support:multidex:1.0.1' compile 'com.android.support:appcompat-v7:23.1.1' compile 'com.android.support:design:23.1.1' compile 'com.android.support:cardview-v7:23.1.1' compile 'com.jakewharton:butterknife:7.0.1' compile 'com.mcxiaoke.volley:library-aar:1.0.0' compile 'com.google.android.gms:play-services:8.1.0' compile 'com.facebook.android:facebook-android-sdk:4.7.0' compile 'com.googlecode.libphonenumber:libphonenumber:7.2.1' compile 'com.getbase:floatingactionbutton:1.10.1' compile 'com.android.support:preference-v7:23.1.1' }
在debugging时,如果将minifyEnabled设置为true,则编译。 但是,那么我不能debugging我的应用程序。
我检查了这个问题: 执行谷歌login为Android的任务':app:transformClassesWithDexForDebug'的执行失败 ,但只有一个答案,实施它不能解决问题不幸。
AFAIK,错误是由于添加了太多的Gradle依赖引起的,但我可能是错的(我真的希望是错的,因为所有这些包真的很重要!)。
请帮我解决这个错误。 非常感谢!
只需纠正Google Play服务依赖关系:
您的项目中包含所有播放服务。 只添加你想要的。
例如,如果您只使用地图和g +login,则不会更改
compile 'com.google.android.gms:play-services:8.1.0'
至
compile 'com.google.android.gms:play-services-maps:8.1.0' compile 'com.google.android.gms:play-services-plus:8.1.0'
从文档:
在6.5之前的Google Play服务版本中,您必须将整个API包编译到您的应用程序中。 在某些情况下,这样做会使得应用程序中的方法数量(包括框架API,库方法和自己的代码)在65,536的限制之下变得更加困难。
从版本6.5开始,您可以select性地将Google Play服务API编译到您的应用中。 例如,要仅包含Google Fit和Android Wear API,请在build.gradle文件中replace以下行:
编译“com.google.android.gms:play-services:8.3.0”
用这些线:编译“com.google.android.gms:play-services-fitness:8.3.0”
编译“com.google.android.gms:play-services-wearable:8.3.0”
整个列表可以在这里find 。
尝试
dexOptions { javaMaxHeapSize "4g" preDexLibraries = false }
我不知道原因。 有关preDexLibraries
: https : //sites.google.com/a/android.com/tools/tech-docs/new-build-system/tips
根据@ lgdroid57:
以下资源应该可以帮助解释这段代码的作用:链接( http://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.DexOptions.html )属性| 描述javaMaxHeapSize | 调用dx时设置-JXmx *值。 格式应该遵循1024M模式。 preDexLibraries | 是否要预先图书馆。 这可以提高增量构build,但干净的构build可能会变慢。
这是有关Multidex的问题。 你可以尝试删除一些jar,或者你可以尝试像这样: http : //developer.android.com/tools/building/multidex.html#mdex-gradle in app build.gradle:
defaultConfig { ... minSdkVersion 14 targetSdkVersion 21 ... // Enabling multidex support. multiDexEnabled true } dependencies { compile 'com.android.support:multidex:1.0.0' }
在你的清单中:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.android.multidex.myapplication"> <application ... android:name="android.support.multidex.MultiDexApplication"> ... </application> </manifest>
multiDexEnabled true
在multiDexEnabled true
的default config file
中添加multiDexEnabled true
defaultConfig { multiDexEnabled true }
尝试将multiDexEnabled true
添加到您的应用程序build.gradle
文件。
defaultConfig { multiDexEnabled true }
Android Studiobuild议将Gradle插件从版本1.2.3更新到1.5.0时,我遇到了这个问题。 在其网页上 ,1.5.0似乎是一个testing版本。
老实说,我不知道版本1.5.0有什么优势,但我宁愿等到有一个稳定的版本。
当然,回到1.2.3解决了这个问题。
可能的帮助
在耗尽所有其他选项之后,试图作为绝对的最后的手段
我删除了所有的记忆棒(RAM),但一个。 现在我的记忆力减less了,但是再次运作。 我不能假装知道为什么构build过程总是发现损坏的内存,或者如果这是100%的根本原因 – 在其他方面系统运行良好。 也许这是一个尝试,好运。
不需要multitex。 对于在Android Studio 2.1中打开的“旧”项目,将Gradle插件版本从1.5.0更改为2.1.0,这对我来说是个问题。
buildscript { dependencies { classpath 'com.android.tools.build:gradle:2.1.0' } }
通过改变
编译“com.google.android.gms:play-services:8.1.0”
到只需要的文件,问题就可以解决了。这个问题是由于超过build.gradle文件中的文件而产生的。
我个人的解决scheme是:
在build.gradle
defaultConfig { multiDexEnabled true } dexOptions { javaMaxHeapSize "4g" }
对于我closures所有其他的Android Studio解决了这个问题。
当我收到错误信息后,我打开了3个安卓工作室,closures了2之后,我没有收到任何错误。
无需添加任何与multiDex相关的代码!
我解决了它! 这是一个configuration和更新的集合。 将这些variables添加到build.gradle中
android { packagingOptions { exclude 'META-INF/ASL2.0' exclude 'META-INF/LICENSE' exclude 'META-INF/NOTICE' } dexOptions { javaMaxHeapSize "4g" } defaultConfig { multiDexEnabled true } compileOptions { sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 } }
然后更新到Java 8 http://tecadmin.net/install-oracle-java-8-jdk-8-ubuntu-via-ppa/
和所有将被解决! 这是因为buildTools
更新和新的Android工作室。 没有别的将会失败。
当我将编译任务通过SSH委托给Google Compute Engine时,我遇到了这个问题。 这个问题的本质是一个内存错误,如崩溃日志所示; 特别是在Java构build过程中,Java耗尽了虚拟内存来处理它时。
重要提示: 由于此内存错误,当gradle崩溃时,gradle守护进程将在编译任务失败后长时间运行。 任何重新尝试再次使用gradle的构build都会分配一个新的gradle守护进程。 您必须确保使用 gradlew --stop
正确处理任何崩溃的实例 。
hs_error_pid
崩溃日志指示以下解决方法:
# There is insufficient memory for the Java Runtime Environment to continue. # Possible reasons: # The system is out of physical RAM or swap space # In 32 bit mode, the process size limit was hit # Possible solutions: # Reduce memory load on the system # Increase physical memory or swap space # Check if swap backing store is full # Use 64 bit Java on a 64 bit OS # Decrease Java heap size (-Xmx/-Xms) # Decrease number of Java threads # Decrease Java thread stack sizes (-Xss) # Set larger code cache with -XX:ReservedCodeCacheSize=
我发现在增加虚拟机的运行资源之后,这个问题就解决了。
我有一个类似的错误。 我通过切换目录来修复它。 从我的git仓库再次克隆我的项目,将其导入到android studio并构build它。 看起来像在Android Studio生成的项目可能已经损坏时生成的目录/文件之一。 删除项目中的所有Android Studio生成的文件或者做我所做的可以解决这个问题。 希望这可以帮助。
检查build.gradle(模块:Android)对我来说固定的问题。
将其修改为可行的版本。
android { buildToolsVersion '23.0.1' }
面对这个问题的所有人/将来都会面对这个问题:
点击Build菜单 – > Select Build Variant – >恢复到'debug'
对模块中的debuggable进行注释:app / * debug {debuggable true} * /
转到生成菜单 – >生成签名的apk – > …. – >build立它
移动文件底部的apply plugin声明:
应用插件:“com.google.gms.google-services”
显然,我通过将所有解决scheme添加到Android清单中来解决了这个问题:
<application ... android:name="android.support.multidex.MultiDexApplication" > ... </application>
继构build.gradle应用程序模块
android { ... dexOptions { javaMaxHeapSize "4g" preDexLibraries = false } ... defaultConfig { multiDexEnabled true } }
进入生成 – >清理并再次运行你的应用程序
确保你没有使用两个版本的谷歌服务。
例如有:
compile 'com.google.firebase:firebase-messaging:9.8.0'
和
compile 'com.google.firebase:firebase-ads:10.0.0'