前言
作為一個(gè)有了一定開發(fā)經(jīng)驗(yàn)的程序員,你一定或多或少封裝了一些庫,用以應(yīng)付一些日常的通用功能,如果每次都拷貝這些代碼,或者從Git上clone下來,未免過于麻煩,且不優(yōu)雅。如果能夠像我們平時(shí)使用的一些開源庫一樣,直接api/implementation 'xxx:xxx:xxx',那就方便了,比如像這樣
implementation 'com.android.support:appcompat-v7:28.0.0'
這種形式的庫引入,你一定不陌生,本篇文章,將說明使用bintray-release(順便說一下,有其他的插件也可以發(fā)布,不過這個(gè)應(yīng)該是最方便的了)來發(fā)布你的代碼到JCenter
其實(shí)關(guān)于這個(gè)內(nèi)容的帖子有很多,一搜一大把,不過由于AS版本、Gradle版本、bintray-release版本的不同,以及bintray網(wǎng)站自己的更新,導(dǎo)致帖子里面的流程和需要填寫的參數(shù)等,都無法完美匹配現(xiàn)在的要求。
本篇文章,將結(jié)合網(wǎng)上的資料和我自己的探索,給出一個(gè)現(xiàn)階段可用的發(fā)布流程
本篇文章寫于2019/08/20,如果你看到它時(shí),已經(jīng)過了很久,請(qǐng)找更加新的流程攻略做參考
內(nèi)容提要
本篇文章是使用bintray-release,在AndroidStudio里上傳自己代碼到JCenter的流程攻略
注冊(cè)bintray賬號(hào)
到bintray注冊(cè)一個(gè)賬號(hào),請(qǐng)注意,這里迎來第一個(gè)坑點(diǎn),不要看到那一坨顯眼的原諒色按鈕,就著急著點(diǎn)進(jìn)去,我們要發(fā)布的是開源庫,所以請(qǐng)點(diǎn)擊For an Open Source Account

下一步?jīng)]啥好說,自己填該填的資料注冊(cè),你也可以通過Github/Google/Twitter賬號(hào)登陸(程序員沒哪個(gè)沒有Github賬號(hào)的吧。。。),我是使用Github直接登陸的
你的主頁
如果你看過其他攻略,這時(shí)候應(yīng)該要開始教你“夸夸夸”的建組織建倉庫了,這里我們先不急,我們先認(rèn)識(shí)一下自己的主頁,長這樣

如果一進(jìn)來不是這樣的,在一號(hào)區(qū)域(這個(gè)是一定有的)點(diǎn)擊View Profile就能進(jìn)來了
一號(hào)區(qū)域
進(jìn)入主頁、編輯賬號(hào)(設(shè)置)、管理你的組織都在這里
二號(hào)區(qū)域
倉庫區(qū),你的代碼,就可以上傳到你在這里創(chuàng)建的倉庫。這里需要注意
- 1.這里不是唯一可以存放代碼的地方
- 2.我看到有帖子說,如果創(chuàng)建倉庫時(shí),倉庫類型選擇Maven,倉庫名稱也必須叫做maven(你可以看到我為了測(cè)試,也創(chuàng)建了一個(gè)這樣的倉庫),但是實(shí)際上不需要,你愛叫什么名字,就叫什么名字(當(dāng)然這個(gè)會(huì)不會(huì)是因?yàn)槟俏徊┲髟诋?dāng)時(shí)試的時(shí)候,確實(shí)就是那樣的,也未可知)
三號(hào)區(qū)域
組織區(qū),你可以在這里創(chuàng)建你的組織,然后進(jìn)入創(chuàng)建好的組織里面,可以在里面去創(chuàng)建代碼庫(這就是為什么前面說二號(hào)區(qū)域不是唯一可以存放代碼的地方)
創(chuàng)建代碼庫
創(chuàng)建組織
如果你的庫需要多人協(xié)作完成,希望其他人也能進(jìn)行代碼的發(fā)布,那么你需要在一個(gè)組織下去創(chuàng)建倉庫,如果你是一個(gè)人玩,那不用看這段
點(diǎn)擊下圖這個(gè)按鈕,開始創(chuàng)建組織

-
創(chuàng)建組織
直接創(chuàng)建一個(gè)新組織,選這個(gè)

填資料,分別是
組織ID(必填) 組織名稱(必填) 地區(qū) 網(wǎng)站地址 推特
創(chuàng)建好了,長這樣。你可以看到,同樣有Add New Repository,可以創(chuàng)建代碼庫

-
從Github導(dǎo)入組織
如果想從Github導(dǎo)入組織,你必須先在你的Github創(chuàng)建組織,這里也大致放一下流程圖

按照上圖進(jìn)入創(chuàng)建,然后按照后面的流程指導(dǎo)走就行了,很簡單。創(chuàng)建完成之后,需要開放該組織的授權(quán)


搞定之后,回到bintray的組織創(chuàng)建頁面,點(diǎn)擊下圖的按鈕

然后選擇已有并已授權(quán)的組織,后面的步驟相信大家都能輕易完成,不贅述

