34

I have recently started learning how to program Android devices via Android Studio. My first app was running fine until I upgraded to Android Studio 3.4 this morning.

I'm getting the following compilation errors:

Caused by: com.android.builder.dexing.DexArchiveBuilderException: Failed to process C:\Users\Technical.gradle\caches\transforms-2\files-2.1\4f3f8638c6a9f961dae488a0387efb6b\jars\classes.jar

Caused by: com.android.builder.dexing.DexArchiveBuilderException: Error while dexing.

Caused by: com.android.tools.r8.CompilationFailedException: Compilation failed to complete

Caused by: com.android.tools.r8.utils.AbortException: Error: Invoke-customs are only supported starting with Android O (--min-api 26)

Is there a way of reverting back to my previous version of Android Studio?

If not what has changed in the new version that is causing a failure in creating the dex file?

I have tried adding android.enableD8=true in gradle.properties as suggested here but no luck.


EDIT #1:

Have also tied adding multiDexEnabled true to the default configuration in the app build.gradle file but the same compilation errors persist.

That build file in full...

apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "qdivision.org.qrtracker"
        minSdkVersion 15
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        multiDexEnabled true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation 'com.github.felHR85:UsbSerial:6.0.5'
}
Community
  • 1
  • 1
DrBwts
  • 3,470
  • 6
  • 38
  • 62

20 Answers20

74

Try to add below to your app/build.gradle to make your Android project compilation be compatible with Java 8.

android {
    ....
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    ....
}
shizhen
  • 12,251
  • 9
  • 52
  • 88
3

I had to remove useProguard true from the buildTypes configuration.

According to the documentation minifyEnabled true is enough to obfuscate your code with R8.

Example:

android {
    buildTypes {
        debug {
            versionNameSuffix "-dev"
            minifyEnabled true // <- remove this line when using instant run
            useProguard true // <- remove this line
            signingConfig signingConfigs.release
            proguardFiles getDefaultProguardFile('proguard-android.txt'), "proguard-rules.pro"
        }

        release {
            shrinkResources true
            minifyEnabled true
            useProguard true // <- remove this line
            signingConfig signingConfigs.release
            proguardFiles getDefaultProguardFile('proguard-android.txt'), "proguard-rules.pro"
        }
    }
}
McFarlane
  • 1,777
  • 2
  • 22
  • 39
2

for me following command in BUILD.GRADLE removed the error.

defaultConfig {
      applicationId "com.example.myapptestheader"
      minSdkVersion 21
      targetSdkVersion 29
      versionCode 1
      versionName "1.0"
      testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
   
      multiDexEnabled true
}

I just added

multiDexEnabled true
Codemaker2015
  • 12,190
  • 6
  • 97
  • 81
1

What is relevant in this stacktrace is this line:

Caused by: com.android.tools.r8.utils.AbortException: Error: Invoke-customs are only supported starting with Android O (--min-api 26)

As there is not kotlin library in your dependencies, I assume you’re working with java. I would try answers in this issue

Kuba Pawłowski
  • 365
  • 2
  • 10
1

in your Android Studio go to build.gradle(Module:App) then add this compileOptions{} block into android{} block

android{
    compileOptions {
        sourceCompatibility 1.8
        targetCompatibility 1.8
    }
}
shizhen
  • 12,251
  • 9
  • 52
  • 88
nayem
  • 11
  • 1
0

If you are using Google Cloud library, try to decrease the version to 1.90

Enayat Afridi
  • 43
  • 1
  • 4
0

Add the following to make your app to be compiled by java8 compiler.

android {

    .....
    
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

And disable instant-run found at

Preferences->Build,Execution,Deployment->Debugger->Instant Run

Community
  • 1
  • 1
Hagos Alema
  • 321
  • 2
  • 10
0

I have added to all modules these code:

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

But error was still there. In my case some of my modules used classpath 'me.tatarka:gradle-retrolambda' and it gave the conflict with this:

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

So I have to migtrated from Retrolambda by this link: https://developer.android.com/studio/write/java8-support#migrate_from_retrolambda

Denis Fedak
  • 436
  • 4
  • 8
0

Please add this line in build.gradle file.

android{
 compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8

    }
}
Anas Mehar
  • 2,739
  • 14
  • 25
