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

Kotlin多平台移动项目构建报错:Ivy仓库来源及移除方案咨询

KMM项目Xcode构建配置错误问题解答

1. 为何项目在部分机器上可正常构建,其他机器却失败?

核心是Gradle仓库管理规则或版本的差异:

  • 部分机器的Gradle未启用PREFER_SETTINGS模式(该模式强制优先使用settings.gradle.kts中声明的仓库,禁止项目构建脚本新增仓库),所以即使隐式引入Ivy仓库也不会触发错误;
  • 另一部分机器的settings.gradle.kts中明确配置了dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS) },或者使用了对仓库管理更严格的Gradle新版本,此时构建脚本中新增仓库就会直接报错;
  • 不同机器的全局Gradle配置(如~/.gradle/init.gradle)可能存在差异,导致仓库加载逻辑不同。

2. 什么是Ivy仓库?如何移除它并使用指定的Maven仓库?

  • Ivy是Apache推出的依赖管理工具,Ivy仓库是采用Ivy格式存储依赖的仓库,和目前KMM项目主流使用的Maven仓库(如mavenCentral、Google仓库)格式不同。
  • 移除Ivy仓库并改用指定Maven仓库的操作步骤:
    1. 统一在项目根目录的settings.gradle.kts中配置仓库管理规则,禁用项目构建脚本添加仓库的权限:
      dependencyResolutionManagement {
          repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
          repositories {
              gradlePluginPortal()
              google()
              mavenCentral()
          }
      }
      
    2. 检查并删除所有模块build.gradle.kts中额外添加的仓库配置;
    3. 升级Kotlin Gradle插件到稳定新版本(如1.9.x+),旧版插件可能会隐式引入Ivy仓库,新版本已修复该问题。

3. 未显式配置的Ivy引用来自何处?

  • 旧版Gradle插件:你当前使用的Kotlin Gradle插件1.7.10属于较旧版本,部分早期KMM/Kotlin插件会在内部逻辑中隐式引入Ivy仓库,用于兼容特定依赖;
  • 全局Gradle配置:不同机器的~/.gradle/init.gradle或~/.gradle/init.gradle.kts文件可能添加了Ivy仓库,导致项目构建时加载该仓库;
  • 第三方依赖/插件:项目依赖的某些第三方库或插件,可能在其内部脚本中添加了Ivy仓库引用。

内容的提问来源于stack exchange,提问作者Martin Mlostek

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 09:10:44