VerifyError: Верификатор отклонил класс «этот» аргумент, который должен быть инициализирован

после обновления сторонней библиотеки у меня появился новый сбой при запуске приложения:

java.lang.VerifyError: Verifier rejected class ly.img.android.e: void ly.img.android.e.<init>(java.lang.String, boolean) failed to verify: void ly.img.android.e.<init>(java.lang.String, boolean): [0x5C] 'this' arg must be initialized (declaration of 'ly.img.android.e' appears in base.apk!classes2.dex)
    at ly.img.android.b.<clinit>(Unknown Source:46)
    at ly.img.android.c.b(Unknown Source:0)
    at ly.img.android.PESDK.initSDK(Unknown Source:0)
    at ly.img.android.IMGLYAutoInit.onCreate(IMGLYAutoInit.java:41)
    at android.content.ContentProvider.attachInfo(ContentProvider.java:2092)
    at android.content.ContentProvider.attachInfo(ContentProvider.java:2066)
    at android.app.ActivityThread.installProvider(ActivityThread.java:6983)
    at android.app.ActivityThread.installContentProviders(ActivityThread.java:6528)

Да, я знаю, что там много подобных проблем, но я не нашел решения или совета для себя.

Так что, может быть, кто-то там может подсказать или посоветовать мне, что там не так. Спасибо


person Artem    schedule 05.05.2020    source источник


Ответы (4)


Другие тоже сталкивались с такой проблемой, я думаю, это может вам помочь! ⛅

java.lang.VerifyError: Verifier rejected class ly.img.android.e: void ly.img.android.e.<init>(java.lang.String, boolean) failed to verify: void ly.img.android.e.<init>(java.lang.String, boolean): [0x5C] 'this' arg must be initialized (declaration of 'ly.img.android.e' appears in base.apk!classes2.dex)

Но, согласно ветке GitHub, они нашли решение этой проблемы.

https://github.com/CleverTap/clevertap-android-sdk/issues/15#issuecomment-454842450

Исправление этой проблемы доступно для AGP (Android Gradle Plugin) 3.3 (и 3.4) путем установки явной зависимости, подробно описанной ниже. После выпуска AGP 3.3.1 удалите закрепленную версию, чтобы снова получить новые выпуски D8/R8.

Для AGP 3.3 измените файл build.gradle верхнего уровня следующим образом:

buildscript {
    repositories {
        maven {
            url "http://storage.googleapis.com/r8-releases/raw" // ADD THIS.
        }
    }
    dependencies {
        classpath 'com.android.tools:r8:1.3.52'  // ADD THIS. Must be before the Gradle Plugin for Android.
        classpath 'com.android.tools.build:gradle:3.3'
    }
}

Для AGP 3.4 версия r8 должна быть 1.4.25.

person Dupinder Singh    schedule 28.05.2020

У меня есть предложение Может быть, это поможет

android {

    defaultConfig {
       ...
        // Enabling multidex support.
        multiDexEnabled true
    }
    ...
}

а также

 implementation 'com.android.support:multidex:1.0.0'
person Javad Dehban    schedule 03.06.2020

Как я решил проблему:

Я обновил версию gradle с 3.5.3 до 3.6.3. Угу и спасибо. Может мой опыт кому поможет.

person Artem    schedule 04.06.2020

Я думаю, что это проблема со сторонней библиотекой.

В моем случае я сам создал библиотеку .jar и понятия не имел, почему VerifyError появляется при попытке протестировать .jar в тестовом приложении.

Проблема была в proguard.cfg с -assumenosideeffects и Log.

В частности, внутри proguard.cfg (моей библиотеки) была следующая строка:

-assumenosideeffects class android.util.Log {*;}

Заменив его на:

-assumenosideeffects class android.util.Log {
    public static *** v(...);
    public static *** d(...);
    public static *** i(...);
    public static *** w(...);
    public static *** e(...);
}

и создание и запутывание его снова решили проблему.

Я нашел ответ на свою проблему здесь.

Я знаю, что это не дает прямого ответа на исходный вопрос, но я оставил этот ответ здесь, чтобы помочь тому, кто пытается собрать .jar, и результат его использования VerifyError.

person mr. Gauss    schedule 30.06.2021