文档章节

手把手教你如何把项目提交到 jcenter

猴亮屏
 猴亮屏
发布于 2017/09/11 11:26
字数 2201
阅读 13
收藏 0

前言

jcenter 作为 Android 开发者来说,应该是首选,因为 Android Studio 默认即是以 jcenter 为远程库,本文使用 bintray-release 插件完成项目的上传,相比于网上流传的 gradle-bintray-plugin, bintray-release 所需要编写的 gradle 代码量极少,所以即使你是一个与我一样对 gradle 不熟悉的开发人员,那也不是很大问题。其 github 地址为:https://github.com/novoda/bintray-release,有任何 issues 都可以在上面提交。

先完成你的 library

网上的教程都是先完成账号注册再跳转叫你完成 library,然后再回来上传,千万别这样,一来一回很容易迷糊,既然你是想要上传你的 library 的话,那么我相信这一步你已经完成了。

project 下 build.gradle

标题已经写的很大了,希望各位读者不要搞混了,这是在 project 目录下的 build.gradle 文件下添加以下依赖:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        // 请添加如下一行依赖
        classpath 'com.novoda:bintray-release:0.5.0'
    }
}

目前笔者所使用的是 0.5.0 版本的 bintray-release ,bintray-release 插件版本可点此链接查看, https://github.com/novoda/bintray-release/releases。就目前笔者所使用的 0.5.0 版本来说,需要使用 gradle 3.5 version+ 进行编译,所以其他版本很有可能也对 gradle 版本有一定要求,希望各位读者稍稍注意些,不过不要紧,因为如果你的 gradle 版本不合适,在后期编译的结果中会给予你相应的提示。在 project 下的 build.gradle 中添加了相应依赖之后,我们就可以在 project 中各个 module 中使用。

module 下 build.gradle

请在你的 module 下的 build.gradle 中添加如下依赖:

apply plugin: 'com.novoda.bintray-release'

publish {
    userOrg = 'username'          // bintray 用户名
    groupId = 'com.username'        // 依赖前面的路径,例如:compile 'com.squareup.okhttp3:okhttp:3.8.1',这里所填的就是 com.squareup,建议使用 com.+你的用户名
    artifactId = 'projectname'  // 模块名称
    publishVersion = '1.0.0'    // 版本号
    desc = 'xxxxxx'             // 你的项目描述
    website = 'xxx'             // 你的项目地址,可填 github 地址
}

如上已经写的很清楚了,这里还要提出一点的就是上面说到的模块名称,如果你的 library 只有一个,那么没有任何问题,直接写成你想设计成的名字。但是你的 library 如果是多 module 组成的话,例如可参考我的项目Permissions4M,各个模块请单独给一个名字用以区分,我的建议是 项目名-模块功能,例如我的参考库中分成了三个 module,分别取了 permissions4m-apipermissions-annotationpermissions-processor 用以区分。如果还有什么疑问,可以留言给笔者。如此一来,关于项目的配置我们已经做好了,那么接下来我们就应该去把关于 jcenter 网站的东西给完成就好了。两个 gradle 文件写好后,别忘了点击 sync 进行同步。

注册 bintray 账号

官网链接:https://bintray.com/,请一定注意:

如果你是进入官网的话,请点击右侧红色框框注册而不是左侧:

这里写图片描述

简单的说下,左侧注册是为付费用户免费体验,但是这个账户注册了之后反而有相当多的限制,致命的一点就是你无法将你的库上传至 jcenter 作为一个公有库供大家使用,而右侧的注册正如上所说“for an open source account”。账号注册好了之后,请进入:https://bintray.com/profile/edit ——

这里写图片描述

请点击 API Key,接下来

这里写图片描述

