Android Library 發(fā)布開源庫 JCenter & JitPack 攻略

對于Android 的開源庫落蝙,一般通過 JCenter 或者 JitPack 發(fā)布開源朴读。兩種方式均可~

一魂莫、 上傳開源庫到 JCenter

1分别、準(zhǔn)備工作

步驟1:注冊Bintray賬號

  1. 盡量不要在官網(wǎng)注冊,因為官網(wǎng)注冊的是企業(yè)版男公,我們需要的是個人版
  2. 直接關(guān)聯(lián) Github賬號進行注冊 & 登錄(建議)

PS:如果Github賬戶使用了qq郵箱荤堪,163郵箱等可能會無法注冊,可以嘗試給Github賬戶 增加一個郵箱例如 Gmail

步驟2:在Bintray上建立倉庫

  1. 在個人中心點擊 Add New Repository
  2. Name 框填寫 倉庫名枢赔;Type 框 選擇 maven
  3. 點擊 Create澄阳,完成創(chuàng)建

步驟3:在代碼項目中創(chuàng)建Module文件夾

  • 步驟如下

    Android Studio中

    1. File --> New Module -> Android Library(注意主項目的Project名不要和Library相同,可能會沖突)
    2. 創(chuàng)建成功后踏拜,你會發(fā)現(xiàn)Module文件夾的結(jié)構(gòu)和 原有的項目文件夾(app)非常類似

步驟4:將需要上傳的代碼存放到Module文件中

  • 本文 以上傳一個 自定義View 為例子
  • 該自定義View代碼包括:1個類文件
    在這里插入圖片描述

步驟5:將整個項目上傳到 Github

image

2碎赢、配置與上傳

步驟1:配置 bintray-release 插件

  • Library ModuleGradle文件中配置
    在這里插入圖片描述
//Library  build.gradle
    
apply plugin: 'com.novoda.bintray-release' // 添加bintray插件


publish {
    userOrg = 'dmingou'             // Bintray用戶名
    repoName = 'AnimatedFloatingButton'          // Bintray上的新建的倉庫名(Repository)
    groupId = 'qg.odm'        // 依賴名 implemention 'x:y:z'中的包名x
    artifactId = 'AnimatedFloatingButton'        // 依賴名implemention 'x:y:z'中的項目名y
    publishVersion = '1.0.0'          // 依賴名implemention 'x:y:z'中的版本號z
    desc = 'XXXXXXXX'               // 對該開源組件的說明
    website = 'https://github.com/DMingOu/AnimatedFloatingButton'  // VCS地址
}

注意:盡量保持你的library module的名字同artifactId一樣

原因:Bintray上,你的項目的 maven-metadata.xml 文件的路徑 為 gruopId+"/"+module名稱速梗。

假設(shè)你的groupId=qg.odm肮塞,artifactId是AnimatedFloatingButton襟齿,但module名稱是AnimatedFloatingButtonLibrary。
此時枕赵,項目文件在qg.odm.animatedfloatingbuttondemo目錄下的猜欺,但maven-metadata.xml文件卻是在qg.odm/AnimatedFloatingButtonLibrary目錄下的,可能會有沖突拷窜。

沖突:若你有多個項目groupId一樣 & artifactId不一樣开皿,但module名稱都是library的話,maven-metadata.xml文件的地址可能會一樣篮昧,即都是:gruopId+"/"+module名稱赋荆,那么就可能產(chǎn)生沖突。

解決方案:保持module名稱和artifactId一致懊昨。

  • 在該項目的Gradle文件中配置
在這里插入圖片描述

使用插件前應(yīng)該看下最新版本 Bintray-release 的github地址

//Project  build.gradle
classpath 'com.novoda:bintray-release:0.9.2'

allprojects {
    tasks.withType(Javadoc) {
        options.addStringOption('Xdoclint:none', '-quiet')
        options.addStringOption('encoding', 'UTF-8')
    }
}
allprojects {
    tasks.withType(Javadoc) {
        options{
            encoding "UTF-8"
            charSet 'UTF-8'
            links "http://docs.oracle.com/javase/7/docs/api"
        }
    }
}

步驟2:上傳項目到JCenter中

  • AndroidStudioTerminal輸入以下命令
// 每行命令均用空格隔開糠睡,此處是為了展示才會分行

