【问题标题】:java.lang.NoSuchMethodException: android.content.res.Resources$Theme.rebase []java.lang.NoSuchMethodException: android.content.res.Resources$Theme.rebase []
【发布时间】:2020-10-21 14:23:46
【问题描述】:

设置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) 

gradle 文件中的设置:

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

【问题讨论】:

  • 你好 Mona 你能找到这个异常的原因吗?我在这里面临同样的问题。
  • 这个问题有什么解决办法吗?目前面临同样的问题。当我从 logcat 中单击错误时,我重定向到活动的以下方法。覆盖乐趣 attachBaseContext(newBase: Context) { super.attachBaseContext(localizationDelegate.attachBaseContext(newBase)) }
  • 对不起,我解决了这个问题,但我忘了在这里写解决方案。不幸的是,我现在不记得解决方案了。再次抱歉没能帮到你。 @HiteshDhamshaniya
  • 哦..不 :(,如果您编写解决方案,它将帮助像我这样被此问题困扰的其他开发人员。无论如何,谢谢。

标签: java android android-studio kotlin proguard


【解决方案1】:

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

-keep class android.content.res.Resources$Theme {
  void rebase();
}

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

【讨论】:

    猜你喜欢
    • 2013-03-12
    • 2013-11-23
    • 2015-02-25
    • 1970-01-01
    • 1970-01-01
    • 2012-05-26
    • 1970-01-01
    • 2013-08-04
    相关资源
    最近更新 更多