MEGHA DOBARIYA
  • 1,622
  • 9
  • 7
0

I had the same problem. Mine was caused by ... org.apache.commons:commons-lang .... I do not have the complete error message at the moment. This error only occurred during a Rebuild or Clean Build.

I Resolved by changing the org.apache.commons:commons-text:1.8 in my build.gradle to org.apache.commons:commons-text:1.6.

Note - There was a suggestion here to disable "Instant Run" in Android Studio. This feature was not available in my Android Studio. Version -

Android Studio 3.5.1
Build #AI-191.8026.42.35.5900203, built on September 26, 2019
Windows 10 10.0 
Nikhil Girraj
  • 1,135
  • 1
  • 15
  • 33
0

for kotlin you should also add kotlinOptions:

android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    kotlinOptions {
        jvmTarget = JavaVersion.VERSION_1_8.toString()
    }
}
Amir Hossein Ghasemi
  • 20,623
  • 10
  • 57
  • 53
0

for me solution with Java 8 started work only after I have removed all ting related to retrolambda.

ViT-Vetal-
  • 2,431
  • 3
  • 19
  • 35
0

For anyone else hitting this, I encountered this problem after adding a dependency on this Jackson library:

implementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.11.1")

The "compileOptions" solution above fixed the issue for me

davidfrancis
  • 3,734
  • 2
  • 24
  • 21
0

This still works in 2021 please try it.

android {
    compileSdkVersion 30

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    defaultConfig {
        applicationId "com.example.android.bakingapp"
        minSdkVersion 15
        targetSdkVersion 30
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
0

For my case, It was also showing after adding the following lines -

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

So I fixed my problem just simply update my minSdkVersion from 19 to 21 and then finally it worked !!!

Gk Mohammad Emon
  • 6,084
  • 3
  • 42
  • 42
0

I faced this error after upgrading the core libraries in build.gradle to there latest versions luckily accepted answer worked for me.

The reason of working of accepted answer was the change in the latest version of core library targeting api level 30 which is written in java8 therefore adding dependency to java8 solved it.

PRANAV SINGH
  • 1,000
  • 11
  • 17
0

As of December 2021, this is what works. The reason why I have ran into this is because of missing skd version 26 and missing java version 8. Under your build.gradle(app) folder, add the following code to make sure that you have the correct dependencies, default configurations and android compatibilities. You don't need to know what they mean yet, just know they exist. Basically you are trying to make sure that Android can read previous version of things. Here is the code that I run to ensure that my apps run.

apply plugin: 'com.android.application'

android {

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}
compileSdkVersion 26
compileSdkVersion 27
compileSdkVersion 30
buildToolsVersion "30.0.2"


defaultConfig {
    applicationId "com.example.firstfirstapp"
    minSdkVersion 16
    targetSdkVersion 26
    targetSdkVersion 30
    versionCode 1
    versionName "1.0"

    testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}

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

}

dependencies {
implementation fileTree(dir: "libs", include: ["*.jar"])
implementation "androidx.cardview:cardview:1.0.0"
implementation 'androidx.appcompat:appcompat:1.3.1'
implementation 'androidx.constraintlayout:constraintlayout:2.1.1'
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support:design:26.1.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'

implementation 'com.android.support:appcompat-v7:26.0.0'

}
0

add this line:- multiDexEnabled true in build. gradle

in` defaultConfig { ... multiDexEnabled true }

Also make minsdk = 26

-1

try this:

    defaultConfig {
    ...
    multiDexEnabled true
    }
nes
  • 81
  • 1
  • 10
-1

If you are trying to run apk directly from android studio, please try to avoid enabling

minifyEnabled true

Comment the following line.

//            minifyEnabled true
//            shrinkResources true

But you can use above line while building apk.

vbp
  • 1,157
  • 10
  • 16