<-- Windows版本 -->
gradlew.bat clean build bintrayUpload 
 -PbintrayUser=UserName  // Bintray 用戶名
 -PbintrayKey=*********  // Bintray上的API key
 -PdryRun=false

<-- Mac版本 -->
./gradlew clean build bintrayUpload 
 -PbintrayUser=carson-ho 
 -PbintrayKey=***************************** 
 -PdryRun=false
//一行命令直接在Terminal執(zhí)行,例子如下
gradlew clean build bintrayUpload -PbintrayUser=dmingou -PbintrayKey=610e0e8f022cb3f353908e083932167bd0ff -PdryRun=false
在這里插入圖片描述
  • 上傳成功提示如下:
img
  • 注:一般來說不會一次成功,可能出錯的問題(坑)疚颊,詳情拉到末尾總結(jié)
  • 到這一步,你已經(jīng)將項目上傳到 JCenter了信认,可進入查看到 Package 已被添加進去
在這里插入圖片描述

步驟3:添加到JCenter

  • 請按照以下步驟真正添加該項目到JCenter
    1. 進入倉庫-->點擊對應(yīng)Package-->點擊右上方的 Actions --> 選擇 Add to JCenter
    2. 在彈出的對話框中添加 對提交內(nèi)容的備注材义,簡單描述即可
  • 提交申請后,需要等待 管理員審核通過(x小時)嫁赏,會以 站內(nèi)私信方式通知
在這里插入圖片描述
  • 收到官方的通知其掂,說明別人就可直接通過 添加你的依賴 來引用你的 Library 了!

3潦蝇、查看如何依賴

在對應(yīng)的 Package 頁點擊對應(yīng)的版本號款熬,在Maven Info中可以查看

在這里插入圖片描述

在這里插入圖片描述

4、版本更新

當(dāng)需要進行Android Library版本更新時攘乒,只需要以下2個步驟:

步驟1:在該Library ModuleGradle文件中的配置2中 重新配置版本號贤牛,其他的都不用更改!则酝!
在這里插入圖片描述
步驟2:重新執(zhí)行上傳代碼

AndroidStudioTerminal輸入以下命令

//一行命令直接在Terminal執(zhí)行,例子如下
gradlew clean build bintrayUpload -PbintrayUser=dmingou -PbintrayKey=610e0e8f022cb3f353908e083932167bd0ff -PdryRun=false

等待一定時間殉簸,就可以看到 Bintray網(wǎng)站上更新了Android Library的新版本。

5沽讹、上傳到 Bintray 時遇到的坑

MacOS可能出現(xiàn)的坑

// 錯誤日志:說明權(quán)限有問題
bash: ./gradlew: Permission denied

// 解決方案:獲得權(quán)限般卑,直接在終端輸入以下命令
chmod +x gradlew

坑:Could not publish XXXX HTTP/1.1 404 Not Found [message:Package 'XXXX' was not found]

研究一番,類似的錯誤還有 Not Found Repo ...網(wǎng)上回答清一色是說配置中寫錯了或者檢查下空格問題爽雄。然后我認(rèn)真檢查發(fā)現(xiàn)無錯后蝠检,我直接按原來的命令,再次執(zhí)行挚瘟,然后居然就 Build Successful 了叹谁,有點玄學(xué)

坑:Please fix the following before submitting a JCenter inclusion request:Add a POM file to the latest version of your package

bintray網(wǎng)站饲梭,Package上傳成功后,點擊“add to jcenter”按鈕時本慕,提示以上信息排拷。

  • 上傳到bintray的命令行
gradlew clean build bintrayUpload -PbintrayUser=BINTRAY_USERNAME -PbintrayKey=BINTRAY_KEY -PdryRun=false
  • 其實上面的命令行可以分解為2個task:
gradlew clean build
gradlew bintrayUpload.........
  • 點擊“add to jcenter”時提示的異常信息,意思是上傳的最新版本里面缺少了pom文件锅尘,而通過bintray-release插件上傳监氢,執(zhí)行命令時如果沒有生成,則需要我們手動生成
gradlew clean build bintrayUpload...

解決辦法就是手動執(zhí)行task藤违。那什么時候執(zhí)行浪腐?怎么執(zhí)行呢?

步驟1顿乒、什么時候執(zhí)行议街?

在gradlew clean build 和 gradlew bintrayUpload.. 兩個Task之間執(zhí)行;

步驟2璧榄、怎么執(zhí)行特漩?

