Android 4.x Kotlin方法引起的VerifyError

标签 android kotlin

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

我在 Android 5.x 和 6.0 的 Nexus 5(真实设备和模拟器)上使用该应用程序没有任何问题。当我尝试在 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 预览版 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.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)

最佳答案

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

关于Android 4.x Kotlin方法引起的VerifyError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34818501/

相关文章:

java - InterstitialAd的构造函数

spring - spring Security 中的 UsernamePasswordAuthenticationFilter 没有被调用

android - 如何在 kotlin 中创建一个可观察列表

android - 在 Kotlin 中使用 Instant Run 时出现 IllegalAccessError

kotlin - kotlin.MetaData 中保存的数据格式是否记录在任何地方?

regex - 正则表达式从Python到Kotlin

android - 检测以 Android 结尾的安装

android - android的层次结构:layout_width/height between containers and views

android - 获取执行后的值

Android 加载 Activity 堆栈,与后退按钮