Android如何发布项目到jcenter/maven,在gradle中compile自己的开源库

背景:Android开发者在自己码完一个好项目(module)后,希望将项目(aar方式)开源出去,让别人在gradle中直接compile你的开源库,一个很好的方式就是上传到jcenter的maven仓库,别人使用时通过添加compile引用即可。

例如家喻户晓的Rxjava,只需要一句话compile 'io.reactivex:rxjava:1.1.6',就可以添加到项目中,时间久了,是不是自己也想试试开源一下自己的成果,给大家用用,或者成(zhuang)就(bi)感?

网上有很多文章,笔者自己在尝试的过程中主要是根据hongyang的博客Android 快速发布开源项目到jcenter来操作,但是亲身操作过程中发现了一些细节问题可能遇到坑,因此记录下来,供有需要的同学参考。

本文主要是采用AS将mobule生成aar,然后利用novoda + bintray-release插件上传到bintray发布到jcenter,然后引用
具体上传的插件主要有两种,

目前很多文章都是以gradle-bintray-plugin这个插件做上传,多数文章的介绍都是针对普通的开源项目的(即不包含编译时注解相关)。那么对于用到编译时注解,因为涉及到多个module,上传可能会比较麻烦。本文准备采用bintray-release这个插件。

其他发布项目的方式可以利用jitpack.io结合github,参考如何让别人在gradle中直接compile你的开源库以及 不利用novoda插件,手动配置(传说中666的人都是手动配置的),参考Android Studio提交库至Bintray jCenter从入门到放弃 ,看个人需求。


具体步骤:

1. 编码,生成待发布的开源项目aar

没啥说的,新建module,编码,生成aar,具体可以参考android studio生成aar包并在其他工程引用aar包

2. 注册bintray

注册地址 https://bintray.com/


注册bintray,可以选择用github等其他方式登录,但是如果是qq邮箱,会注册不通过。。。网上有人说163邮箱也不行(笔者未亲自尝试),我用的是126的邮箱,毕竟gmail....你懂的.

第一个坑,bintray有2种主页。 一种是普通账户登录 start your free trial(30天试用期),一种是for an Open Source Account的账户登录, 要选第二种 for an Open Source Plan,不然后面会出问题。。。

具体参考利用bintray-release插件上传到Bintray- HTTP/1.1 404 Not Found [message:Repo 'maven' was not found]问题解决

3. 利用插件上传aar到bintray

具体配置参考Android 快速发布开源项目到jcenterAndroid Studio发布项目到jCenter第二个坑,需要注意的是添加仓库add new repo时选择public,maven,maven


注意,创建仓库时,如果使用Bintray-release,名字就填成maven,因为他的wiki:repoName: The repository name. Set to ‘maven’ by default.(有错误请指出)
否则运行命令的时候会报错,下面的Type我们也选maven。
这里我已经创建好了仓库,所以进入仓库,点击创建新的package ,需要注意的是这里的Name要和我们Project中配置的artifactId 一致,否则会上传失败。

配置完毕,在AS的terminal面板下运行 ./gradlew clean build bintrayUpload -PbintrayUser=xxxxxxx -PbintrayKey=xxxxxx -PdryRun=false


其中xxxx代表你的user和key,在bintray个人面板都可以看到,PbintrayUser是你登录binary用户名,key就是我们前面获取到的apikey,dryRun是一个配置参数,当为true的时候,会运行所有的环节,但是不会上传。
然后我们在Studio的命令行运行命令。

build的过程中可能会有些问题,比如说javadoc lint检查之类的。基本上网上都有解决办法。参考上传jcenter的“第一次”所遇到的坑

4. 发布到jcenter

如果都没问题了,那么恭喜你,到了提交审核的关口,在面板点击add to jecenter按钮, 如果你没有这个按钮,不要忧郁,不要彷徨,是你注册选择(插入姿势)有问题,请选第二种 for an Open Source Plan

,自己填写对自己项目的描述,点击发送,等待工作人员审核,一般几个小时就可以审核成功了,然后你会收到站内信,项目的add to jecenter也会消失掉。
此外你还可以根据你上传的groupId,访问该网站
https://jcenter.bintray.com/groupId

5. 引用自己的开源项目

这一步相信大家是闭着眼睛都会了。。。
你配置gradle时

groupId = 'com.user'//jcenter上的路径
artifactId = 'project'//项目名称
publishVersion = '1.0.0'//版本号

那么你引用方式就是compile 'com.user:project:1.0.0'

6. 版本更新

版本更新,只需要编码完成后,修改publishVersion版本号,然后重新走一遍流程上传到仓库就可以了.


参考链接:

  1. Android 快速发布开源项目到jcenter

  2. 利用bintray-release插件上传到Bintray- HTTP/1.1 404 Not Found [message:Repo 'maven' was not found]问题解决

  3. 手把手教你将Android项目开源到JCenter两种方式以及挖坑和填坑(一)

  4. Android Studio提交库至Bintray jCenter从入门到放弃

  5. 如何让别人在gradle中直接compile你的开源库

推荐阅读更多精彩内容