请点击箭头所指按钮,对 API Key 进行复制,当然如果你想点击 Show 看一看自己的 key 我也不拦着你。你可能会有一个疑问 API Key 是什么?理解起来很简单,既然 square 公司发布了 okhttp3 的 3.8.1 版本,那么我可不可以在前面所提到的 module 中的 gradle 中把 groupId 改成 okhttp3 的 groupId,然后上传新的版本覆盖它呢?当然不可以,一点是 groupId 是唯一的,另一点就是如果你想上传 square 公司的 okhttp3 项目的话,一定要有它的 API Key,所以 API Key 就类似一个账号密码的功能,来保障开发者项目的唯一性。

创建 maven 仓库

就像使用 github 一样,我们在 bintray 上需要先行创建一个库,但是一个账号只需要创建一个库就可以了。如下所示:

这里写图片描述

点击 Add New Repository:

这里写图片描述

请务必将 Name 写成 maven,因为这样可以帮你省去很多麻烦,然后 Type 务必选择 Maven。创建好 repo 后,请进入 repo 中,然后:

这里写图片描述

请点击 Add New Package,这里请注意,以后如果你有新的 library 需要上传到 jcenter,你不需要新建新的 repo,只需要进入 Maven repo 后,点击 Add New Package 即可,接下来就是填入相应的信息并确认即可。

Terminal 输入命令并上传

你可以选择原生或 Android Studio 中 Terminal 输入以下命令:

Windows:
gradlew clean build bintrayUpload -PbintrayUser=你的用户名 -PbintrayKey=API Key 的值 -PdryRun=false

Mac OS:
./gradlew clean build bintrayUpload -PbintrayUser=你的用户名 -PbintrayKey=API Key 的值 -PdryRun=false

如果出现 BUILDSUCCESSFUL 则代表已经成功,但是如果出现 FAILED 请不要慌,看看 terminal 的最前面的输出部分,看看是否有异常,如果没有或者不知道怎么解决,那么根据 terminal 最后面的输出部分,添加相应的参数让 terminal 输出异常细节,在此由于笔者没有截图保留,所以就不提供给各位读者了。大部分情况下的出错常常是 401,这在很大程度上可能是你的 API Key 填错了,如果还有解决不了的异常,可自行百度和谷歌,也可留言给笔者,但务必请先自行查询。

add to jcenter

理想情况下你的库已经上传到 bintray 上了,但是此时你的库还不是公有的,需要手动将库从你目前的私人 repo 同步到 jcenter 中,打开你的 repo 并进入你的项目中,在如下的位置会有一个 add to jcenter 的按钮:

这里写图片描述

由于笔者已经同步到 jcenter,故不再出现该按钮,而是多了一个方框中的咖啡杯,代表已经同步到了 jcenter。在点击 add to jcenter 之后,就会进入一个提交页面,你可以在框框内填上一些描述你库功能的文字,然后就可以提交了:

这里写图片描述

由于美国和我们有一定的时差,所以你的库可能不会很及时的被审核提交通过,但是就笔者的经历来看,都会在美国当地工作日当天处理好,速度还是很快的。

题外话

说几句题外话——

  • 其一是关于更新版本:

    只需要将上述中 module 中的 build.gradle 中的 publishVersion 进行更改就好了,如果你和笔者一样不是选择上传新版本,而是不停地覆盖老版本,那么请先在 bintray 上手动删除老版本之后再进行版本覆盖,当然,覆盖版本这种事只能发生在项目测试期,而项目运行期肯定不能这么干。jcenter 同步你的库所需时间大小不一,但是请读者记住,版本更新是不需要 add to jcenter 的,也就是意味着不需要通过审核,只是同步会需要一定时间,时间长短不一,可能几分钟,也可能如笔者一样,等待了几天才完成同步。

  • 其二是关于上述所说的版本覆盖:

    gradle 在每次依赖的情况下,实际上都会对库进行本地缓存,这样当我们下次再次使用该项目的同一版本的时候就会直接在本地进行获取而并不需要远程获取,这样是很大程度上方便了开发者,但是对于我上述的版本覆盖问题来说却是致命的。我在本地导入 1.0.0 版本测试的时候发现这个版本有个致命的 bug,导致项目压根就不能正常运行,我选择了上 bintray 手动删除 1.0.0 版本,并在本地修复 bug 后上传了新的 1.0.0 版本,但是我此时再次在本地使用 gradle 进行远程依赖时,gradle 会发现,这个库刚刚用过,而且还是 1.0.0 版本,那我就不去远程获取了,因为本地我缓存了一份啊!那么这样就会导致我们的 gradle 不能刷新本地依赖,怎么解决呢?请见我的上一篇博客,一行命令带你强制清除 gradle 依赖缓存

