在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