【问题标题】:java.lang.IllegalAccessError triggering due to the class androidx.appcompat.widget.AppCompatImageView is inaccessiblejava.lang.IllegalAccessError 由于类 androidx.appcompat.widget.AppCompatImageView 无法访问而触发
【发布时间】:2022-01-08 13:06:01
【问题描述】:

我最近将 Android 目标 SDK 版本从 29 更改为 30。现在我遇到了一个新的崩溃,上面写着以下内容

Fatal Exception: java.lang.IllegalAccessError: Interface androidx.core.widget.l implemented by class androidx.appcompat.widget.AppCompatImageView is inaccessible (declaration of 'androidx.appcompat.widget.AppCompatImageView' appears in /data/app/co.udhaar.app-aPVvUdO7b4lt8gLmAiy5kA==/base.apk)

堆栈跟踪:

Fatal Exception: java.lang.IllegalAccessError: Interface androidx.core.widget.l implemented by class androidx.appcompat.widget.AppCompatImageView is inaccessible (declaration of 'androidx.appcompat.widget.AppCompatImageView' appears in /data/app/co.udhaar.app-aPVvUdO7b4lt8gLmAiy5kA==/base.apk)
   at androidx.appcompat.app.AppCompatDelegateImpl.createView(AppCompatDelegateImpl.java:1527)
   at androidx.appcompat.app.AppCompatDelegateImpl.onCreateView(AppCompatDelegateImpl.java:1602)
   at android.view.LayoutInflater.tryCreateView(LayoutInflater.java:1061)
   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:997)
   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:961)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:659)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:534)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:481)
   at com.android.internal.policy.DecorView.onResourcesLoaded(DecorView.java:2757)
   at com.android.internal.policy.PhoneWindow.generateLayout(PhoneWindow.java:2791)
   at com.android.internal.policy.PhoneWindow.installDecor(PhoneWindow.java:2858)
   at com.android.internal.policy.PhoneWindow.getDecorView(PhoneWindow.java:2167)
   at androidx.appcompat.app.AppCompatDelegateImpl.createSubDecor(AppCompatDelegateImpl.java:864)
   at androidx.appcompat.app.AppCompatDelegateImpl.ensureSubDecor(AppCompatDelegateImpl.java:806)
   at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:693)
   at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:170)
   at androidx.databinding.DataBindingUtil.setContentView(DataBindingUtil.java:303)
   at androidx.databinding.DataBindingUtil.setContentView(DataBindingUtil.java:284)
   at co.udhaar.app.ui.splashScreen.SplashActivity.onCreate(SplashActivity.java:78)
   at android.app.Activity.performCreate(Activity.java:7955)
   at android.app.Activity.performCreate(Activity.java:7944)
   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1307)
   at androidx.test.runner.MonitoringInstrumentation.callActivityOnCreate(MonitoringInstrumentation.java:2)
   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3531)
   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3703)
   at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
   at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
   at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2216)
   at android.os.Handler.dispatchMessage(Handler.java:107)
   at android.os.Looper.loop(Looper.java:237)
   at android.app.ActivityThread.main(ActivityThread.java:7948)
   at java.lang.reflect.Method.invoke(Method.java)
   at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1075)

Gradle 版本:

6.5

Gradle 插件

4.0.0

以下是我项目中的 androidx 依赖项

implementation "androidx.legacy:legacy-support-v4:1.0.0"
implementation "androidx.recyclerview:recyclerview:1.1.0"
implementation "androidx.appcompat:appcompat:1.1.0"
implementation "androidx.cardview:cardview:1.0.0"
implementation "androidx.constraintlayout:constraintlayout:1.1.3"
implementation "androidx.work:work-runtime-ktx:2.3.2"
implementation "androidx.annotation:annotation:1.1.0"
implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
implementation "androidx.multidex:multidex:2.0.1"
annotationProcessor "androidx.lifecycle:lifecycle-common-java8:2.2.0"

我被这个问题困住了。如果你们能有所启发,那就太好了。提前谢谢...

【问题讨论】:

  • 不是一个真正的答案,但也许是一种解决方法,您是否尝试过使用ImageViewAppCompatImageView 文档说“当您在布局中使用 ImageView 并且顶级活动/对话框由 appcompat 提供时,它将自动使用。您应该只需要在编写自定义视图时手动使用此类。”这是来源:developer.android.com/reference/kotlin/androidx/appcompat/…
  • @JoséFernandoGarciaJunior 抱歉没有提及。我已经在我的布局中使用 ImageView

标签: android proguard android-appcompat minify androidx


【解决方案1】:

我不确定这是否已解决。 我只是将这行代码添加到 proguard-rules.pro 文件中:

-keep class androidx.appcompat.** { *; }

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
  • 这肯定行得通,我已经通过添加 -keep class androidx.appcompat.** { *; } 到 Proguard 规则中。但我不认为这是一个答案,而不是一种解决方法。我不知道是什么导致了这种情况以及为什么 Minify 删除了这些类,并且它在目标 API 级别为 29 的先前版本中运行良好。
猜你喜欢
  • 2022-01-22
  • 2021-06-22
  • 2013-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-18
  • 2011-12-22
  • 2012-09-05
相关资源
最近更新 更多