Search code examples
androidbuildcontinuous-integrationkotlingitlab

java.lang.IllegalStateException: Dex archives: setting .DEX extension only for .CLASS files


I build the project at gitlab ci

./gradlew assembleDebug --stacktrace

and sometimes it throws an error:

FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:transformClassesWithDexBuilderForDebug'.
> com.android.build.api.transform.TransformException: java.lang.IllegalStateException: Dex archives: setting .DEX extension only for .CLASS files

At my local pc it works correctly.

kotlin version is 1.2

multidex is enabled

What is the reason of this error?


Solution

  • It seems I found the solution. At the build moment gradle was showing warnings for me:

    Configuration 'compile' in project ':app' is deprecated. Use 'implementation' instead.
    
    app: 'androidProcessor' dependencies won't be recognized as kapt annotation processors. Please change the configuration name to 'kapt' for these artifacts: 'com.arello-mobile:moxy-compiler:1.5.3' and apply the kapt plugin: "apply plugin: 'kotlin-kapt'".
    

    I made a misspelling and forgot to remove unnecessary annotationProcessor for library:

    annotationProcessor "com.arello-mobile:moxy-compiler:$moxyVersion"
    kapt "com.arello-mobile:moxy-compiler:$moxyVersion"
    

    So I removed first line.

    After that I applied kapt plugin apply plugin: 'kotlin-kapt' and fixed some build errors in code after it.

    After all I realized that I forgot to replace compile to implementation in some places. It is weird but without it build didn't work.

    This changes fix my error build.