原文首发于微信公众号:躬行之(jzman-blog),欢迎关注交流!
上篇文章实现了一个日期时间选择器,github 地址如下:
https://github.com/jzmanu/MDatePickerSample
直接使用 gradle 依赖即可:
compile 'com.manu:MDatePicker:1.0.0'
也可以查看上篇文章的详细介绍或在文末点击阅读原文查看,这里顺便将其开源出来,顺便点个 star 支持一下,下面将介绍如何上传 Android 库项目到 JCenter 上供自己或其他人使用,具体参考如下:
- 注册账号
- 创建仓库
- 库项目配置
- 上传库项目
- 添加到JCenter
- 遇到的问题
注册账号
注册一个 Bintray 账号,选择注册个人类型,为什么要特意说明一下,这里大多数人第一次注册的时候都会注册成企业账号,企业账号貌似不能将库添加到 JCenter 中,此外企业版肯定在试用期之外是需要收费的,注册地址如下:
//个人账号
https://bintray.com/signup/oss
//企业账号
https://bintray.com/
创建仓库
这里上传的时候使用的时 bintray-release 插件,该插件如果在上传的时候不使用 repo 指定仓库名称,则会将项目上传到名为 maven 的库中,这里又有一个小坑,这个名为 maven 的仓库需要手动创建,为了方便就创建一个名为 maven 的仓库,登录自己的账号,选择
Add New Repository 创建仓库:
如果没有创建则会报如下错误:
* What went wrong:
Execution failed for task ':dashview:bintrayUpload'.
> Could not create package 'smalllee/maven/dashview': HTTP/1.1 404 Not Found [message:Repo 'maven' was not found]
然后,再该仓库中创建一个和 artifactId 名称一样的包:
以上是将库项目上传到 JCenter 的准备工作,下面来看一看项目这边是如何进行配置。
库项目配置
创建一个库 module 用于单独存放对外开放的库项目,首先在 Project 下的 build.gradle 文件中引入 bintray-release 插件的依赖:
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.1'
//bintray-release插件
classpath 'com.novoda:bintray-release:0.8.0'
}
}
可以在配置编码格式为 UTF-8 来防止编译上传过程中出错,也可以设置忽略对 doc 文档的不规范检查,设置如下:
allprojects {
repositories {
google()
jcenter()
}
tasks.withType(Javadoc){
//不对生成的doc文档进行检查
options.addStringOption('Xdoclint:none', '-quiet')
//设置编码格式
options.addStringOption('encoding', 'UTF-8')
}
}
然后在库 module 下的 build.gradle 文件中引入 bintray-release 插件:
apply plugin: 'com.novoda.bintray-release'
注意 bintray-release 插件一定要在 com.android.library 插件之后引入,否则最后上传的时候虽然会提示上传成功,但实际上没有上传成功,报错信息如下:
:mdatepicker:xxx
:mdatepicker:xxx
//报错信息
:mdatepicker:bintrayUpload: Could not find publication: release.
BUILD SUCCESSFUL in 45s
然后在名为 publish 的 Task 中定义上传库项目的关键信息如下:
publish{
//bintray.com的用户名
userOrg = 'jzman'
//一般写包名
groupId = 'com.manu'
//指定仓库名称
// repo = "maven"
//项目名称
artifactId = 'MDatePicker'
//版本号
publishVersion = '1.0.0'
//项目描述
desc = 'a goog date picker'
//项目网址
website = 'https://github.com/jzmanu/MDatePickerSample'
}
然后就可以进行库项目的上传了。
上传库项目
上传之前需要先获取 API Key ,按照图示选择 Edit Profile:
然后选择 API Key,填写用户密码获取 API Key:
获取到 API KEY 之后使用如下上传命令进行上传:
gradlew clean build bintrayUpload -PbintrayUser=用户名 -PbintrayKey=API KEY -PdryRun=false
上传成功之后日志如下:
//...
:mdatepicker:releaseAndroidJavadocsJar
:mdatepicker:releaseAndroidSourcesJar
:mdatepicker:publishReleasePublicationToMavenLocal
:mdatepicker:bintrayUpload
BUILD SUCCESSFUL in 45s
添加到JCenter
上传成功之后就可以打开项目详情,选择 Add to JCenter 就可以申请添加到 JCenter 了,如下图所示:
然后就可以使用通过依赖的方式直接使用该库项目了,如下:
compile 'com.manu:MDatePicker:1.0.0'
遇到的问题
遇到的问题大部分都在上文中介绍了,还有一点需要注意的是如果出现如下错误:
A problem occurred configuring project ':app'.
> Failed to notify project evaluation listener.
com.novoda.gradle.release.AndroidLibrary$LibraryUsage.getDependencyConstraints()Ljava/util/Set;
建议检查自己的 gradle 版本,我用的时 4.6 要修改成 4.4,gradle 插件的版本也要相应的降低,
//gradle插件版本
classpath 'com.android.tools.build:gradle:3.0.1'
//gradle版本
distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip
这样就可以开源自己的库了,进步很简单就是不断的去实践、去学习。