You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

KMM结合Compose Multiplatform重建项目时触发空指针异常求助

KMM项目iOS模块重建时触发Compose编译器空指针异常(添加SQLDelight后出现)

问题详情

  • 开发环境:Android Studio Hedgehog | 2023.1.1 Patch 2
  • 触发场景:重建KMM项目时,iOS模块抛出空指针异常
  • 异常栈关键信息:
java.lang.NullPointerException
at androidx.compose.compiler.plugins.kotlin.k1.AnnotationUtilsKt$makeComposableAnnotation$1.getType(AnnotationUtils.kt:38)
at org.jetbrains.kotlin.resolve.descriptorUtil.DescriptorUtilsKt.getAnnotationClass(DescriptorUtils.kt:402)
...
  • 受影响文件:iOS端MyApp.kt(代码见下文)
  • 当前依赖版本:
compose = "1.6.2"
compose-plugin = "1.6.0"
kotlin = "1.9.22"
sqldelight = "2.0.1"
coroutines = "1.8.1-Beta"
  • 核心症状:Android端可正常启动,iOS模块重建时触发异常导致无法同步代码变更;异常在添加SQLDelight依赖后出现,尝试过调整Coroutines版本、重新构建、依赖版本微调均未解决。

受影响代码(iOS端MyApp.kt)

package com.radekstuj.myapp.presentation

import androidx.compose.runtime.Composable
import androidx.compose.ui.window.ComposeUIViewController
import com.radekstuj.myapp.data.model.DriverFactory
import com.radekstuj.myapp.presentation.AppViewModel
import com.radekstuj.myapp.presentation.MyApp
import platform.UIKit.UIViewController

fun MainViewController(): UIViewController {
    val driver = DriverFactory().createDriver()
    val viewModel = AppViewModel(driver)
    return ComposeUIViewController {
        MyApp(viewModel)
    }
}

修复方案尝试

1. 对齐Compose库与插件版本

当前Compose库版本1.6.2,但编译器插件用的是1.6.0,版本不匹配可能引发注解解析冲突。将插件版本升级至与库版本一致:

compose-plugin = "1.6.2"

2. 调整SQLDelight与Kotlin版本兼容性

SQLDelight 2.0.1官方推荐搭配Kotlin 1.9.20,当前使用的Kotlin 1.9.22可能存在兼容性问题:

  • 方案一:将Kotlin版本降级至1.9.20
  • 方案二:升级SQLDelight至兼容Kotlin 1.9.22的版本(如2.0.2)

3. 检查iOS模块Compose依赖完整性

确保iOS模块的build.gradle.kts中正确引入Compose核心依赖,避免编译器无法解析@Composable注解:

compose.ui()
compose.foundation()
compose.material3() // 或项目使用的Material版本

4. 彻底清理缓存后重建

  • 执行File → Invalidate Caches...,勾选"Invalidate and Restart"重启Android Studio
  • 删除项目根目录下的.gradle、build文件夹,以及iOS模块的build文件夹
  • 重新打开项目并执行Gradle同步

5. 排查DriverFactory跨端实现

确认DriverFactory的iOS端实现未引入Android专属注解或依赖,避免编译器处理iOS代码时出现注解解析错误。

内容的提问来源于stack exchange,提问作者Radek Stůj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 18:25:12