GitHub Packages发布Android Kotlin库后依赖解析失败问题咨询
问题原因
依赖解析失败核心是三个配置错误:
- Maven坐标完全不匹配:发布时配置的组件坐标为
groupId = com.bruno.components、artifactId = bruno-components、version = 1.0.0,完整依赖坐标应该是com.bruno.components:bruno-components:1.0.0,消费端写的两个依赖坐标既不匹配groupId也不匹配artifactId,无法定位到对应包。 - 发布配置有缺陷:直接上传编译产出的debug aar文件,没有生成对应的pom描述文件,就算坐标写对,拉取后也会丢失组件本身的依赖链,出现运行时类找不到的问题。
- 仓库配置位置错误:GitHub Packages的Maven仓库地址如果只配置在app模块的repositories块里,Gradle不会全局到该仓库检索依赖,必须配置到项目级的仓库列表中。
修复方案
第一步:修正发布端配置,重新发包
修改组件模块的build.gradle发布配置,不要直接指定本地aar路径,改用Gradle组件自动发布逻辑,自动生成pom文件:
def getVersionName = { -> return "1.0.1" // 建议升级版本号,避免和之前上传的错误包缓存冲突 } def getArtifactId = { -> return "bruno-components" } afterEvaluate { publishing { publications { bar(MavenPublication) { groupId 'com.bruno.components' artifactId getArtifactId() version getVersionName() // 正式发布用release变体,自动生成包含传递依赖的pom文件 from components.release // 若必须发布debug变体,需手动补全pom中的依赖声明,否则会丢失依赖 } } repositories { maven { name = "GitHubPackages" url = uri("https://maven.pkg.github.com/bruno/bruno-components-android") credentials { username = githubProperties['gpr.usr'] password = githubProperties['gpr.key'] } } } } }
修改完成后执行发布任务,将新包上传到GitHub Packages。
第二步:修正消费端仓库配置
如果是Arctic Fox及以后版本的Android Studio,把GitHub Packages仓库配置到项目根目录settings.gradle的dependencyResolutionManagement.repositories块下:
dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { google() mavenCentral() maven { name = "GitHubPackages" url = uri("https://maven.pkg.github.com/bruno/bruno-components-android") credentials { username = githubProperties['gpr.usr'] password = githubProperties['gpr.key'] } } } }
如果是旧版Android Studio,就把这段仓库配置写到项目根目录build.gradle的allprojects.repositories块里,删除之前在app模块下配置的仓库。
第三步:修正依赖声明
打开app模块的build.gradle,删除之前写的两个错误依赖,换成正确的坐标:
dependencies { // 对应重新发布的版本号 implementation 'com.bruno.components:bruno-components:1.0.1' }
补充说明
当前配置的PAT权限符合要求,只要确认github.properties里填写的用户名是GitHub账号ID,密钥是生成的具备read:packages权限的令牌即可。如果同步时出现401/403错误,再检查令牌是否过期、是否有对应仓库的访问权限。
如果同步仍然失败,可以执行./gradlew :app:dependencies --configuration debugRuntimeClasspath查看依赖检索的详细日志,定位具体是仓库匹配、认证还是坐标错误的问题。
内容的提问来源于stack exchange,提问作者Bruno Sosa Fast Tag
相关产品推荐
相关产品推荐

