Android 开源库发布到 Maven Central:2026 实战踩坑指南
从 0 到成功发布 Android 库到 Maven Central 的完整实战总结,重点讲清 GPG、Gradle 配置与常见坑,帮你一次打通发布流程。
标签:Android / Maven Central / 开源
预计阅读:8 分钟
🚀 我把 Android 库发到 Maven Central,一路踩坑总结(2026 最新版)
这篇不是教程,是一线踩坑实录
目标:让你少踩 90% 的坑,一次发版成功
🧠 先说结论(建议先看)
发布 Maven Central,本质就三件事:
- GPG 签名
- Gradle 发布配置
- Sonatype 上传
真正卡人的地方只有两个:
👉 GPG + Gradle signing
其他基本都是填信息。
🧭 一、现在的发布方式(别走老路)
现在已经不用老的 OSSRH 了,直接用:
👉 https://central.sonatype.com
你要做三件事:
- 注册账号
- 创建 namespace(推荐:
io.github.xxx) - 创建 token(用户名 + 密码)
🔐 二、GPG(第一大坑)
这一部分,几乎 80% 的人会卡。
1️⃣ 安装
brew install gnupg
2️⃣ 生成 key
gpg --full-generate-key
选择:
- 类型:RSA and RSA
- 长度:4096
- 永不过期
- email:建议用 GitHub 同一个
3️⃣ 查 keyId
gpg --list-secret-keys --keyid-format=long
输出:
sec rsa4096/XXXXXXXXXXXXXXX
👉 / 后面那串就是 keyId
4️⃣ 导出私钥
gpg --export-secret-keys -a YOUR_KEY_ID > private-key.asc
5️⃣ 上传公钥(关键)
不要用命令,直接走网页: 👉 https://keys.openpgp.org
步骤:
- 上传 public key
- 收邮件
- 点验证
⚠️ 我踩过的坑(重点)
❌ 坑 1:Outlook 收不到验证邮件 症状:
- 等半小时没反应
- 或直接没有
原因: 👉 这个站点对 Outlook 不太友好
解决: 👉 要么等 👉 要么换 Gmail(更稳)
❌ 坑 2:key 上传了但没验证 页面提示:
published with only non-identity information
👉 这不是成功状态
必须点验证邮件,否则:
- Maven Central 可能验签失败
- 或行为异常
⚙️ 三、Gradle 配置(别手写,直接让 AI 做)
这一块,说实话: 👉 不值得手写 直接让 Codex / Cursor 帮你生成。
✅ 推荐 Prompt(直接复制)
请帮我为一个 Android library 模块配置 Maven Central 发布:
要求:
1. 使用 maven-publish + signing
2. 使用 Central Portal(https://central.sonatype.com/api/v1/publisher)
3. 使用 Kotlin DSL(build.gradle.kts)
4. 自动发布 release 组件
5. 自动生成 sources.jar 和 javadoc.jar
6. signing 使用 useInMemoryPgpKeys
7. 所有敏感信息通过 gradle.properties 注入
8. 在 POM 中预留 TODO:
- POM_DEVELOPER_NAME
- POM_DEVELOPER_EMAIL
- POM_GROUP_ID
- POM_ARTIFACT_ID
- POM_VERSION_NAME
👉 基本一次生成就能用
🔑 四、gradle.properties(第二大坑)
路径:
~/.gradle/gradle.properties
👉 注意:不是项目里的,是你电脑全局的
示例配置
mavenCentralUsername=xxx
mavenCentralPassword=xxx
signingInMemoryKey=(一整行私钥)
signingInMemoryKeyPassword=xxx
⚠️ 最大坑(我卡最久的地方)
❌ 错误写法(直接粘私钥)
-----BEGIN PGP PRIVATE KEY BLOCK-----
xxxx
xxxx
-----END PGP PRIVATE KEY BLOCK-----
👉 会报错:
Could not read PGP secret key
✅ 正确写法(必须转成一行)
python3 -c 'from pathlib import Path; print(Path("~/Desktop/private-key.asc").expanduser().read_text().replace("\\", "\\\\").replace("\n", "\\n"))' | pbcopy
然后粘进去:
signingInMemoryKey=-----BEGIN... \n xxx \n xxx \n -----END...
🧪 五、本地验证(一定要做)
./gradlew publishToMavenLocal
👉 不报错,说明:
- GPG OK
- signing OK
🚀 六、正式发布
./gradlew publishAndReleaseToMavenCentral
看到:
Deployment is being published to Maven Central
BUILD SUCCESSFUL
👉 就成功了
📦 七、发布后去哪看?
1️⃣ Central Portal 👉 最快能看到
2️⃣ Maven 搜索 👉 https://search.maven.org 有延迟(几分钟~几十分钟)
3️⃣ 直接仓库
https://repo1.maven.org/maven2/io/github/xxx/xxx/版本/
👉 最直接验证方式
📦 八、别人怎么用你的库
dependencies {
implementation("io.github.xxx:your-lib:0.0.1")
}
👉 不需要额外仓库(默认 mavenCentral)
💣 九、我这一路踩过的坑总结
环境问题
- Homebrew 太旧 → 装不了 gnupg
- Git 路径失效 → IDE 报错
GPG
- 邮件收不到
- keyId 用错
- 没验证邮箱
Gradle
- 私钥格式错误(最坑)
- signing 配置不匹配
发布
- groupId 不合法
- POM 信息缺失
🎯 最后一句话总结
👉 Maven Central 发布不是难,是“坑多但固定” 踩完一遍,以后就没感觉了。