起因
引入DataStore来替换以前使用的sp,引入成功后一直报错。项目无法启动。错误信息如下:
E/CustomActivityOnCrash: App has crashed, executing CustomActivityOnCrash's UncaughtExceptionHandler
java.lang.NoSuchMethodError: No static method toDouble-impl(JLjava/util/concurrent/TimeUnit;)D in class Lkotlin/time/Duration; or its super classes (declaration of 'kotlin.time.Duration' appears in /data/app/~~2R_UzUIbSUylwWifb0rJLg==/com.we.westarry-8QhopuA-mqTXY_1dBg-JIg==/base.apk!classes18.dex)
at org.koin.core.time.MeasureKt.measureDuration(Measure.kt:32)
at org.koin.core.KoinApplication.modules(KoinApplication.kt:59)
at com.we.westarry.app.base.StarryApplication$onCreate$1.invoke(StarryApplication.kt:66)
at com.we.westarry.app.base.StarryApplication$onCreate$1.invoke(StarryApplication.kt:62)
at org.koin.core.context.GlobalContext.startKoin(GlobalContext.kt:64)
at org.koin.core.context.DefaultContextExtKt.startKoin(DefaultContextExt.kt:31)
at com.we.westarry.app.base.StarryApplication.onCreate(StarryApplication.kt:62)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1211)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6946)
at android.app.ActivityThread.access$1600(ActivityThread.java:264)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2102)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:210)
at android.os.Looper.loop(Looper.java:299)
at android.app.ActivityThread.main(ActivityThread.java:8105)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:556)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1045)
2022-07-20 12:00:17.159 19993-19993/com.we.westarry E/CustomActivityOnCrash: Your application class or your error activity have crashed, the custom activity will not be launched!
处理
错误指向我的Application中对koin初始化的代码。然后就修改初始化代码。
修改之前代码
startKoin {
androidLogger()
androidContext(this@StarryApplication)
androidFileProperties()
modules(dataSourceModule, viewModelModule)
}
修改后代码
startKoin {
androidLogger(Level.NONE)
androidContext(this@StarryApplication)
androidFileProperties()
modules(dataSourceModule, viewModelModule)
}
当androidLogger修改后项目可以成功运行。