Android / Kotlin崩溃在开始4.1.2 – ExceptionInInitializerError

我在我的应用程序中使用Kotlin ; 但是,当在较低的API设备上进行测试时,它会在启动时崩溃。

即使将一个调试器附加到Splash ActivityonCreate ,它仍然在任何断点之前崩溃。

我能够得到一个调用堆栈,但我不能得到任何其他的调用堆栈。

Caused by: java.lang.NoClassDefFoundError: kotlin.jvm.internal.Intrinsics

 ╔════════════════════════════════════════════════════════════════════════════════════════ ║ Thread: main ╟────────────────────────────────────   ─────────────────────────────────────────────────── ║ AppCompatDelegateImplBase$1.uncaughtException (AppCompatDelegateImplBase.java:66) ║ App$1.uncaughtException (App.java:59) ╟──────────────────────────────────────────────────────────────────────────────────────── ║ java.lang.ExceptionInInitializerError ║ at com.my_company.app.ui.shared.BaseActivity.onStart(BaseActivity.kt:164) ║ at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1163) ║ at android.app.Activity.performStart(Activity.java:5018) ║ at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2032) ║ at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) ║ at android.app.ActivityThread.access$600(ActivityThread.java:130) ║ at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) ║ at android.os.Handler.dispatchMessage(Handler.java:99) ║ at android.os.Looper.loop(Looper.java:137) ║ at android.app.ActivityThread.main(ActivityThread.java:4745) ║ at java.lang.reflect.Method.invokeNative(Native Method) ║ at java.lang.reflect.Method.invoke(Method.java:511) ║ at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) ║ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) ║ at dalvik.system.NativeStart.main(Native Method) ║ Caused by: java.lang.NoClassDefFoundError: kotlin.jvm.internal.Intrinsics ║ at com.my_company.app.notification.NotificationType.<init>(NotificationType.kt) ║ at com.my_company.app.notification.NotificationType.<clinit>(NotificationType.kt:10) ║ ... 15 more ╚════════════════════════════════════════════════════════════════════════════════════════ 

哪些点在: val intentFilter = IntentFilter(NotificationType.INVITE_RECEIVED)

这是一个扩展函数,允许我将我的NotificationType枚举传递给IntentFilter。

 enum class NotificationType(private val str: String) { // Orders ORDER_HOST_PAID("ORDER_HOST_PAID"), ... } 

我不知道什么会导致这个问题,因为我在另一个应用程序中使用Kotlin没有这个问题。 这可能是一个问题吗?

我正在使用ext.kotlin_version = '1.2.0-beta-88'

这是因为虽然我有multiDexEnabled true ,但我并没有扩展MultiDexApplication 。 只有在您支持API 20或更低版本时才需要。

将库添加到您的依赖项。

 android { defaultConfig { ... minSdkVersion 15 targetSdkVersion 26 multiDexEnabled true } ... } dependencies { compile 'com.android.support:multidex:1.0.1' } 

并扩展MultiDexApplication

 public class MyApplication extends MultiDexApplication 

答案: https : //stackoverflow.com/a/39831657/3106174

我有同样的错误,我用MultiDex解决它,就像这个链接上描述: https : //developer.android.com/studio/build/multidex.html