如何将本地Gradle项目或库引入Kotlin Multiplatform项目
问题1:如何将修改后的库项目引入到你的项目中
你想要的项目依赖方式可以通过两种正确配置实现:
方案1:子模块引入
- 将fork的firebase-kotlin-sdk仓库复制到项目根目录后,需要在
settings.gradle中同时引入外层仓库和你需要用到的子模块,仅引入外层仓库无法识别内部的功能模块:include("firebase-kotlin-sdk") include("firebase-kotlin-sdk:firebase-auth") // 如果auth模块依赖该仓库下的其他公共模块(比如firebase-common),需要按上述格式补充引入 - 之后在你业务模块的
build.gradle依赖块中,就可以使用你期望的声明方式,注意项目路径前要加冒号:implementation(project(":firebase-kotlin-sdk:firebase-auth"))
方案2:复合构建(includeBuild方式)
这种方式不需要修改你原有的依赖声明,更适合临时替换依赖的场景:
- 在
settings.gradle中添加如下配置:includeBuild("firebase-kotlin-sdk") { dependencySubstitution { substitute module("dev.gitlive:firebase-auth") using project(":firebase-auth") // 其他用到的该仓库下的模块,都按上述格式添加替换规则 } } - 你原来的依赖声明
implementation("dev.gitlive:firebase-auth:1.4.1-local")不需要修改,Gradle会自动将该坐标的依赖替换为本地项目构建的版本。
问题2:能否直接引入gradlew publishMavenLocal生成的jar/aar包
完全可以,有两种使用方式:
方式1:通过Maven Local仓库引用
- 首先确认你项目的仓库配置中已经添加了
mavenLocal(),并且放在所有远程仓库的最前面,避免Gradle优先拉取线上的正式版本:// 配置在根目录build.gradle或者settings.gradle的repositories块中 repositories { mavenLocal() mavenCentral() google() // 其他仓库声明 } - 确认你publish到Maven Local的版本号和依赖声明中的版本号完全一致,你可以到本地Maven仓库默认路径(用户目录下的
.m2/repository/dev/gitlive/firebase-auth)下核对对应版本的包是否存在。
方式2:直接引入本地包文件
如果不想走本地仓库管理,你可以将生成的jar/aar包复制到业务模块的libs目录下,直接声明文件依赖即可:
implementation(files("libs/firebase-auth-1.4.1-local.jar"))
该方式不推荐KMP项目使用,多平台目标需要分别处理对应平台的包,管理成本更高。
常见配置不生效原因排查
- 仅引入了firebase-kotlin-sdk外层仓库,没有引入需要用到的内部子模块
- 使用includeBuild时没有配置依赖替换规则,Gradle仍然从远程仓库拉取对应坐标的依赖
- mavenLocal没有放在仓库列表的最前面,或者本地发布的版本号和依赖声明的版本号不匹配
内容的提问来源于stack exchange,提问作者Nikola-Milovic
相关产品推荐
相关产品推荐

