Android Studio使用gradle上傳aar庫(kù)到 jcenter

上一篇簡(jiǎn)單介紹了Maven倉(cāng)庫(kù),里面提到了上傳構(gòu)件到j(luò)center比maven central簡(jiǎn)單一些,但是實(shí)際上操作下來(lái),還是有一些坑的,主要是gradle不斷升級(jí)和jcenter的改版,網(wǎng)上看到的教程跟目前的實(shí)際環(huán)境往往不一致。寫(xiě)這篇文章時(shí)我從零創(chuàng)建了一個(gè)demo項(xiàng)目并且成功發(fā)布到j(luò)center,demo項(xiàng)目也上傳到了github (https://github.com/dfqin/jcenterDemo)。

1. JFrog Bintray 賬號(hào)注冊(cè)

打開(kāi)JFrog Bintray 首頁(yè),點(diǎn)擊右邊紅色箭頭標(biāo)識(shí)的入口注冊(cè),不要點(diǎn)擊左邊的按鈕,左邊的按鈕是30天免費(fèi)試用,只能把庫(kù)傳到bintray,不能發(fā)布到j(luò)center,很多人這里被坑了。

首頁(yè)

后面注冊(cè)沒(méi)什么特殊的,也可以直接選擇第三方登錄,我是直接選擇的使用github登錄的。登錄后點(diǎn)擊“Add New Repository”創(chuàng)建一個(gè)新的倉(cāng)庫(kù),name這里寫(xiě)maven,理論上這里可以任意命名的,但是如果使用bintray-release插件上傳,插件里面寫(xiě)死了倉(cāng)庫(kù)名為maven,就會(huì)因?yàn)檎也坏絺}(cāng)庫(kù)名報(bào)錯(cuò),很多人這里被坑到了,用其他方式上傳就無(wú)所謂了。

新建倉(cāng)庫(kù)

下面我們找到自己用戶名,點(diǎn)擊小箭頭會(huì)展開(kāi)一個(gè)菜單,在里面選擇Edit Profile,然后在新的頁(yè)面找到API Key,后面我們上傳庫(kù)時(shí)需要使用這個(gè)值。


image.png

2. 上傳庫(kù)到倉(cāng)庫(kù)

上傳倉(cāng)庫(kù)有多種方式,最出名的是bintray-release插件和gradle-bintray-plugin插件,第一個(gè)比較簡(jiǎn)潔,只需要配置幾行腳本就好了,這里我采用的是第一種。網(wǎng)上例子很多采用的是第二種,需要配置很多腳本,之前我參考這篇文章使用過(guò)第二種的方法。
首先我們要有一個(gè)Android項(xiàng)目,這里我創(chuàng)建了一個(gè)demo項(xiàng)目上傳到github了。項(xiàng)目有一個(gè)library Module表示用來(lái)發(fā)布的庫(kù),還有一個(gè)application 主Module用來(lái)運(yùn)行和調(diào)試自己的library。在我們項(xiàng)目的根build.gradle里的dependencies中添加如下代碼引入插件。

classpath 'com.novoda:bintray-release:0.5.0'

然后在library Module的build.gradle中添加

publish {
    userOrg = 'dfqin2' // bintray 上注冊(cè)的用戶名
    groupId = 'com.dfqin.logutil' // 包名
    artifactId = 'mylog' // library名
    publishVersion = '1.0.0' // 版本號(hào)
    desc = 'just for demo'
    website = 'https://github.com/dfqin/jcenterDemo'
}

只需要這幾行配置就完成了,是不是很簡(jiǎn)潔?下面我們運(yùn)行如下命令讓項(xiàng)目編譯并上傳的倉(cāng)庫(kù):

./gradlew clean build bintrayUpload -PbintrayUser=dfqin2 -PbintrayKey=you-api-key -PdryRun=false

其中dfqin2替換成自己前面在JFrog Bintray上注冊(cè)的用戶名,you-api-key使用上面的API Key替換。腳本執(zhí)行完畢如果顯示成功的話,就可以去網(wǎng)站上查看自己的庫(kù)了。我遇到過(guò)兩中報(bào)錯(cuò),第一種是

Unable to load class 'org.gradle.api.internal.component.Usage'

后面排查是由于項(xiàng)目gradle使用的是3.0的版本,bintray-release的版本號(hào)太低不兼容3.0的gradle,我把bintray-release版本號(hào)提升就解決了。
第二個(gè)錯(cuò)誤是:

HTTP/1.1 404 Not Found [message:Repo 'maven' was not found]

這個(gè)就是我前面提到的,倉(cāng)庫(kù)名必須為maven的原因,我的配置它默認(rèn)會(huì)往dfqin2/maven/mylog上面推送,我開(kāi)始創(chuàng)建的倉(cāng)庫(kù)名為mylog,路徑為dfqin2/mylog/,所以腳本報(bào)錯(cuò)找不到maven。

3. 發(fā)布

這時(shí)候在JFrog Bintray網(wǎng)站上刷新,就可以看到自己上傳的庫(kù),點(diǎn)開(kāi)后在詳情頁(yè)面找到Add to JCenter按鈕,點(diǎn)擊后在新頁(yè)面填寫(xiě)一下描述后發(fā)布,過(guò)一兩天后審核通過(guò)就發(fā)布完成。


上傳成功

image.png

4. 同步到maven central

在自己的庫(kù)詳情頁(yè)面,點(diǎn)擊Maven Central,在彈窗里面點(diǎn)擊"Click here to get it included"即可。


image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容