Java finished with non-zero exit value 2 - Android Gradle

前端 未结 23 2452
甜味超标
甜味超标 2020-11-22 02:54

I\'m getting this error executing my Android app (I cleaned it and then built it, but the error is still present)

  • Sync: OK
  • Make Project: OK
23条回答
  •  攒了一身酷
    2020-11-22 03:03

    Just in case if someone still struggling with this and have no clue why is this happening and how to fix. In fact this error

    Error:Execution failed for task ':app:dexDebug'. > com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdkx.x.x_xx\bin\java.exe'' finished with non-zero exit value 2

    can have many reasons to happen but certainly not something related to your JDK version so don't wast your time in wrong direction. These are two main reasons for this to happen

    1. You have same library or jar file included several places and some of them conflicting with each other.
    2. You are about to or already exceeded 65k method limit

    First case can be fixed as follows: Find out which dependencies you have included multiple times. In order to do this run following command in android studio terminal

    gradlew -q dependencies yourProjectName_usually_app:dependencies --configuration compile
    

    this will return all the dependencies but jar files that you include from lib folder try to get rid of duplication marked with asterisk (*), this is not always possible but in some cases you still can do it, after this try to exclude modules that are included many times, you can do it like this

    compile ('com.facebook.android:facebook-android-sdk:4.0.1'){
        exclude module: 'support-v4'
    }
    

    For the second case when you exceeding method limit suggestion is to try to minimize it by removing included libraries (note sounds like first solution) if no way to do it add multiDexEnabled true to your defaultConfig

    defaultConfig {
       ...
       ...
       multiDexEnabled true
    }
    

    this increases method limit but it is not the best thing to do because of possible performance issues IMPORTANT adding only multiDexEnabled true to defaultConfig is not enough in fact on all devices running android <5 Lollipop it will result in unexpected behavior and NoClassDefFoundError. how to solve it is described here

提交回复
热议问题