在将我们的项目迁移到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,则应用程序可以重新启动而不崩溃。你们有任何想法为什么会出现这种情况以及如何解决吗?谢谢!