如何发布Android库到MavenCentral:PinView的publish.gradle流程复盘
2026/8/17 23:27:53 网站建设 项目流程

如何发布Android库到MavenCentral:PinView的publish.gradle流程复盘

【免费下载链接】PinViewA PIN view library for Android. Use to enter PIN/OTP/password etc.项目地址: https://gitcode.com/gh_mirrors/pin/PinView

如果你是一个 Android 开发者,写了一个好用的开源库,却不知道如何发布Android库到MavenCentral,让全世界的人都能通过一行依赖引入,那么这篇文章就是为你准备的。本文以开源 PIN 输入库PinView为例,完整复盘它是如何通过publish.gradle从本地项目一步步发布到 MavenCentral 的。整个流程包括插件配置、签名信息加载、Javadoc 生成、POM 元数据填写、仓库上传等关键环节,看懂之后,你的库也能轻松完成同样的发布。

先认识一下 PinView 这个库

PinView 是一个专为 Android 设计的 PIN/OTP/密码输入组件,继承自EditText,所以原生输入框的能力它全都具备。开发者可以用它快速搭建验证码输入、支付密码、短信 OTP 等场景,还支持矩形、下划线、无边框三种视图样式,以及光标颜色、输入格数量、动画等丰富的自定义属性。核心源码位于 pinview/src/main/java/com/chaos/view/PinView.java,组件对外提供了一整套可配置的 XML 属性和 Java API。

在发布到 MavenCentral 之前,PinView 曾托管在 JCenter 上。随着 JCenter 宣布停止服务,作者不得不将坐标迁移到 MavenCentral,由com.chaos.view:pinview变为io.github.chaosleung:pinview。这种仓库迁移的经历,正是很多 Android 库开发者都会遇到的现实问题。

发布前的准备工作:账号、密钥与本地配置

发布 Android 库到 MavenCentral 不是写几行代码就能完成的,前置条件必须齐全:

  1. 注册 Sonatype 账号:申请一个 OSSRH(OSS Repository Hosting)账号,用于上传和审核构件。
  2. 生成 GPG 密钥:MavenCentral 要求所有上传的构件必须有数字签名,你需要用 GPG 生成密钥对,并记住 keyId、密码和密钥环文件路径。
  3. 创建 local.properties:把签名信息写在项目根目录的local.properties里,而不是硬编码进构建脚本,这样既安全又便于多人协作。

PinView 的 pinview/publish.gradle 在文件开头就用ext[]声明了signing.keyIdsigning.passwordsigning.secretKeyRingFileossrhUsernameossrhPassword这几个占位变量,随后自动读取根目录的local.properties并将属性注入到ext中,实现敏感信息的解耦加载。

最核心的 publish.gradle 发布流程拆解

发布脚本的全部逻辑集中在 pinview/publish.gradle 这一个文件里,通过pinview/build.gradle末尾的apply from: 'publish.gradle'引入。整个流程可以拆成六个环节:

1. 引入发布与签名插件

脚本开头先应用两个 Gradle 插件:maven-publish负责生成构件和上传,signing负责给构件做 GPG 签名。这是所有发布流程的基础。

2. 定义坐标与版本号

通过group = "io.github.chaosleung"version = "1.4.4"定义了仓库坐标,再结合 artifactIdpinview,就得到了我们在依赖中看到的完整坐标:io.github.chaosleung:pinview:1.4.4

3. 为每个构建变体生成 Javadoc 与 Sources 包

脚本遍历android.libraryVariants,为每个变体创建Javadoc任务,并拼接 Android 的android.jar作为 classpath,避免文档生成时报找不到 Android 类的错误。紧接着把 Javadoc 和源码打包成javadocsources两种 jar,且只把 release 变体的产物附加到最终发布物上。

4. 在 afterEvaluate 中组装 publication

Gradle 的afterEvaluate时机非常关键,它确保 Android 插件的配置先执行完毕。这里通过from components.release把 release 变体的 AAR 作为主构件,同时填入完整的 POM 信息,包括库名、描述、Apache 2.0 许可证、SCM 仓库地址以及开发者信息。完善的 POM 元数据是顺利通过 MavenCentral 审核的重要条件。

5. 配置 Sonatype 上传仓库

脚本为仓库命名为sonatype,并根据版本号是否以SNAPSHOT结尾,自动选择快照仓库或正式发布仓库地址,同时用之前加载的ossrhUsernameossrhPassword提供认证凭据。

6. 对整个发布产物签名

最后一步signing { sign publishing.publications }会对所有发布物执行 GPG 签名。签名文件会随 AAR、Javadoc、Sources 一起上传,这也是 MavenCentral 的硬性要求。

一键发布命令与常见的坑

配置完成后,发布 Android 库到 MavenCentral 的核心操作其实只有一条命令:./gradlew publish。脚本会自动完成打包、签名、上传到 Sonatype 的 staging 仓库,之后再到 OSSRH 后台执行CloseRelease操作,构件就会正式进入 MavenCentral。

复盘这个项目时,有几个坑值得新手注意:

  • 版本号一致性:上传构件的版本号一定要与代码仓库的 tag 保持一致,否则后续排查问题会非常痛苦。
  • Gradle 版本兼容:该项目使用 Gradle 6.1.1(见 gradle/wrapper/gradle-wrapper.properties),不同 Gradle 版本对maven-publish的 API 支持有差异,升级时要留意 API 变化。
  • secret 文件泄漏local.properties里存放了 GPG 密钥和 Sonatype 密码,务必加入.gitignore,绝不能提交到仓库。
  • Javadoc 生成失败:Android 项目里常见BuildConfig.javaR.java报错,脚本通过exclude排除这两类生成文件来解决,值得借鉴。

发布完成后如何验证与使用

发布成功后,任何项目只要在repositories中加入mavenCentral(),再添加一行依赖implementation 'io.github.chaosleung:pinview:1.4.4',就能直接使用这个 PIN 输入组件,具体用法可以参考 README.md 中的说明。

总结

通过复盘 PinView 的 publish.gradle 发布流程,可以看到一个成熟的 Android 库发布方案其实并不复杂:maven-publish 插件负责打包上传,signing 插件负责签名,local.properties 负责存放敏感信息,POM 元数据负责通过审核。把这套流程吃透,你就能把自己的 Android 库也顺利发布到 MavenCentral,让更多开发者通过一行依赖用上你的作品。如果你正准备尝试发布自己的第一个库,不妨直接从这份发布脚本开始改造,能少走很多弯路。

【免费下载链接】PinViewA PIN view library for Android. Use to enter PIN/OTP/password etc.项目地址: https://gitcode.com/gh_mirrors/pin/PinView

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询