背景: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
注册bintray,可以选择用github等其他方式登录,但是如果是qq邮箱,会注册不通过。。。网上有人说163邮箱也不行(笔者未亲自尝试),我用的是126的邮箱,毕竟gmail....你懂的.
第一个坑,bintray有2种主页。 一种是普通账户登录 start your free trial(30天试用期),一种是for an Open Source Account的账户登录, 要选第二种 for an Open Source Plan,不然后面会出问题。。。
3. 利用插件上传aar到bintray
具体配置参考Android 快速发布开源项目到jcenter和Android 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
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版本号,然后重新走一遍流程上传到仓库就可以了.
参考链接: