Android库发布遇Gradle依赖与GitHub Packages凭证问题求助
一、修复Gradle任务依赖错误
更新Gradle插件后出现的generateMetadataFileForReleasePublication未声明依赖androidSourcesJar的问题,无需手动给metadata任务加dependsOn,正确做法是在发布配置中显式关联任务与artifact,让Gradle自动管理依赖链:
修改publishing -> publications -> release中的artifact配置:
artifact androidSourcesJar { builtBy androidSourcesJar }
这样Gradle会自动为所有依赖该artifact的发布任务(包括生成metadata的任务)添加对androidSourcesJar的执行依赖,避免任务顺序混乱导致的错误。同时可以移除你手动添加的generateMetadataFileForReleasePublication.dependsOn androidSourcesJar代码,避免冗余配置。
二、修复GitHub Packages凭证错误
GitHub Actions中出现的凭证缺失提示,是因为Gradle配置缓存对credentials的解析逻辑导致的,需要改用延迟加载的provider方式获取环境变量,同时确保GitHub Actions中正确传递凭证:
1. 修改build.gradle中的凭证配置
将原credentials块修改为使用providers.environmentVariable:
maven { name = "GitHubPackages" url = uri("https://maven.pkg.github.com/HIDDEN_FOR_STACKOVERFLOW") credentials { username = providers.environmentVariable("GPR_USER") password = providers.environmentVariable("GPR_KEY") } }
这种方式能兼容Gradle配置缓存,避免触发“缺少属性”的错误。如果需要同时支持本地gradle.properties配置,可以扩展为:
credentials { username = providers.environmentVariable("GPR_USER") .orElse(providers.gradleProperty("GitHubPackagesUsername")) password = providers.environmentVariable("GPR_KEY") .orElse(providers.gradleProperty("GitHubPackagesPassword")) }
2. 确保GitHub Actions中正确传递环境变量
在你的GitHub Actions workflow文件中,添加发布步骤时要正确注入GPR_USER和GPR_KEY:
steps: - name: 发布到GitHub Packages env: GPR_USER: ${{ github.actor }} GPR_KEY: ${{ secrets.GITHUB_TOKEN }} run: ./gradlew :my_sdk:publish --stacktrace
GITHUB_TOKEN是GitHub Actions自动提供的令牌,需确保它拥有packages:write权限(仓库默认的令牌通常已包含此权限);- 若使用自定义令牌,需在仓库的「Settings -> Secrets and variables -> Actions」中添加对应的secret,并替换
${{ secrets.GITHUB_TOKEN }}为你的secret名称。
内容的提问来源于stack exchange,提问作者user924

