Android Studio无法导入依赖子模块的库:依赖解析失败
解决本地Maven仓库中子模块依赖无法解析的问题
我之前踩过一模一样的坑!你遇到的Could not find android-sdk-mylibrary:mysublibrary:unspecified错误,本质是本地Maven发布时,子模块的版本信息没明确配置,或者主库的pom文件没正确生成依赖关系,咱们一步步来搞定:
1. 先给子模块明确版本号
首先检查android-sdk-mylibrary:mysublibrary的build.gradle(如果是KTS就是build.gradle.kts),必须指定具体的版本号,绝对不能留空或者让它默认是unspecified:
// 在mysublibrary的build.gradle里 group = "com.yourcompany.libraries" // 换成你的实际groupId version = "1.0.0" // 随便写个明确的版本,比如1.0.0
同时,主库android-sdk-mylibrary依赖子模块时,也要用这个明确的版本,别用相对路径或者默认的模糊版本:
// 在主库的build.gradle里 dependencies { implementation "com.yourcompany.libraries:mysublibrary:1.0.0" }
2. 确保子模块和主库都正确发布到本地Maven
如果用的是maven-publish插件,得保证子模块单独发布,主库的pom能正确生成依赖项。
子模块的发布配置
给mysublibrary加上发布配置,确保它能被发布到本地Maven:
plugins { id 'com.android.library' id 'maven-publish' } // ... 其他Android配置(比如compileSdk、defaultConfig之类的) ... afterEvaluate { publishing { publications { release(MavenPublication) { from components.release groupId = "com.yourcompany.libraries" artifactId = "mysublibrary" version = "1.0.0" // 和上面的版本一致 } } repositories { mavenLocal() // 发布到本地~/.m2仓库 } } }
主库的发布配置
主库这边要确保pom文件里的依赖项是正确的,别生成unspecified版本。我之前就是没加pom的手动生成逻辑,导致主库pom里的子模块依赖版本是空的:
plugins { id 'com.android.library' id 'maven-publish' } // ... 其他Android配置 ... afterEvaluate { publishing { publications { release(MavenPublication) { from components.release groupId = "com.yourcompany.libraries" artifactId = "android-sdk-mylibrary" version = "1.0.0" // 手动生成pom的依赖节点,避免版本丢失 pom.withXml { def dependenciesNode = asNode().appendNode('dependencies') configurations.implementation.allDependencies.each { dep -> // 只添加有明确group、name、version的依赖 if (dep.group != null && dep.name != null && dep.version != null) { def dependencyNode = dependenciesNode.appendNode('dependency') dependencyNode.appendNode('groupId', dep.group) dependencyNode.appendNode('artifactId', dep.name) dependencyNode.appendNode('version', dep.version) } } } } } repositories { mavenLocal() } } }
3. 重新发布+清理缓存,避免旧文件干扰
按顺序执行以下操作,别搞反了:
- 先发布子模块:在Android Studio的Gradle面板里,找到
mysublibrary→Tasks→publishing→ 双击publishToMavenLocal - 再发布主库:同样找到
android-sdk-mylibrary→Tasks→publishing→ 双击publishToMavenLocal - 清理本地Maven的旧缓存:删除
~/.m2/repository/com/yourcompany/libraries这个目录(换成你的实际groupId路径),避免旧的错误pom文件残留 - 清理Android Studio的Gradle缓存:点击顶部菜单
File→Invalidate Caches...→ 选Invalidate and Restart,彻底清掉旧的依赖缓存
4. 检查应用项目的依赖配置
最后,在你的应用项目的build.gradle里,确保添加了本地Maven仓库,并且依赖的版本正确:
repositories { mavenLocal() // 必须加这个,不然找不到本地发布的库 google() mavenCentral() } dependencies { implementation "com.yourcompany.libraries:android-sdk-mylibrary:1.0.0" }
这样操作完,应该就能解决那个找不到子模块的错误了。核心就是子模块必须有明确版本,发布时主库的pom要正确生成依赖关系,别让版本变成unspecified。
内容的提问来源于stack exchange,提问作者1048576
相关产品推荐
相关产品推荐