創(chuàng)建代碼庫
這里首先需要再次提醒,如果你的代碼庫不是只有你一個(gè)人玩,請(qǐng)在創(chuàng)建/導(dǎo)入好的組織里面創(chuàng)建代碼庫,這樣你才能邀請(qǐng)小伙伴來一起玩耍
同樣的,先展示入口

填寫代碼庫的具體信息,詳情如圖

點(diǎn)擊Create,就完成創(chuàng)建了
至此,發(fā)布代碼庫在bintray部分的準(zhǔn)備工作就完成了,攻略完成 1/3
備注:bintray打開會(huì)比較慢,如果能科學(xué)上網(wǎng),應(yīng)該會(huì)好很多
工程配置
工程Gradle文件配置
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.6.0-alpha02'
classpath 'com.novoda:bintray-release:0.9.1'
}
}
最新的bintray-release插件版本請(qǐng)看這里
代碼庫所在module的Gradle文件配置
apply plugin: 'com.novoda.bintray-release'
//推送到Bintray配置
publish {
repoName = 'CodeRep'
userOrg = "orgnamelll"
groupId = "com.bingor"
artifactId = 'hahalib2'
publishVersion = "1.0.0" //版本號(hào)
desc = "a simple utils tool" //描述,選填
website = "https://github.com/x78wteam/X78WRouter/tree/master/TestApp"
}
這里有些地方是需要注意的
- 1.repoName就是你創(chuàng)建倉庫的時(shí)候填的那個(gè)倉庫名
- 2.userOrg:如果你在組織里面去創(chuàng)建倉庫,那么這里需要填寫組織ID(ID如下圖);如果不在組織內(nèi),填你的bintray用戶名(用戶名如下圖)


- 3.最終的訪問路徑,是
groupId : artifactId : publishVersion,所以你應(yīng)該懂它們的各自含義了 - 4.關(guān)于artifactId,有帖子說必須和module名稱一致,我特意測(cè)試了一下,不一樣也是可以的
- 5.website這里,需要填寫你這個(gè)庫對(duì)應(yīng)工程的頁面地址。比如像我這里,我的Git項(xiàng)目下,有多個(gè)工程(這個(gè)TestApp是其中一個(gè)),那我填寫的,就是TestApp工程的頁面地址,而非整個(gè)Git項(xiàng)目的主頁地址。我試過填寫整個(gè)Git項(xiàng)目的主頁地址,這樣的話,后面“Add to JCenter”就會(huì)都發(fā)郵件告訴你請(qǐng)?zhí)顚懹行У腣CS地址(please provide a valid balabala...具體不記得了)
上傳代碼到bintray
在你的AS下方標(biāo)簽中,找到Terminal,輸入下方指令,用戶名和API密鑰分別如下圖
gradlew clean build bintrayUpload -PbintrayUser=你的用戶名 -PbintrayKey=你的Api密匙 -PdryRun=false


至此,發(fā)布代碼庫在本地工程部分的準(zhǔn)備工作就完成了,攻略完成 2/3
代碼庫發(fā)布
發(fā)布
找到你剛才上傳的代碼庫(有組織去組織里面找,沒組織在個(gè)人主頁找),點(diǎn)進(jìn)去看詳情,有“Add to JCenter”按鈕,點(diǎn)擊進(jìn)入,然后什么也不用填,直接點(diǎn)擊“Create”還是“Commit”(忘了截圖了。。。),就可以了。
首次發(fā)布,需要等待幾個(gè)小時(shí),然后會(huì)發(fā)一封郵件告訴你,發(fā)布成功/失敗,失敗的話,會(huì)告訴你原因


附上之前VCS地址填錯(cuò)時(shí)候,收到的郵件內(nèi)容

審核通過后,就可以引用這個(gè)庫了,在代碼庫詳情頁可以看見引用地址,

implementation 'com.bingor:hahalib2:1.0.2'
更新
代碼庫總會(huì)需要上新版本,怎么更新呢?很簡單,之前的配置里面,改動(dòng)版本號(hào),重新上傳即可
publish {
...
publishVersion = "1.0.2" //改動(dòng)這里即可
...
}
然后在Terminal再執(zhí)行一次
gradlew clean build bintrayUpload -PbintrayUser=你的用戶名 -PbintrayKey=你的Api密匙 -PdryRun=false
至此,發(fā)布代碼庫到JCenter完成,祝你也能順利成功~
遇到的坑
GBK編碼錯(cuò)誤
如果在上傳的時(shí)候,遇到這個(gè)錯(cuò)誤

打開工程的build.gradle,輸入這個(gè)
allprojects {
...
tasks.withType(JavaCompile) { //設(shè)置全局編碼
options.encoding = "UTF-8"
}
tasks.withType(Javadoc) { //設(shè)置文檔編碼
options {
encoding "UTF-8"
charSet 'UTF-8'
links "http://docs.oracle.com/javase/7/docs/api"
}
}
}
本篇內(nèi)容到此結(jié)束,感謝收看~~