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

Android库中自定义添加的Maven仓库未被消费应用识别

如何让Android Library的依赖仓库自动被消费项目识别?

问题描述

我开发的Android Library依赖了一个需要第三方Maven仓库的库,仅在Library模块的build.gradle中配置了该仓库:

repositories {
    google()
    mavenCentral()
    maven { url "my-needed-repo-url" }
}

但当主App模块或其他外部项目通过implementation引入这个Library时,会出现依赖找不到的错误:

Execution failed for task ':app:mergeDebugNativeLibs'.
> Could not resolve all files for configuration ':app:debugRuntimeClasspath'.
   > Could not find my.librarys.nested.library

核心问题是Library内声明的Maven仓库未被消费项目自动识别,希望找到无需使用者手动添加仓库的方案,实现对开发者透明。

解决方案

1. 同项目内模块引用:用dependencyResolutionManagement(推荐)

如果你的Library和消费模块在同一个项目中,在项目根目录的settings.gradle(或settings.gradle.kts)中通过dependencyResolutionManagement统一声明仓库,消费模块会自动继承这些配置:

dependencyResolutionManagement {
    repositories {
        google()
        mavenCentral()
        maven { url "my-needed-repo-url" }
    }
}

2. 远程发布Library:在POM中附带仓库信息

如果要把Library发布到远程Maven仓库供外部项目使用,需要在发布时将第三方仓库信息写入Library的POM文件,消费项目引入时Gradle会自动读取POM中的仓库配置拉取依赖。

在Library模块的build.gradle中添加POM仓库配置:

afterEvaluate {
    publishing {
        publications {
            release(MavenPublication) {
                // 保留你原有的发布配置(如groupId、artifactId等)
                pom {
                    repositories {
                        repository {
                            id = "custom-repo-id"
                            url = "my-needed-repo-url"
                            layout = "default"
                        }
                    }
                }
            }
        }
    }
}

3. 打包嵌套依赖(不推荐)

如果上述方案都无法适用,可以考虑将依赖的库直接打包进你的Library,但这会增大Library体积,还可能引发依赖冲突,仅作为临时备选方案。可借助shadowJar插件或Android的打包配置实现,但Android Library场景下容易出现兼容性问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 04:18:20