开始4.1.2中的Android / Kotlin崩溃 - ExceptionInInitializerError

时间:2017-11-01 17:38:51

标签: android kotlin

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

即使将调试器附加到Splash onCreate的{​​{1}},它仍会在任何断点之前崩溃。

我能够获得一次callstack,但我无法获得任何其他的callstack。

Activity

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 ╚════════════════════════════════════════════════════════════════════════════════════════

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

val intentFilter = IntentFilter(NotificationType.INVITE_RECEIVED)

我不知道会导致此问题的原因,因为我在没有此问题的其他应用中使用enum class NotificationType(private val str: String) { // Orders ORDER_HOST_PAID("ORDER_HOST_PAID"), ... } 。这可能是一个问题吗?

我正在使用Kotlin

1 个答案:

答案 0 :(得分:0)

这是因为虽然我有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