我们在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的名字一致)。
现在项目的结构如下图,接下来就是添加必要的Jcenter的依赖,为上传做准备。
*
注册账号
首先去bintray官网注册账号,注册完成后验证邮箱,然后登陆进入首页点击View All,选择Maven仓库,新建一个Package,填写Package名字(注意Package需要和你的Library的名字一致)
注意点击你的头像->Your Profile->Edit->Api key,这个先记下来,后面上传要用到。
新建一个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'
。
*
上传
经过上面的配置,现在就可以传了,上传之前记得Sync一下Project,然后打开命令行,输入,回车:
gradlew clean build bintrayUpload -PdryRun=false
然后等待几分钟,期间会联网下载依赖的库,最后如果没有问题,会显示BUILD SUCCESSFUL信息,然后去官网查看刚才建的Package,会发现多了你刚才上传的版本号。
点进去可以看到有三种引用方式:
但是到这里还无法让别人也能引用,目前只是你自己的私人库。下面是添加到Jcenter,非常简单。
*
添加到Jcenter
在上面的页面中点击Add To JCenter,然后随便填写一下comments,点击send,然后工作人员会审核和,你只需等待几个小时,然后会有站内消息提示你已经发布发到Jcenter,这样别人也可以引用你的Library,有没有很自豪的感觉!
*
更新版本号
这个非常简单,当你的Libraryd代码更改后,只需要更改一下上面的配置里面的publishVersion
,运行gradlew clean build bintrayUpload -PdryRun=false
,就可以更新版本号了。这样,整个过程就结束了,遇到什么问题欢迎评论提出或者私信我。
*
总结
其实上传没那么复杂
注册账号
为自己的Library项目添加依赖,配置信息
上传,添加到Jcenter
更新版本号
*
常见问题
如果你的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"
}
}
}
本教程是基于插件novoda/bintray-release的,更多问题可以查看issues或者查看Wiki。