本文转载自:http://blog.csdn.net/ziwang_/article/details/76556621

共有 人打赏支持
猴亮屏

猴亮屏

粉丝 35
博文 517
码字总数 56802
作品 4
北京
Android工程师
将自己的开源项目提交到JCenter

开始 最近自己写了一个开源控件,是有关标签流控件的(从服务器端获取标签,然后将标签自适应的放进一个容器里)。现在控件写完了,自己就想将它提交到Maven的中心仓库或者是JCenter。可是自己对...

fyales
2015/03/10
0
1
如何使得自己的代码被别人优雅引用:快速上传Android Library到Jcenter超详细教程

前言 在日常开发中,我们经常会通过 远程引用别人的代码()来实现一些功能,如引用 网络请求库 那么,该如何使得自己的代码()被别人优雅的引用呢? 答:将代码上传至到 ->> 别人再通过 引...

Carson_Ho
09/03
0
0
FileDownloader 很棒的文件下载库

有一个很好用的文件下载库,这里做个记录; 1、内容大纲 文件库源码导入项目 com.jfrog.bintray的作用 2、文件下载开源库使用 先说说这个这个优秀文件下载开源库:FileDownloader 下面是部分...

_无问西东
09/12
0
0
Android Studio把library分发到jCenter和Maven Central

如果你想在Android Studio中引入一个library到你的项目,你只需添加如下的一行代码到模块的build.gradle文件中。 1 2 3 dependencies { compile 'com.inthecheesefactory.thecheeselibrary:...

vane_
2015/07/01
0
0
bulid.gradle 解析

外层的bulid.gradle文件 两处的repositories的闭包中都声明了jcenter() 这行配置。 jcenter是一个代码托管仓库,很多Androdi开源项目都会选择将代码托管到jcenter上,声明了这个配置之后,可...

Jerry_0221
06/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

RxJS的另外四种实现方式(四)——性能最高的库(续)

接上一篇RxJS的另外四种实现方式(三)——性能最高的库 上一篇文章我展示了这个最高性能库的实现方法。下面我介绍一下这个性能提升的秘密。 首先,为了弄清楚Most库究竟为何如此快,我必须借...

一个灰
41分钟前
1
0
麒麟AI首席科学家现世

8月31日,华为发布了新一代顶级人工智能手机芯片麒麟980,成为全球首款7nm工艺手机芯片,AI方面也实现飞跃,支持人脸识别、物体识别、物体检测、图像分割、智能翻译等。 虽然如今人人都在热议...

问题终结者
昨天
1
0
告警系统主脚本、告警系统配置文件、告警系统监控项目

告警系统主脚本 main.sh内容 #!/bin/bash#Written by aming.# 是否发送邮件的开关export send=1# 过滤ip地址export addr=`/sbin/ifconfig |grep -A1 "ens33: "|awk '/inet/ {pr...

芬野de博客
昨天
2
0
MySQL autocommit探究

-- sessionA:tx_isolation=REPEATABLE-READmysql> select connection_id();+-----------------+| connection_id() |+-----------------+| 28 |+-----------------+......

安小乐
昨天
7
0
c++多线程锁 Mutex  自动判断死锁

c++多线程锁可以使用absl::Mutex std::mutex这两种,下面是demo代码。 使用absl:Mutex的时候打印: [mutex.cc : 1338] RAW: Cycle: [mutex.cc : 1352] RAW: mutex@0x683b68 stack: @ 0x43856......

青黑
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部