androidx.appcompat.widget.AppCompatTextView 与 API < 26 不兼容

Posted

技术标签:

【中文标题】androidx.appcompat.widget.AppCompatTextView 与 API < 26 不兼容【英文标题】:androidx.appcompat.widget.AppCompatTextView not compatible with API < 26 【发布时间】:2019-10-18 17:02:18 【问题描述】:

将我们的项目迁移到 androidx 后,我遇到了一个奇怪的问题。我们使用从 androidx.appcompat.widget.AppCompatTextView 扩展而来的自定义视图。但是,应用程序在 API

java.lang.NoClassDefFoundError: android.view.textclassifier.TextClassifier
    at libcore.reflect.InternalNames.getClass(InternalNames.java:55)
    at java.lang.Class.getDexCacheType(Class.java:2551)
    at java.lang.reflect.AbstractMethod.getParameterTypes(AbstractMethod.java:169)
    at java.lang.reflect.Method.getParameterTypes(Method.java:193)
    at org.greenrobot.eventbus.SubscriberMethodFinder.findUsingReflectionInSingleClass(SubscriberMethodFinder.java:163)
    at org.greenrobot.eventbus.SubscriberMethodFinder.findUsingInfo(SubscriberMethodFinder.java:88)
    at org.greenrobot.eventbus.SubscriberMethodFinder.findSubscriberMethods(SubscriberMethodFinder.java:64)
    at org.greenrobot.eventbus.EventBus.register(EventBus.java:140)
    at com.chrono24.mobile.controls.LocalizedTextView.onAttachedToWindow(LocalizedTextView.kt:65)

现在,正如我所见,android.view.textclassifier.TextClassifier 添加了 API 26,这可以解释为什么缺少该类。如果我将 AppCompatTextView 更改为普通的旧 TextView,应用程序将再次启动而不会崩溃。知道为什么会发生这种情况以及如何解决吗?提前致谢。

【问题讨论】:

当我将 androidx 库从 alpha 降级到 stable 时问题消失了。 当自定义视图尝试向 greenrobot EventBus 注册自身时,似乎出现了问题。 【参考方案1】:

您只需要确保您没有使用自定义字体或 .ttf 文件 如果您正在使用,则将您的 .ttf 文件转换为 .otf 它将适用于 android 10 这是 android 10 的一个已知问题。

【讨论】:

以上是关于androidx.appcompat.widget.AppCompatTextView 与 API < 26 不兼容的主要内容,如果未能解决你的问题,请参考以下文章

迁移到AndroidX后:无法实例化类:androidx.appcompat.widget.ShareActionProvider。

android.widget.Toolbar 无法转换为 androidx.appcompat.widget.Toolbar(android 工具栏)

Android studio 3.6 ToolBar问题

Android studio 3.6 ToolBar问题

Toolbar

第三周作业