我们在Android开发过程中一定会用到别人的库,比如squareup公司的OKHttp:

compile 'com.squareup.okhttp3:okhttp:3.4.1'

这样我们版本更新的时候只需要更改一下版本号就行,而不用去下载jar包,给开发带来了极大的便利,但如果我们自己想上传lib供其他开发者使用呢?那么此教程会带着你一步一步发布自己的library。Let’s go!

确定要上传的Library

如果你有Library可以忽略此步骤,没有的话添加library。在Android Studio中选择File->New->New Module,然后选择一个Library,新建一个Library。这里以新建DemoLibrary为例子。(注意这里的Library需要后面的Package的名字一致)。 新建一个Library 新建一个Library

现在项目的结构如下图,接下来就是添加必要的Jcenter的依赖,为上传做准备。 项目的结构


注册账号

首先去bintray官网注册账号,注册完成后验证邮箱,然后登陆进入首页点击View All,选择Maven仓库,新建一个Package,填写Package名字(注意Package需要和你的Library的名字一致)

注意点击你的头像->Your Profile->Edit->Api key,这个先记下来,后面上传要用到。 Api key

新建一个Package 新建一个Package 新建一个Package


添加依赖

在整个工程的build.gradle文件中添加classpath 'com.novoda:bintray-release:0.3.4',注意是整个工程的build.gradle

添加依赖

接着是在你自己Library(这里是DemoLibrary)的build.gradle的文件中配置自己的信息,复制下面的脚本,改成你自己的信息即可

apply plugin: 'com.android.library'
apply plugin: 'com.novoda.bintray-release'

publish {
    userOrg = 'lufficc' //你的用户名
    groupId = 'com.lufficc' //你的唯一的groupId,对应com.squareup.okhttp3:okhttp:3.4.1中的com.squareup.okhttp3
    artifactId = 'DemoLibrary' //你的library的名字,对应com.squareup.okhttp3:okhttp:3.4.1中的okhttp
    publishVersion = '0.0.1' //版本号
    desc = 'This is a demo library to teach how to publish you own library to jcenter with android studio.'
    website = 'http://lufficc.com/' //建议填写github地址,不过不影响,这里做演示填的自己的网址
 
    bintrayUser = 'lufficc' //你的用户名
    bintrayKey = 'Your api key' //在你的账户里面查找
}

经过上面的配置,上传成功后那么别人引用你的library的代码就为compile 'com.lufficc:DemoLibrary:0.0.1'

你自己Library的build.gradle的文件中配置自己的信息


上传

经过上面的配置,现在就可以传了,上传之前记得Sync一下Project,然后打开命令行,输入,回车:

gradlew clean build bintrayUpload -PdryRun=false

然后等待几分钟,期间会联网下载依赖的库,最后如果没有问题,会显示BUILD SUCCESSFUL信息,然后去官网查看刚才建的Package,会发现多了你刚才上传的版本号。

BUILD SUCCESSFUL 上传成功的Package

点进去可以看到有三种引用方式:

但是到这里还无法让别人也能引用,目前只是你自己的私人库。下面是添加到Jcenter,非常简单。


添加到Jcenter

在上面的页面中点击Add To JCenter,然后随便填写一下comments,点击send,然后工作人员会审核和,你只需等待几个小时,然后会有站内消息提示你已经发布发到Jcenter,这样别人也可以引用你的Library,有没有很自豪的感觉!


更新版本号

这个非常简单,当你的Libraryd代码更改后,只需要更改一下上面的配置里面的publishVersion,运行gradlew clean build bintrayUpload -PdryRun=false,就可以更新版本号了。这样,整个过程就结束了,遇到什么问题欢迎评论提出或者私信我。


总结

其实上传没那么复杂

  1. 注册账号
  2. 为自己的Library项目添加依赖,配置信息
  3. 上传,添加到Jcenter
  4. 更新版本号

常见问题

  1. 如果你的Java doc含有中文导致上传失败,可以尝试在lib的build.gradle添加如下代码:
     allprojects {
     tasks.withType(Javadoc) {
         options{
             encoding "UTF-8"
             charSet 'UTF-8'
             links "http://docs.oracle.com/javase/7/docs/api"
         }
     }
    }
    
  2. 本教程是基于插件novoda/bintray-release的,更多问题可以查看issues或者查看Wiki