VerifyError: Verifier rejected class ... 'this' arg must be initialized

VerifyError: Verifier rejected class ... 'this' arg must be initialized

第三方库升级后,我在应用启动时遇到新的崩溃问题:

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)

是的,我知道那里有很多类似的问题,但我没有找到任何解决方案或建议。

所以,也许那里有人可以为我提供提示或建议哪里出了问题。谢谢

其他人也遇到了这样的问题,我想这个可以帮到你! ⛅

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

The fix for this issue is available for AGP(Android Gradle Plugin) 3.3 (and 3.4) by setting an explicit dependency detailed below. After AGP 3.3.1 is released, remove the pinned version to allow you to pick up new D8/R8 releases again.

对于 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

我有一个建议 也许会有帮助

android {

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

 implementation 'com.android.support:multidex:1.0.0'

我是如何解决这个问题的:

我已将 gradle 版本从 3.5.3 升级到 3.6.3。噢谢谢你。也许我的经历可以帮助到一些人。

我认为这是第三方库的问题。

在我的例子中,我自己构建了库 .jar 并且不知道为什么在尝试测试 时会出现 VerifyError。测试应用程序中的 jar

问题出在 proguard.cfg -assumenosideeffectsLog

具体来说,在 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.