首先在android studio 中打開gralde task視圖,先后右擊run運行下面的兩個Task即可骨杂;

在這里插入圖片描述

執(zhí)行完以后涂身,對應(yīng)module下的build目錄會生成對應(yīng)的pom文件

再按照如上操作,然后再去官網(wǎng)點擊“add to jcenter”按鈕即可順利進入申請界面

二搓蚪、發(fā)布開源庫到 JitPack

準(zhǔn)備工作

在Github上傳需要開源的項目蛤售,與 上傳JCenter步驟中的準(zhǔn)備工作對項目代碼的操作類似。

參照 上傳JCenter開源 的 準(zhǔn)備工作的 步驟3妒潭,步驟4悴能,步驟5

步驟一、在項目的build.gradle添加插件android-maven-gradle-plugin

classpath ‘com.github.dcendents:android-maven-gradle-plugin:2.1’

PS:jitpack的android-maven-gradle-plugin版本要和gradle版本對應(yīng)雳灾。具體的對應(yīng)呢漠酿?查看官方說明~~

如下圖:


在這里插入圖片描述

步驟二、配置library的build.gralde

在library的 build.gradle中添加代碼

// JitPack Maven
apply plugin: 'com.github.dcendents.android-maven'
// 其中username需要替換為你在github上的用戶名
group='com.github.username'

如下圖所示:


在這里插入圖片描述

修改后的部分要提交到github上去S优记靡!

步驟三、創(chuàng)建release版本

1团驱、打開項目的github主頁摸吠,創(chuàng)建一個Release或Tag
在這里插入圖片描述
2、填寫發(fā)布內(nèi)容
  1. 填寫你要發(fā)布的release代碼庫的版本(重要)
  2. 標(biāo)題名字嚎花,一般填寫開源庫的名字
  3. 本次release提交的描述
  4. 點擊 Publish relsease 按鈕
在這里插入圖片描述
3寸痢、發(fā)布成功后可查看到記錄
在這里插入圖片描述

步驟四、提交到 JitPack

1紊选、將Github項目的倉庫提交到 JitPack

綁定了賬戶后啼止,可以在左方的 Repositories欄挑選道逗;也可以在輸入框中填入 發(fā)布release的項目地址

Log欄是綠色,代表OK献烦,點擊 Get It 按鈕滓窍,版本提交完成后,JitPack會自動生成引用該library的配置信息:

在這里插入圖片描述
2巩那、在下方可以看到如何引用依賴你剛發(fā)布的代碼庫了
在這里插入圖片描述

在項目依次添加這兩處吏夯,就可以使用發(fā)布的代碼庫了

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市即横,隨后出現(xiàn)的幾起案子噪生,更是在濱河造成了極大的恐慌,老刑警劉巖东囚,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件跺嗽,死亡現(xiàn)場離奇詭異,居然都是意外死亡页藻,警方通過查閱死者的電腦和手機桨嫁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來份帐,“玉大人瞧甩,你說我怎么就攤上這事∶逐校” “怎么了?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵爷辙,是天一觀的道長彬坏。 經(jīng)常有香客問我,道長膝晾,這世上最難降的妖魔是什么栓始? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮血当,結(jié)果婚禮上幻赚,老公的妹妹穿的比我還像新娘。我一直安慰自己臊旭,他們只是感情好落恼,可當(dāng)我...
    茶點故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著离熏,像睡著了一般佳谦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上滋戳,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天钻蔑,我揣著相機與錄音啥刻,去河邊找鬼。 笑死咪笑,一個胖子當(dāng)著我的面吹牛可帽,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播窗怒,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼映跟,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了兜粘?” 一聲冷哼從身側(cè)響起申窘,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎孔轴,沒想到半個月后剃法,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡路鹰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年贷洲,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片晋柱。...
    茶點故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡优构,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出雁竞,到底是詐尸還是另有隱情钦椭,我是刑警寧澤,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布碑诉,位于F島的核電站彪腔,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏进栽。R本人自食惡果不足惜德挣,卻給世界環(huán)境...
    茶點故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望快毛。 院中可真熱鬧格嗅,春花似錦、人聲如沸唠帝。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽襟衰。三九已至懂扼,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背阀湿。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工赶熟, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人陷嘴。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓映砖,卻偏偏與公主長得像,于是被迫代替她去往敵國和親灾挨。 傳聞我的和親對象是個殘疾皇子邑退,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,452評論 2 348