Android最简化发布模块到mavenCentral

最近折腾jitpack发布,发现他对于项目结构要求比较严格。基本标配就是一个library目录加app,和settings.gradle,gradle这样的配置才行。多模块或者没有模块都比较麻烦。而且之前我遇到过一次,编译等了足足8个小时。

今天研究了mavenCentral,借助神迹github插件,现在已经十分轻松,而且很方便在android studio中操作。直接推荐。

1. 注册

central.sonatype

推荐直接使用github登录即可。官方推荐使用github,能分担他们的服务压力。

2. namespaces

检查是否有Namespaces, 如图:

没有的话,点击Register New Namespace创建。
namespace

3. UserName和Password

登录 Sonatype Central Portal

点击右上角用户头像 → View User Tokens

进入 Generate User Token

记录生成的 usernamepassword,保存好,后续不可见,后面使用1️⃣。

4. GPG

复制代码
# 安装 GPG
brew install gnupg

# 安装 pinentry-mac(用于密码输入)
brew install pinentry-mac

# 验证安装
gpg --version

也可以选择,自己下载:下载地址

安装完成后在控制台输入gpg --version,即可查看版本号。

生成gpg密钥对:

复制代码
# 生成密钥(推荐使用 RSA 4096)
gpg --full-generate-key

操作(这里最后的passphrase密码,后面有用2️⃣):

复制代码
请选择您要使用的密钥类型:
   (1) RSA 和 RSA
   (2) DSA 和 Elgamal
   (3) DSA(仅用于签名)
   (4) RSA(仅用于签名)
   (9) ECC(签名和加密)
  (10) ECC(仅用于签名)
您的选择是? 1

RSA 密钥的长度应在 1024 位与 4096 位之间。
您想要使用的密钥长度?(3072) 4096

请设定这个密钥的有效期限。
         0 = 密钥永不过期
密钥的有效期限是?(0) 0

真实姓名: Your Name
电子邮件地址: your-email@example.com
注释: Maven Central Deploy Key

# 设置一个强密码(passphrase),后续需要使用

查看(丢失了可以重复查看,后面有用3️⃣):

复制代码
# 列出所有密钥
gpg --list-keys

# 列出私钥及 keygrip(用于免密配置)
gpg --list-secret-keys --keyid-format LONG

### 输出结果:
----------------------------------
pub   rsa4096/123213131423 2026-01-01 [SC]
      xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxABCD1234
uid                 [ultimate] Your Name <your-email@example.com>
sub   rsa4096/XXXXXXXXXXXXXXXX 2026-01-01 [E]

上传到公开的密钥服务器(任一成功即可) :

复制代码
gpg --keyserver keys.openpgp.org --send-keys xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxABCD1234
gpg --keyserver pgp.mit.edu --send-keys xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxABCD1234
gpg --keyserver keyserver.ubuntu.com --send-keys xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxABCD1234

导出(后面有用4️⃣):

复制代码
gpg --export-secret-keys -o /Documents/xxx/xxx/secring.gpg

5. 配置属性

接下来,完形填空。创建配置文件,并添加上面操作的:1️⃣,2️⃣,3️⃣,4️⃣。其中3️⃣ 这个ID,注意只要最后的8位

复制代码
touch ~/.gradle/gradle.properties

# 1️⃣
mavenCentralUsername=2xxxXx
mavenCentralPassword=Sf111111xxxxdxxxxdddxxxK
# 2️⃣
signing.password=xxxx
# 3️⃣ 
signing.keyId=abcd1234 
# 4️⃣
signing.secretKeyRingFile=/Users/xxx/XXX/secring.gpg

6. 集成模块插件

直接在module的build.gradle中集成:

kotlin 复制代码
plugins {
		...
    id("com.vanniktech.maven.publish") version "0.35.0"
}

mavenPublishing {
  publishToMavenCentral()

  signAllPublications()
}

mavenPublishing {
  coordinates("com.example.mylibrary", "library-name", "1.0.3")

  pom {
    name = "My Library"
    description = "A description of what my library does."
    inceptionYear = "2026"
    url = "https://github.com/username/mylibrary/"
    licenses {
      license {
        name = "The Apache License, Version 2.0"
        url = "http://www.apache.org/licenses/LICENSE-2.0.txt"
        distribution = "http://www.apache.org/licenses/LICENSE-2.0.txt"
      }
    }
    developers {
      developer {
        id = "username"
        name = "User Name"
        url = "https://github.com/username/"
      }
    }
    scm {
      url = "https://github.com/username/mylibrary/"
      connection = "scm:git:git://github.com/username/mylibrary.git"
      developerConnection = "scm:git:ssh://git@github.com/username/mylibrary.git"
    }
  }
}

多个模块的时候,复制这些到其他子模块。修改其他的配置version,name等模块信息。

7. 发布

然后选择模块下的publishToMavenCentral,点击。你不用编译,他自己会编译。

注意这个时候,还没有发布:

再上到publishing。点击发布:

左边变成了· PUBLISHING状态。

等待几分钟。发布成功!

另外

建议在开发中,不要每次有一点修改就去发布。这样白费时间。错了还得修改。在前面发布的时候,不要急着publishToMavenCentral,而是先publishToMavenLocal()

在使用模块的项目中:

配置根目录settings.gradle:

添加本地mavenLocal() 和一些镜像站:

groovy 复制代码
dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        mavenLocal() //追加一个本地查找
        maven { url 'https://maven.aliyun.com/repository/public' }
        maven { url 'https://maven.aliyun.com/repository/google' }
        maven { url 'https://maven.aliyun.com/repository/central' }
        maven { url 'https://repo.huaweicloud.com/repository/maven/' }
        maven { url 'https://mirrors.cloud.tencent.com/nexus/repository/maven-public/' }
        maven { url 'https://mirrors.163.com/maven/repository/maven-public/' }
        google()
        mavenCentral()
        maven { url 'https://www.jitpack.io' }
    }
}
相关推荐
2501_915106321 天前
iOS 安装了证书,HTTPS 还是抓不到
android·网络协议·ios·小程序·https·uni-app·iphone
好奇龙猫1 天前
【人工智能学习-AI-MIT公开课13.- 学习:遗传算法】
android·人工智能·学习
TO_ZRG1 天前
Unity打包安卓、iOS知识点
android·unity·android studio
周杰伦fans1 天前
AndroidStudioJava国内镜像地址gradle
android·java·android-studio
艾莉丝努力练剑1 天前
【Linux进程控制(一)】进程创建是呼吸,进程终止是死亡,进程等待是重生:进程控制三部曲
android·java·linux·运维·服务器·人工智能·安全
2501_924064111 天前
2026年移动应用渗透测试流程方案及iOS与Android框架对比
android·ios
用户69371750013841 天前
谷歌官方推荐:Android 性能优化全攻略——从工具到实战,两周提升 App 评分
android·android studio·android jetpack
顾林海1 天前
Android Profiler实战宝典:揪出CPU耗时元凶与内存泄露小偷
android·面试·性能优化
城东米粉儿1 天前
Android刷新与绘制机制详解 笔记
android