前言
作为一个有了一定开发经验的程序员,你一定或多或少封装了一些库,用以应付一些日常的通用功能,如果每次都拷贝这些代码,或者从Git上clone下来,未免过于麻烦,且不优雅。如果能够像我们平时使用的一些开源库一样,直接api/implementation 'xxx:xxx:xxx',那就方便了,比如像这样
implementation 'com.android.support:appcompat-v7:28.0.0'
这种形式的库引入,你一定不陌生,本篇文章,将说明使用bintray-release
(顺便说一下,有其他的插件也可以发布,不过这个应该是最方便的了)来发布你的代码到JCenter
其实关于这个内容的帖子有很多,一搜一大把,不过由于AS版本、Gradle版本、bintray-release版本的不同,以及bintray网站自己的更新,导致帖子里面的流程和需要填写的参数等,都无法完美匹配现在的要求。
本篇文章,将结合网上的资料和我自己的探索,给出一个现阶段可用的发布流程
本篇文章写于2019/08/20,如果你看到它时,已经过了很久,请找更加新的流程攻略做参考
内容提要
本篇文章是使用bintray-release,在AndroidStudio里上传自己代码到JCenter的流程攻略
注册bintray账号
到bintray注册一个账号,请注意,这里迎来第一个坑点,不要看到那一坨显眼的原谅色按钮,就着急着点进去,我们要发布的是开源库,所以请点击For an Open Source Account

下一步没啥好说,自己填该填的资料注册,你也可以通过Github/Google/Twitter账号登陆(程序员没哪个没有Github账号的吧。。。),我是使用Github直接登陆的
你的主页
如果你看过其他攻略,这时候应该要开始教你“夸夸夸”的建组织建仓库了,这里我们先不急,我们先认识一下自己的主页,长这样

如果一进来不是这样的,在一号区域(这个是一定有的)点击View Profile
就能进来了
一号区域
进入主页、编辑账号(设置)、管理你的组织都在这里
二号区域
仓库区,你的代码,就可以上传到你在这里创建的仓库。这里需要注意
- 1.这里不是唯一可以存放代码的地方
- 2.我看到有帖子说,如果创建仓库时,仓库类型选择Maven,仓库名称也必须叫做maven(你可以看到我为了测试,也创建了一个这样的仓库),但是实际上不需要,你爱叫什么名字,就叫什么名字(当然这个会不会是因为那位博主在当时试的时候,确实就是那样的,也未可知)
三号区域
组织区,你可以在这里创建你的组织,然后进入创建好的组织里面,可以在里面去创建代码库(这就是为什么前面说二号区域不是唯一可以存放代码的地方)
创建代码库
创建组织
如果你的库需要多人协作完成,希望其他人也能进行代码的发布,那么你需要在一个组织下去创建仓库,如果你是一个人玩,那不用看这段
点击下图这个按钮,开始创建组织

-
创建组织
直接创建一个新组织,选这个

填资料,分别是
组织ID(必填)
组织名称(必填)
地区
网站地址
推特

创建好了,长这样。你可以看到,同样有Add New Repository
,可以创建代码库

-
从Github导入组织
如果想从Github导入组织,你必须先在你的Github创建组织,这里也大致放一下流程图

按照上图进入创建,然后按照后面的流程指导走就行了,很简单。创建完成之后,需要开放该组织的授权


搞定之后,回到bintray的组织创建页面,点击下图的按钮

然后选择已有并已授权的组织,后面的步骤相信大家都能轻易完成,不赘述

创建代码库
这里首先需要再次提醒,如果你的代码库不是只有你一个人玩,请在创建/导入好的组织里面创建代码库
,这样你才能邀请小伙伴来一起玩耍
同样的,先展示入口

填写代码库的具体信息,详情如图

点击Create,就完成创建了
至此,发布代码库在bintray部分的准备工作就完成了,攻略完成 1/3
备注:bintray打开会比较慢,如果能科学上网,应该会好很多
工程配置
工程Gradle文件配置
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.6.0-alpha02'
classpath 'com.novoda:bintray-release:0.9.1'
}
}
代码库所在module的Gradle文件配置
apply plugin: 'com.novoda.bintray-release'
//推送到Bintray配置
publish {
repoName = 'CodeRep'
userOrg = "orgnamelll"
groupId = "com.bingor"
artifactId = 'hahalib2'
publishVersion = "1.0.0" //版本号
desc = "a simple utils tool" //描述,选填
website = "https://github.com/x78wteam/X78WRouter/tree/master/TestApp"
}
这里有些地方是需要注意的
- 1.repoName就是你创建仓库的时候填的那个仓库名
- 2.userOrg:如果你在组织里面去创建仓库,那么这里需要填写组织ID(ID如下图);如果不在组织内,填你的bintray用户名(用户名如下图)


- 3.最终的访问路径,是
groupId : artifactId : publishVersion
,所以你应该懂它们的各自含义了 - 4.关于artifactId,有帖子说必须和module名称一致,我特意测试了一下,不一样也是可以的
- 5.website这里,需要填写你这个库对应工程的页面地址。比如像我这里,我的Git项目下,有多个工程(这个TestApp是其中一个),那我填写的,就是TestApp工程的页面地址,而非整个Git项目的主页地址。我试过填写整个Git项目的主页地址,这样的话,后面“Add to JCenter”就会都发邮件告诉你请填写有效的VCS地址(please provide a valid balabala...具体不记得了)
上传代码到bintray
在你的AS下方标签中,找到Terminal,输入下方指令,用户名和API密钥分别如下图
gradlew clean build bintrayUpload -PbintrayUser=你的用户名 -PbintrayKey=你的Api密匙 -PdryRun=false


至此,发布代码库在本地工程部分的准备工作就完成了,攻略完成 2/3
代码库发布
发布
找到你刚才上传的代码库(有组织去组织里面找,没组织在个人主页找),点进去看详情,有“Add to JCenter”按钮,点击进入,然后什么也不用填,直接点击“Create”还是“Commit”(忘了截图了。。。),就可以了。
首次发布,需要等待几个小时,然后会发一封邮件告诉你,发布成功/失败,失败的话,会告诉你原因


附上之前VCS地址填错时候,收到的邮件内容

审核通过后,就可以引用这个库了,在代码库详情页可以看见引用地址,

implementation 'com.bingor:hahalib2:1.0.2'
更新
代码库总会需要上新版本,怎么更新呢?很简单,之前的配置里面,改动版本号,重新上传即可
publish {
...
publishVersion = "1.0.2" //改动这里即可
...
}
然后在Terminal再执行一次
gradlew clean build bintrayUpload -PbintrayUser=你的用户名 -PbintrayKey=你的Api密匙 -PdryRun=false
至此,发布代码库到JCenter完成,祝你也能顺利成功~
遇到的坑
GBK编码错误
如果在上传的时候,遇到这个错误

打开工程的build.gradle,输入这个
allprojects {
...
tasks.withType(JavaCompile) { //设置全局编码
options.encoding = "UTF-8"
}
tasks.withType(Javadoc) { //设置文档编码
options {
encoding "UTF-8"
charSet 'UTF-8'
links "http://docs.oracle.com/javase/7/docs/api"
}
}
}
本篇内容到此结束,感谢收看~~
网友评论