致命异常:java.lang.NoClassDefFoundError某些设备的Ljava / time / Month解析失败

时间:2019-07-19 09:22:29

标签: android proguard android-multidex

我通过以下堆栈跟踪获取崩溃信息:

Caused by java.lang.ClassNotFoundException
Didn't find class "java.time.Month" on path: DexPathList[[zip file "/data/app/com.my.app/base.apk"],nativeLibraryDirectories=[/data/app/com.my.app/lib/arm, /data/app/com.my.app/base.apk!/lib/armeabi-v7a, /system/lib, /vendor/lib]]
at dalvik.system.BaseDexClassLoader.findClass + 56(BaseDexClassLoader.java:56)
   at java.lang.ClassLoader.loadClass + 380(ClassLoader.java:380)
   at java.lang.ClassLoader.loadClass + 312(ClassLoader.java:312)
   at com.my.app.root.path.to.my.Class$disableDays$1.onMonthChanged + 37(Class.java:37)
   at com.applikeysolutions.cosmocalendar.view.CalendarView.containsFlag(CalendarView.java:77)
   at com.applikeysolutions.cosmocalendar.view.CalendarView.onSnap + 1073(CalendarView.java:1073)
   at com.applikeysolutions.cosmocalendar.utils.snap.GravityDelegate$1.onScrollStateChanged + 33(GravityDelegate.java:33)
   at androidx.recyclerview.widget.RecyclerView.dispatchOnScrollStateChanged + 4998(RecyclerView.java:4998)
   at androidx.recyclerview.widget.RecyclerView.setScrollState + 1545(RecyclerView.java:1545)
   at androidx.recyclerview.widget.RecyclerView$ViewFlinger.run + 5134(RecyclerView.java:5134)
   at android.view.Choreographer$CallbackRecord.run + 910(Choreographer.java:910)

我考虑过我的应用程序可能没有进行多次处理,但是在清单(java.lang.NoClassDefFoundError: Failed resolution of: Ljava/time/LocalDate; error)中已经进行过多次处理。甚至以编程方式对我的应用程序进行多次删除,在某些设备上仍然使该问题消失。

请问有什么理由怀疑我对com.applikeysolutions.cosmocalendar.view.CalendarViewhttps://github.com/ApplikeySolutions/CosmoCalendar)和我的Proguard之间的关系是否有疑问?到目前为止,该库在我的Proguard规则中还没有任何条目。

谢谢!

2 个答案:

答案 0 :(得分:0)

如果要使用proguard,请尝试在您的proguard-rules.pro中添加-keep class java.time.Month { *; }

答案 1 :(得分:0)

java.time包仅在API 26中添加。

https://developer.android.com/reference/java/time/package-summary

对于以前的版本,您可以使用org.joda.time.LocalDate