java.lang.NoSuchMethodException: android.content.res.Resources$Theme.rebase []

mon*_*lou 8 java android proguard kotlin android-studio

设置后minifyEnabled true,我在发布的应用程序中收到此错误

知道如何解决吗?

2020-07-01 11:51:33.651 30098-30098/? I/ResourcesCompat: Failed to retrieve rebase() method
    java.lang.NoSuchMethodException: android.content.res.Resources$Theme.rebase []
        at java.lang.Class.getMethod(Class.java:2069)
        at java.lang.Class.getDeclaredMethod(Class.java:2047)
        at androidx.core.content.res.ResourcesCompat$ThemeCompat$ImplApi23.rebase(SourceFile:3)
        at androidx.core.content.res.ResourcesCompat$ThemeCompat.rebase(SourceFile:3)
        at androidx.appcompat.app.AppCompatDelegateImpl.attachBaseContext2(SourceFile:32)
        at androidx.appcompat.app.AppCompatActivity.attachBaseContext(SourceFile:1)
        at com.kahkeshan.tv_app.base.BaseActivity.attachBaseContext(SourceFile:1)
        at android.app.Activity.attach(Activity.java:7244)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3080)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3282)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1970)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7156)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:975) 
Run Code Online (Sandbox Code Playgroud)

gradle 文件中的设置:

  release {
            minifyEnabled true
            shrinkResources true
            zipAlignEnabled true
            pseudoLocalesEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
Run Code Online (Sandbox Code Playgroud)

小智 0

在 ProGuard 配置文件中,您需要-keep为缺少的方法添加规则rebase()。下面的-keep选项就可以解决问题;

-keep class android.content.res.Resources$Theme {
  void rebase();
}
Run Code Online (Sandbox Code Playgroud)

使用ProGuard Playground-keep ,您可以在项目的类树中查看选项的效果。它可以帮助您创建微调-keep选项来解决类似问题。