升级Gradle 7.3.1后Android项目无法识别自定义库类的问题
问题排查与解决方案
核心问题:发布的Maven库不包含实际代码
你的自定义库发布配置中,注释掉了from components.debug,这会导致发布到MavenLocal的只是一个空的POM文件,没有包含库的class文件或AAR包,所以主项目虽然能找到依赖,但无法识别库内的类。
具体修复步骤
1. 修复Maven发布配置
修改库的build.gradle中publishing块的配置,取消注释from components.debug(或根据需要改为components.release),确保发布的是包含代码的组件:
afterEvaluate { publishing { publications { release(MavenPublication) { // 启用这行,指定要发布的组件(debug或release) from components.debug groupId = 'com.inmap.MapFragment' artifactId = 'debug' version = '1.0' } } } }
2. 清理重复的插件应用
你的build.gradle开头同时用了plugins块和apply plugin重复应用插件,Gradle 7+推荐统一用plugins块,删除重复的apply plugin:
// 保留这部分即可,删除下面的apply plugin行 plugins { id 'maven-publish' id 'com.android.library' } // 删除以下两行重复代码 // apply plugin: 'maven-publish' // apply plugin: 'com.android.library'
3. 重新发布库到MavenLocal
执行以下Gradle任务:
- 先清理旧的发布产物:
./gradlew clean - 发布到本地仓库:
./gradlew publishToMavenLocal
4. 主项目同步依赖并清理缓存
- 在Android Studio中点击File → Sync Project with Gradle Files
- 执行
./gradlew clean build重新构建主项目 - 如果还是有问题,尝试删除主项目根目录下的
.gradle文件夹,然后重新同步
额外检查点
- 确认主项目的依赖引用是否正确,groupId、artifactId、version要和库的发布配置完全一致:
implementation 'com.inmap.MapFragment:debug:1.0' - 检查库的build variant是否和主项目匹配,如果主项目用的是release变体,库也应该发布release组件(
from components.release)
内容的提问来源于stack exchange,提问作者WavyGravy
相关产品推荐
相关产品推荐

