Error:Execution failed for task ':app:transformClassesWithDexForDebug'
AndroidAndroid StudioAndroid Gradle-PluginAndroid MultidexAndroid Problem Overview
The error
>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 '/usr/lib/jvm/java-8-oracle/bin/java'' finished with non-zero exit value 1
My app gradle file:
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'
}
While debugging, if I set minifyEnabled to true, then it compiles. However, then I cannot debug my application.
I checked this other question: https://stackoverflow.com/questions/33369163/execution-failed-for-task-apptransformclasseswithdexfordebug-while-implement, but there is only one answer and implementing it does not resolve the issue unfortunately.
AFAIK, the error is caused due to addition of too many Gradle dependencies, but I may be wrong (I really hope to be wrong because all these packages are really important!).
Please help me to resolve this error. Much thanks!
Android Solutions
Solution 1 - Android
Just correct Google play services dependencies:
You are including all play services in your project. Only add those you want.
For example , if you are using only maps and g+ signin, than change
compile 'com.google.android.gms:play-services:8.1.0'
to
compile 'com.google.android.gms:play-services-maps:8.1.0'
compile 'com.google.android.gms:play-services-plus:8.1.0'
From the doc :
> In versions of Google Play services prior to 6.5, you had to compile
> the entire package of APIs into your app. In some cases, doing so made
> it more difficult to keep the number of methods in your app (including
> framework APIs, library methods, and your own code) under the 65,536
> limit.
>
> From version 6.5, you can instead selectively compile Google Play
> service APIs into your app. For example, to include only the Google
> Fit and Android Wear APIs, replace the following line in your
> build.gradle file:
> compile 'com.google.android.gms:play-services:8.3.0'
with these lines:
>
> compile 'com.google.android.gms:play-services-fitness:8.3.0'
> compile 'com.google.android.gms:play-services-wearable:8.3.0'
Solution 2 - Android
Try
dexOptions {
javaMaxHeapSize "4g"
preDexLibraries = false
}
I don't know the reason.
Something about preDexLibraries
:
https://sites.google.com/a/android.com/tools/tech-docs/new-build-system/tips
According to @lgdroid57 :
The following resource should help explain what this code does: link(http://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.DexOptions.html) Property | Description javaMaxHeapSize | Sets the -JXmx* value when calling dx. Format should follow the 1024M pattern. preDexLibraries | Whether to pre-dex libraries. This can improve incremental builds, but clean builds may be slower.
Solution 3 - Android
Try adding multiDexEnabled true
to your app build.gradle
file.
defaultConfig {
multiDexEnabled true
}
Solution 4 - Android
This is the problem about Multidex . You can try to remove some jar, or you can try like this : 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'
}
In your manifest :
<?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>
Solution 5 - Android
add multiDexEnabled true
in default config file
of build.gradle
like this
defaultConfig {
multiDexEnabled true
}
Solution 6 - Android
The solution that worked for me personally was:
in the build.gradle
defaultConfig {
multiDexEnabled true
}
dexOptions {
javaMaxHeapSize "4g"
}
Solution 7 - Android
My response is a little bit old but for my the only solution was adding multiDexEnabled option in defaultConfig like this:
android{
...
defaultConfig{
...
multiDexEnabled true
}
}
If this does not work for you try adding this piece of code:
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
def requested = details.requested
if (requested.group == 'com.android.support') {
if (!requested.name.startsWith("multidex")) {
details.useVersion '26.1.0'
}
}
}
}
My error was related to a problem with different libraries versions and this made the trick.
I hope this can help somebody :)
Solution 8 - Android
Make sure you aren't using two versions of google service.
For example having:
compile 'com.google.firebase:firebase-messaging:9.8.0'
and
compile 'com.google.firebase:firebase-ads:10.0.0'
Solution 9 - Android
I got this problem when I updated the Gradle plugin from version 1.2.3 to 1.5.0 as Android Studio suggested. In its web page, 1.5.0 appears to be a beta version.
Honestly, I don't know what advantages the version 1.5.0 has, but I'd rather wait until there's a stable version.
Of course, going back to 1.2.3 solved the issue.
Solution 10 - Android
Possible help
Tried as absolute last resort after exhausting all other options
I removed all memory sticks (RAM) but one. I have less memory now but its working again. I can't pretend to know why the build process always found corrupted memory, or if that's 100% the root cause - in other respects the system ran fine. Maybe this is something to try, best of luck.
Solution 11 - Android
For me closing all other Android Studio solved the problem.
I had opened 3 android studios when I was getting the error, after I closed 2 I didn't get any error.
No need to add any code related to multiDex !
Solution 12 - Android
No need for multitex. For "old" project opened in Android Studio 2.1 it was changing gradle plugin version from 1.5.0 to 2.1.0 that fixed problem for me.
buildscript {
dependencies {
classpath 'com.android.tools.build:gradle:2.1.0'
}
}
Solution 13 - Android
I solved it! It's a collection of configuration and update. Add these variables where they fit in 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
}
}
Then update to Java 8 http://tecadmin.net/install-oracle-java-8-jdk-8-ubuntu-via-ppa/
and all will be solved!
It's because of the buildTools
update and new Android studio.
Nothing else will fail.
Solution 14 - Android
By changing
> compile 'com.google.android.gms:play-services:8.1.0' >
to only needed files, the problem can be solved This Issue is generated because of exceeding files in th build.gradle file.
Solution 15 - Android
Apparently I resolved the issue by combining all the solutions adding following to android manifest:
<application
...
android:name="android.support.multidex.MultiDexApplication" >
...
</application>
Following to build.gradle app module
android {
...
dexOptions {
javaMaxHeapSize "4g"
preDexLibraries = false
}
...
defaultConfig {
multiDexEnabled true
}
}
Solution 16 - Android
Go into Build -> Clean and run your app again
Solution 17 - Android
Go into Build ->
Clean Project ->
Run project : done
working on android 5.1 for me
Solution 18 - Android
just remove both build
folder in /android
and /android/app
and build again with react-native run-android
Solution 19 - Android
Using ionic, i was able to fix this error using the command: "cordova clean"
Solution 20 - Android
I had this problem when I delegated my compilation task to the Google Compute Engine via SSH. The nature of this issue is a memory error, as indicated by the crash log; specifically it is thrown when Java runs out of virtual memory to work with during the build.
Important:
When gradle crashes due to this memory error, the gradle daemons remain running long after your compilation task has failed. Any re-attempt to build using gradle again will allocate a new gradle daemon. You must ensure that you properly dispose of any crashed instances using gradlew --stop
.
The hs_error_pid
crash logs indicates the following workarounds:
# 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=
I found that after increasing the runtime resources of the virtual machine, this issue was resolved.
Solution 21 - Android
I had a similar error. I fixed it by just switching the directory. Cloning my project again from my git repository, importing it into android studio and building it. Seems like one of the directories/files generated by Android Studio when building your project may have gotten corrupted. Deleting all Android Studio generated files in your project or doing what I did could solve the problem. Hope this helps.
Solution 22 - Android
To all who have faced this issue/ will face it in the future:
Click on Build menu -> Select Build Variant -> restore to 'debug'
Outcomment on debuggable in module:app /* debug { debuggable true }*/
Go to Build menu -> generate signed apk -> .... -> build it
Solution 23 - Android
Move the apply plugin declaration at the bottom of the file:
apply plugin: 'com.google.gms.google-services'
Solution 24 - Android
- Execute: cordova plugin rm cordova-plugin-compat --force
- Execute: cordova plugin add [email protected]
- Change : config.xml in your project folder use "6.2.3" not "^6.2.3", then delete the platforms/android folder, re-run cordova prepare android, and cordova build android
Solution 25 - Android
Dont go crazy I just clean , then rebuild project and error was gone
Solution 26 - Android
I had this error when running an Ionic project on an Android device and I solved it by removing and adding android platform:
ionic cordova platform remove android
ionic cordova platform add android
Solution 27 - Android
In my case:-
- What went wrong: Execution failed for task ':app:multiDexListDebug'.
Answer:-
I just deleted the react-native-firebase
folder which will be inside the node_modules
folder, that's it then I could run the app successfully.
And one more thing don't forget to remove react-native-firebase
but not @react-native-firebase
in package.json file. So that next time when you run npm I
or yarn
. This won't get installed in your app.
This package was causing the issue.
Solution 28 - Android
If java 8 or above is used then the problem is the libraries we use are incompatible with java 8. So to solve this add these two lines to build.gradle of your app and all sub modules if any. (Android studio clearly show how to do this in error message)
>targetCompatibility = '1.7' >sourceCompatibility = '1.7'
Solution 29 - Android
Just delete .gradle
folder from android platform, then re-build the project, the Android Studio will generate it again.