ClassCastException ContentFrameLayout androidx 与系统应用程序中的 support.v7

ClassCastException ContentFrameLayout androidx vs. support.v7 in system app

我在 SampleActivity.

中仅使用 FrameLayout 时出现系统应用程序异常异常
Caused by: java.lang.ClassCastException: androidx.appcompat.widget.ContentFrameLayout cannot be cast to android.support.v7.widget.ContentFrameLayout
05-22 08:41:05.357 10520 10520 E AndroidRuntime: at android.support.v7.app.AppCompatDelegateImpl.createSubDecor(AppCompatDelegateImpl.java:685)
05-22 08:41:05.357 10520 10520 E AndroidRuntime: at android.support.v7.app.AppCompatDelegateImpl.ensureSubDecor(AppCompatDelegateImpl.java:516)
05-22 08:41:05.357 10520 10520 E AndroidRuntime: at android.support.v7.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:464)
05-22 08:41:05.357 10520 10520 E AndroidRuntime: at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
05-22 08:41:05.357 10520 10520 E AndroidRuntime: at com.sample.SampleActivity.onCreate(SampleActivity.java:98)

所以我查看了此处显示的 AppCompatDelegateImpl 的源代码:AppCompatDelegateImpl

SampleActivity.java 中的进口:

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;

虽然这个 class 是 android 的一部分 appcompat.v7 但它在内部导入 androidx.appcompat.widget.ContentFrameLayout 这是否意味着 appcompat.v7 在内部使用 androidx依赖关系?如果是,那为什么我会收到此异常?

注意:请避免给出基于gradle的解决方案,因为它是一个系统应用程序。

更新您的导入报表。您使用的 class 具有相同的名称但来自不同的包。

转到gradle.properties文件并确保

android.useAndroidX=false

如果您将此设置为 true,android 插件将使用 AndroidX 库而不是支持库。此外,如果您无法在 gradle.properties 中找到 useAndroidX,请尝试添加它并执行 gradle 同步。

修复是在 Android.mk 文件中包含 androidx 依赖项。

还必须按照 Android 开发者网站中的建议将支持库 类 的所有导入更改为 androidx:https://developer.android.com/jetpack/androidx/migrate