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

4

在将我们的项目迁移到androidx后,我遇到了一个奇怪的问题。我们使用了一个自定义视图,它继承自androidx.appcompat.widget.AppCompatTextView。然而,在API < 26的设备上,应用程序会崩溃,并出现以下堆栈跟踪(仅保留相关部分):

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版本降级到稳定版本时,问题消失了。 - zlobi.wan.kenobi
看起来问题出现在自定义视图尝试向greenrobot EventBus注册自己时。 - zlobi.wan.kenobi
1个回答

0

你只需要确保不使用自定义字体或 .ttf 文件,如果正在使用,则将您的 .ttf 文件转换为 .otf,这样在 Android 10 上就可以正常工作了,这是目前 Android 10 已知的问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接