原文首发于微信公众号:躬行之(jzman-blog),欢迎关注交流!
上篇文章实现了一个日期时间选择器,github 地址如下:
https://github.com/jzmanu/MDatePickerSample 复制代码
直接使用 gradle 依赖即可:
compile 'com.manu:MDatePicker:1.0.0' 复制代码
也可以查看上篇文章的详细介绍或在文末点击阅读原文查看,这里顺便将其开源出来,顺便点个 star 支持一下,下面将介绍如何上传 Android 库项目到 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 复制代码
上传成功之后就可以打开项目详情,选择 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 复制代码
这样就可以开源自己的库了,进步很简单就是不断的去实践、去学习。
个人微信公众号:躬行之(jzman-blog) ,可以关注一起交流学习.