App crash in release mode, show FATAL EXCEPTION: main java.lang.NoSuchMethodError: No interface method

Viewed 683

App only crash in release mode. If I set minifyEnabled false, It isn't crash.

Android Gradle Plugin Version: 4.0.1 Gradle Version: 6.1.1

build.gradle(:app)

        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
            signingConfig signingConfigs.release
            applicationVariants.all { variant ->
                variant.outputs.all { output ->
                    def date = new Date();
                    def formattedDate = date.format('yyyyMMdd')
                    //def entorno = System.getProperty("entorno")
                    outputFileName = "MOVILIDAD_${variant.buildType.name}_${formattedDate}_${System.getProperty("entorno")}.apk"
                }
            }
        }

FATAL ERROR

09-15 13:25:13.879 12478-12478/? E/AndroidRuntime: FATAL EXCEPTION: main
    Process: es.indra.tdemov, PID: 12478
    java.lang.NoSuchMethodError: No interface method h(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; in class Landroid/content/res/XmlResourceParser; or its super classes (declaration of 'android.content.res.XmlResourceParser' appears in /system/framework/framework.jar)
        at androidx.core.content.FileProvider.g()
        at androidx.core.content.FileProvider.d()
        at androidx.core.content.FileProvider.attachInfo()
        at android.app.ActivityThread.installProvider(ActivityThread.java:6768)
        at android.app.ActivityThread.installContentProviders(ActivityThread.java:6363)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6303)
        at android.app.ActivityThread.access$1800(ActivityThread.java:222)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1862)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:158)
        at android.app.ActivityThread.main(ActivityThread.java:7230)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)

Thanks you

2 Answers

If you are using third party libraries in your project then make sure to add ProGuard-rule in your proguard-rules.pro file for that libraries.

Fixed: The getDefaultProguardFile method was not getting the file, because the name was wrong.

Wrong line:
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
Correct line: proguard-rules.pro
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

Fuente: https://developer.android.com/studio/build/shrink-code?hl=es

Related