如何上传自己的Library到JCenter仓库

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

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

这样我们版本更新的时候只需要更改一下版本号就行,而不用去下载jar包,给开发带来了极大的便利,但如果我们自己想上传library供其他开发者使用呢?那么此教程会讨论几种不同的方式来一步步发布自己的library到JCenter仓库。

基于插件novoda/bintray-release的方式

  • 第一步:新建一个Android Library类型的RPLibrary库,把其作为上传到远程JCenter仓库的本地第三方库

在AS中选择File->New->New Module,然后选择Android Library,新建一个Library。这里以新建RPLibrary为例子.

注意这里的Library的名字需要后面的Package的名字保持一致

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

如果你已经有了Android Library类型的库则可以忽略此步骤

  • 第二步:注册账号

在bintray官网注册账号,注册完成后验证邮箱,然后登陆进入首页把鼠标放到你的账户名上,选择弹出的Edit Profile选项

然后在界面的左侧选择Repositories选项,进入如下界面:

接着选择Repositories仓库的maven,双击进入如下界面:

双击右侧的Add New Package新建一个Package,并在左侧填写Package名字(注意Package需要和你的Library的名字保持一致

填写相应的库信息,(注意Name要和你的Library的名字保持一致Licenses选择Apache-2.0最后三个网址与你的项目在GitHub上的地址有关,相信不难理解(建议这样填写)),最后双击Create Package新建一个Package

  • 第三步:添加依赖

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

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.0'
        // 基于插件[novoda/bintray-release]的方式
        classpath 'com.novoda:bintray-release:0.4.0'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}
.....

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

apply plugin: 'com.android.library'
// 基于插件[novoda/bintray-release]的方式
apply plugin: 'com.novoda.bintray-release'

// 基于插件[novoda/bintray-release]的方式
publish {
    userOrg = '********' //你的bintray用户名
    groupId = 'com.sh2zqp'  //你的唯一的groupId,对应com.squareup.okhttp3:okhttp:3.4.1中的com.squareup.okhttp3
    artifactId = 'RPLibrary' //你的library的名字,对应com.squareup.okhttp3:okhttp:3.4.1中的okhttp
    publishVersion = '0.0.2' //版本号
    desc = 'Android6.0+ RunningPermission Simple Use Way Library.'
    website = 'https://github.com/sh2zqp/' //建议填写github地址,不过不影响,这里做演示填的自己的网址

    bintrayUser = 'scinecehistory' //你的bintray用户名
    bintrayKey = '******************************' //在你的bintray账户里面查找
}

bintrayKey的获取方式如下图

经过上面的配置,上传JCenter成功后那么别人引用你的library的代码就为

compile 'com.sh2zqp:RPLibrary:0.0.2’
  • 第五步:上传到bintray的maven仓库

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

./gradlew clean build bintrayUpload -PdryRun=false

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

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

但是到这里还无法让别人通过 compile ‘com.sh2zqp:RPLibrary:0.0.2引用,目前只是你自己的私人库。但可以通过如下方式来进行引用:

通过gradle脚本上传library到maven仓库,你可以在本地验证以下,需要进行在根目录的build.gradle配置:

allprojects {
    repositories {
        jcenter()
        maven {
            url 'https://dl.bintray.com/sciencehistory/maven/'
        }
    }
}

然后在主工程的build.gradle文件中添加如下依赖:

compile 'com.sh2zqp:RPLibrary:0.0.2'

url可以通过如下图获取

  • 第六步:添加到JCenter仓库

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

compile 'com.sh2zqp:RPLibrary:0.0.2'
  • 第七步:更新版本号

这个非常简单,当你的Library代码更改后,只需要更改一下上面的配置里面的publishVersion,运行./gradlew clean build bintrayUpload -PdryRun=false,就可以更新版本号了。这样,整个过程就结束了。

常见问题

如果你的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"
        }
    }
}

源码

参考资料

一步一步教你上传自己的 Library 到 JCenter
Android Library上传到JCenter仓库实践
教你轻松将Android library 发布到JCenter
AndroidStudio怎么将开源项目发布到jcenter
如何使用Android Studio把自己的Android library分享到jCenter和Maven Central
将Library上传到Jcenter

QinPeng Zhu wechat
扫一扫,关注我的公众号获取更多资讯!
学习分享,感谢鼓励!