使用Gradle发布Android开源项目到JCenter

有时候为了别人使用方便,需要将自己的开源库发布到jcenter,这样,别人在build.gradle里一句话就可以引用到你的库,本文就来介绍如何通过配置gradle来方便的进行library发布。

之前发布过一个BaiduVoiceHelper,后来时间长了,过程就忘记了,重新检索,根据 http://blog.csdn.net/maosidiaoxian/article/details/43148643 这篇文章的指引最后成功啦,原作者还配了写好的gradle并开源,地址:https://github.com/msdx/gradle-publish ,实际使用过程中发现其github上的写好的gradle是有更新过的,所以跟他的博文稍微有些出入,需要两者结合起来看,所以这里重新总结一下,以便日后直接使用。

配置bintray账号与API Key

首先注册bintray账号,地址:https://bintray.com/
支持使用github账号直接创建bintray账号,账号生成后会自动为你分配一个API Key账号名以及API Key是我们能够上传库到bintray的钥匙。
登录bintray网站后,先点击自己的用户名进入个人页面,然后点击Edit进入profile页面,这里就可以看到API Key了
click user
进入个人页面:
bintray index
进入profile:
bintray profile

至此,便可以复制到API Key信息啦。

接下来,我们需要将这些信息存到本地,也就是你的系统.gradle目录,这里要注意,我们保存在系统下,而不是你的project下的.gradle目录,如果你的是XP,那么一般是在 C:\Documents and Settings\用户名\.gradle,而如果是win7以上,那么是在c:\Users\用户名\.gradle
然后再这个目录下新建gradle.properties文件,在其中记录bintray信息,如下:

1
2
BINTRAY_USER=dxjia
BINTRAY_KEY=xxxxxxx

如果已经存在,那么就直接在文件末尾添加上面的内容,具体修改为你自己的实际情况。

这样处理的好处是:我们只需要记录一次,以后每个需要发布到jcenter的库都可以使用到这里的信息,并且这个由于是存放在project目录之外的,所以也不会受到版本控制的影响,不会因为意外上传而泄露了个人信息。

配置项目Gradle

复制gradle.properties到待发布module目录

https://github.com/msdx/gradle-publish/blob/master/gradle.properties 这个文件复制到你需要发布的库的目录下,注意是你的待发布的库的module下,并修改它的内容,如下:
以下面的最终引用方式为例:

1
2
3
dependencies {
compile 'cn.dxjia:imagetextbutton:1.0.0'
}

配置内容如下

1
2
3
4
5
6
7
8
9
10
11
12
PROJ_GROUP=cn.dxjia
PROJ_VERSION=1.0.0
PROJ_NAME=imagetextbutton
PROJ_WEBSITEURL=https://github.com/dxjia/ImageTextButton
PROJ_ISSUETRACKERURL=
PROJ_VCSURL=git@github.com:dxjia/ImageTextButton.git
PROJ_DESCRIPTION=android button with icon and text
PROJ_ARTIFACTID=imagetextbutton

DEVELOPER_ID=dxjia
DEVELOPER_NAME=dex.jia
DEVELOPER_EMAIL=jdxwind@dxjia.cn

最终的引用形式会是 PROJ_GROUP:PROJ_ARTIFACTID:PROJ_VERSION的拼接。每次新版本的发布都要记得来修改 PROJ_VERSION属性,否则····

修改待发布目录的build.gradle

配置好上面的内容之后,接下来我们需要修改工程待发布库目录下的build.gradle文件。
build.gradle文件的dependencies中增加下面的内容:

1
2
3
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.3'
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.6'
classpath "org.jfrog.buildinfo:build-info-extractor-gradle:4.0.0" // Remove it if you won't to publish SNAPSHOT version.

然后在文件末尾加上下面一句引用:

1
2
// this script was used to upload files to bintray.
apply from: 'https://raw.githubusercontent.com/msdx/gradle-publish/master/bintray.gradle'

这句话可以在gradle build的时候,直接从github仓库拉取bintray.gradle文件进行引用,有时候由于网络问题,会出现下面的问题,

1
Gradle sync failed: Software caused connection abort: recv failed

这时候可以手动将bintray.gradle保存到项目本地待发布的库目录下,并将同目录下的build.gradle最后一句改为:

1
apply from: 'bintray.gradle'

这样就可以了。

执行发布

至此,我们就可以执行发布命令啦,使用命令行切换到项目目录下,然后运行:

1
gradlew.bat bintrayUpload

或者在Android studio里,直接右侧选择执行 bintrayUpload 这个task即可,这个命令执行结束后,就会直接将生成的 aar库推送到了你的bintray账号下。

包含到Jcenter

执行完步骤三后,登录到你的bintray个人页面下,也就是 https://bintray.com/dxjia ,会在右下角显示出你的动态,会有刚刚推送的库的记录,点击打开。
bintray lastest activity
打开的页面中:
点击右下角的 Add to Jcenter按钮,弹出的页面中填写上一些描述,或者不填,然后Send,如此便发出了申请,一般很快就会审核通过。
add to jcenter
填写申请描述:
compose comments

基本上按照上面的4个步骤即可,感谢作者 msdx 提供的现成的脚本。

Reference

[1] http://blog.csdn.net/maosidiaoxian/article/details/43148643
[2] https://github.com/msdx/gradle-publish