Сбой приложения в режиме выпуска, показывает ФАТАЛЬНОЕ ИСКЛЮЧЕНИЕ: main java.lang.NoSuchMethodError: нет метода интерфейса

#android #android-studio

#Android #android-studio

Вопрос:

Сбой приложения только в режиме выпуска. Если я установлю minifyEnabled false, это не сбой.

Версия плагина Android Gradle: 4.0.1 Версия Gradle: 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"
                }
            }
        }
  

ФАТАЛЬНАЯ ОШИБКА

 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)
  

Спасибо вам

Ответ №1:

Если вы используете сторонние библиотеки в своем проекте, то обязательно добавьте ProGuard-rule в свои proguard-rules.профессиональный файл для этих библиотек.

Комментарии:

1. Большое вам спасибо

Ответ №2:

Исправлено: метод getDefaultProguardFile не получал файл, потому что имя было неправильным.

Неправильная строка:
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'

Правильная строка: proguard-rules.pro

proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

Фуэнте:https://developer.android.com/studio/build/shrink-code?hl=es