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