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

Kotlin Multiplatform项目iOS端运行失败问题求助

Kotlin Multiplatform iOS端编译失败修复方案

环境信息

  • macOS Sonoma 14.6.1
  • Xcode 15.4
  • 未修改的KMP模板项目(Android端正常运行,iOS端编译失败;单独Xcode创建的iOS项目可正常运行)

编译错误核心信息

配置根项目'TestKMP'时出现问题。
> 无法解析配置':classpath'的所有构件。
   > 无法解析com.android.tools.build:gradle:8.5.2。
     被以下项目依赖:
         project : > com.android.application:com.android.application.gradle.plugin:8.5.2
         project : > com.android.library:com.android.library.gradle.plugin:8.5.2
      > 未找到匹配的com.android.tools.build:gradle:8.5.2变体。消费者配置要求查找一个运行时使用的库,兼容Java 8,打包为jar,依赖声明在外部,同时需要属性'org.gradle.plugin.api-version'的值为'8.7',但:
          - 变体'runtimeElements'声明了一个运行时使用的库,打包为jar,依赖声明在外部:
              - 不兼容:该组件兼容Java 11,而消费者需要兼容Java 8的组件
          - 其他变体均存在类型或版本不兼容问题

kdoctor检测结果

kdoctor检测结果截图

核心原因

  1. Gradle与AGP版本不匹配:Gradle 8.7和AGP 8.5.2存在兼容性冲突,AGP 8.5.x系列仅支持Gradle 8.4版本。
  2. Java版本不符合要求:AGP 8.x系列强制要求使用Java 17,当前项目配置的Java 8无法适配。

修复步骤

1. 调整Gradle版本至兼容版本

  • 修改gradle/wrapper/gradle-wrapper.properties文件中的Gradle分发链接:
distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip
  • 确保根目录settings.gradle.kts中AGP版本与Gradle版本匹配(保持AGP 8.5.2即可):
pluginManagement {
    repositories {
        google()
        mavenCentral()
        gradlePluginPortal()
    }
    plugins {
        val agpVersion = "8.5.2"
        id("com.android.application") version agpVersion
        id("com.android.library") version agpVersion
    }
}

2. 配置项目使用Java 17

  • 本地安装Java 17(验证:终端执行java -version,确保输出版本为17.x)
  • 修改根目录build.gradle.kts,指定全局Java编译版本:
plugins {
    id("com.android.application") version "8.5.2" apply false
    id("com.android.library") version "8.5.2" apply false
}

allprojects {
    repositories {
        google()
        mavenCentral()
    }
}

tasks.withType<JavaCompile> {
    sourceCompatibility = JavaVersion.VERSION_17
    targetCompatibility = JavaVersion.VERSION_17
}
  • 在KMP模块的build.gradle.kts中指定JVM目标版本:
kotlin {
    jvm {
        compilations.all {
            kotlinOptions.jvmTarget = "17"
        }
    }
    // 保留其他KMP目标配置(如iOS、shared等)
}

3. 清理缓存并重新构建

  • 终端执行:./gradlew clean
  • 关闭Xcode,重新打开项目并执行构建

内容的提问来源于stack exchange,提问作者Hitesh Dhamshaniya

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 14:24:54