Android 4.x Kotlin方法引起的VerifyError

Android 4.x VerifyError caused by Kotlin method

最近我开始玩 Kotlin 语言,我尝试 运行 一个非常简单的应用程序。我有两个文件:MainActivity.kt 和 VersionSupport.kt 以及一些 kotlin 方法。

我在 Android 5.x 和 6.0 的 Nexus 5(真实设备和模拟器)上使用该应用程序没有任何问题。当我尝试在 OS.

的 4.x 版本上 运行 应用程序时,问题就开始了

在我的 MainActivity 中:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    textView.apply { text = "Hello kotlin!" }

    supportsKitKat { longToast("kitKat") }
}

这里是支持方法的实现

public fun supportsKitKat(code: () -> Unit) {
    supportsVersion(code, Build.VERSION_CODES.KITKAT)
}

private fun supportsVersion(code: () -> Unit, sdk: Int) {
    if(Build.VERSION.SDK_INT >= sdk) {
        code.invoke();
}

我使用 android studio 2.0 preview 3b 和 kotlin 1.0.0-beta-4583

FATAL EXCEPTION: main java.lang.VerifyError: pl/kpob/bootstrap/utils/VersionSupportKt
     at pl.kpob.bootstrap.MainActivity.onCreate(MainActivity.kt:21)
     at android.app.Activity.performCreate(Activity.java:5008)
     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
     at android.app.ActivityThread.access0(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)

Kotlin beta 4 与 Android Studio 的 Instant 运行 功能不兼容。您需要关闭 Instant 运行。不兼容问题将在Kotlin的下一次更新中解决。