如何使得自己的代碼被別人優(yōu)雅引用:快速上傳Android Library到JCenter超詳細教程

前言

  • 在日常Android開發(fā)中辜窑,我們經常會通過 遠程引用別人的代碼(Android Library來實現一些功能讹剔,如引用 網絡請求庫 Okhttp
// 通過在Android Studio的build.gradle文件中添加依賴
dependencies {
  compile 'com.squareup.okhttp:okhttp:2.4.0'
}
  • 那么头岔,該如何使得自己的代碼(Android Library)被別人優(yōu)雅的引用呢古戴?
  • 答:將代碼上傳至到 JCenter ->> 別人再通過 JCenter引用
示意圖
  • 上傳 Android LibraryJCenter有許多方法;其中摄悯,采用 Android Studiobintray-release插件上傳代碼到 JCenter步驟 & 配置簡單赞季,可以使你快速、簡單的發(fā)布開源項目
示意圖
示意圖
  • 本文將手把手教你 采用 Android Studiobintray-release插件方法發(fā)布開源項目(Android Library) 到 JCenter 奢驯,包學包會包快申钩!

目錄

示意圖

1. 為什么要上傳 Android Library 到 JCenter ?

  • 方便 其他Android開發(fā)者 遠程使用你的代碼Android Library
  • 即瘪阁,通過在Android Studiobuild.gradle文件中添加一句依賴即可撒遣。如下圖
dependencies {
  compile 'com.squareup.okhttp:okhttp:2.4.0'
}

2. 知識儲備

2.1 代碼引用的本質

jar 包 / aar包的引用

  1. 即別人引用你的代碼 = 引用你的jar 包 / aar
  2. 此處主要講解一下 aar文件
示意圖

2.2 代碼引用方式

對于 Android 代碼引用方式主要有2種方式:

  1. 對于eclipse: 下載包 --> 放入到 lib 文件目錄
  2. 對于Android Studio:在build.gradle文件中添加依賴。如下圖
dependencies {
  compile 'com.squareup.okhttp:okhttp:2.4.0'
}

// 當然管跺,Android Studio 也可以通過 下載包 --> 放入到 lib 文件目錄 的方式進行包的引用

2.3 Android Studio添加依賴(Library)原理

示意圖

2.4 JCenter 介紹

  • 定義:一種遠程的Android library文件服務器

Maven倉庫 = 中央遠程倉庫

  • 作用:存儲代碼 & 提供接口供外部調用內部代碼
  1. Bintray 公司維護义黎,Bintray負責將開發(fā)者上傳的Library傳到JCenter
  2. Maven Central 則由sonatype.org維護
  • 上傳Android LibraryJCenter 的原理圖
示意圖

幫助理解:JCenter = 倉庫,Bintray = 送貨卡車豁跑,代碼庫 = 貨物

本文主要講解如何通過bintray-release插件快速上傳代碼(Library)到 Jcenter


3. 具體如何上傳 Android Library 到 JCenter 廉涕?

  • 整個過程分為2部分:準備工作 & 上傳
示意圖
  • 具體做法如下

3.1 準備工作

示意圖

步驟1:注冊Bintray賬號

注:

  1. 不要在官網注冊,因為官網注冊的是企業(yè)版,我們需要的是個人版
  2. (建議)直接關聯 Github賬號進行注冊 & 登錄
示意圖

步驟2:在Bintray上建立倉庫

具體如下圖

示意圖

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

  • 步驟如下


    image.png
  • 創(chuàng)建成功后火的,你會發(fā)現Module文件夾的結構和 原有的項目文件夾(app)非常類似

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

  • 本文 以上傳一個 自定義View 為例子
  • 該自定義View代碼包括:1個類文件 & 屬性文件
示意圖

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

關于如何上傳到Github壶愤,此處不作過多描述。

具體請看文章:程序員必知:圖文清晰介紹Git與Github(含二者關系馏鹤、區(qū)別 & 使用場景)

示意圖

3.2 具體上傳

示意圖

步驟1:配置bintray-release插件

包括在Module & 項目 的Gradle文件配置:

  • 在該ModuleGradle文件中配置
示意圖
<-- 配置代碼 -->
// 配置1
apply plugin: 'com.novoda.bintray-release' // 添加bintray插件

// 配置2
publish {
    userOrg = 'carson-ho'             // Binary用戶名
    repoName = 'CircileView'          // Binary上的剛才新建的倉庫名(Repository)
    groupId = 'scut.carson_ho'        // 依賴名compile 'x:y:z'中的包名x
    artifactId = 'CircileView'        // 依賴名compile 'x:y:z'中的項目名y
    publishVersion = '1.0.0'          // 依賴名compile 'x:y:z'中的版本號z
    desc = 'a CircileView'            // 對該開源組件的說明
    website = 'https://github.com/Carson-Ho/DIY_View'  // VCS地址,即填寫項目上傳的Github地址
}

// 特別注意:保持你的library module的名字同artifactId一樣
// 1. 背景
    // 在Bintray上你的項目的maven-metadata.xml文件的路徑=gruopId+"/"+module名稱
    // 如你的groupId=scut.carson_ho娇哆,artifactId是CircileView湃累,但module名稱是circlelibrary
    // 此時,項目文件在scut.carson_ho.CircileView目錄下的碍讨,但maven-metadata.xml文件卻是在scut.carson_ho.circlelibrary目錄下的治力。
// 2. 沖突:若你有多個項目groupId一樣 & artifactId不一樣,但module名稱都是library的話勃黍,maven-metadata.xml文件的地址可能會一樣宵统,即都是:gruopId+"/"+module名稱,那么就可能產生沖突
// 3. 解決方案:保持module名稱和artifactId一致
  • 在該項目的Gradle文件中配置
示意圖
<-- 配置代碼 -->
// 配置1
classpath 'com.novoda:bintray-release:0.3.4'

// 配置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=carson-ho  // Binary用戶名
-PbintrayKey=************* // Binary上的API key马澈,具體獲取見下說明
-PdryRun=false

<-- Mac版本 -->
./gradlew clean build bintrayUpload 
-PbintrayUser=carson-ho 
-PbintrayKey=***************************** 
-PdryRun=false
示意圖
  • 操作示意圖
示意圖
  • 第1次上傳可能需要較長時間,請耐心等待(科學上網)弄息。上傳成功提示如下:
示意圖
  • 注:執(zhí)行可能出錯的問題
// 錯誤日志:說明權限有問題
bash: ./gradlew: Permission denied

// 解決方案:獲得權限痊班,直接在終端輸入以下命令
chmod +x gradlew
  • 至此,已經將項目上傳到 JCenter了摹量,可進入查看相關信息
示意圖

但此時還不能夠被外部直接被引用涤伐,請繼續(xù)往下看。

步驟3:添加到JCenter

  • 請按照以下步驟真正添加該項目到JCenter

    示意圖

  • 提交申請后缨称,需要等待 管理員審核通過(x小時)凝果,會以 站內私信
    方式通知

示意圖
  • 至此,別人就可直接通過 添加你的依賴 來引用你的Android Library了睦尽!
  • 即器净,如何將代碼上傳到Jcenter講解完畢

3.3 額外注意:版本更新

當需要進行Android Library版本更新時,只需要以下2個步驟:

  • 步驟1:在該ModuleGradle文件中的配置2中 重新配置版本號

其他什么都不要修改B钌尽U贫!

示意圖
  • 步驟2:重新執(zhí)行上傳代碼
    AndroidStudioTerminal輸入以下命令
// 每行命令均用空格隔開宁玫,此處是為了展示才會分行

<-- Windows版本 -->
gradlew.bat clean build bintrayUpload 
-PbintrayUser=carson-ho  // Binary用戶名
-PbintrayKey=************* // Binary上的API key粗恢,具體獲取見下說明
-PdryRun=false

<-- Mac版本 -->
./gradlew clean build bintrayUpload 
-PbintrayUser=carson-ho 
-PbintrayKey=***************************** 
-PdryRun=false
  • 等待一定時間,就可以看到 Binary網站上更新了Android Library的新版本欧瘪。

至此眷射,關于 將自己代碼上傳到 JCenter 的步驟 已經講解完畢。


4. 測試

  • 在講解如何上傳代碼到JCenter后,需要測試上傳的代碼庫是否能正確被其他開發(fā)者正常引用
  • 下面妖碉,我將詳細講解如何測試上傳到JCenter的代碼開源庫

手把手教你寫一個完整的自定義View為例進行講解

步驟1:查看依賴

示意圖
// Maven
<dependency>
  <groupId>scut.carson_ho</groupId>
  <artifactId>CircileView</artifactId>
  <version>1.0.0</version>
  <type>pom</type>
</dependency>

// Gradle
compile 'scut.carson_ho:CircileView:1.0.0'

步驟2:添加依賴(Gradle)

此處僅展示通過Gradle 添加依賴涌庭。

build.Gradle

dependencies {
    compile 'scut.carson_ho:CircileView:1.0.0'
}

步驟3:在XML文件中添加控件 & 添加屬性

<scut.carson_ho.circlelibrary.libraryCircle
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#000000"
        android:padding="30dp"
        app:circle_color="#FF4081"
         />

運行效果

示意圖

5. 總結


請點贊坐榆!因為你的鼓勵是我寫作的最大動力!

相關文章閱讀
Android開發(fā):最全面冗茸、最易懂的Android屏幕適配解決方案
Android事件分發(fā)機制詳解:史上最全面席镀、最易懂
Android開發(fā):史上最全的Android消息推送解決方案
Android開發(fā):最全面、最易懂的Webview詳解
Android開發(fā):JSON簡介及最全面解析方法!
Android四大組件:Service服務史上最全面解析
Android四大組件:BroadcastReceiver史上最全面解析


歡迎關注Carson_Ho的簡書夏漱!

不定期分享關于安卓開發(fā)的干貨豪诲,追求短、平挂绰、快屎篱,但卻不缺深度

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末葵蒂,一起剝皮案震驚了整個濱河市交播,隨后出現的幾起案子,更是在濱河造成了極大的恐慌刹勃,老刑警劉巖堪侯,帶你破解...
    沈念sama閱讀 206,013評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異荔仁,居然都是意外死亡伍宦,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 88,205評論 2 382
  • 文/潘曉璐 我一進店門乏梁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來次洼,“玉大人,你說我怎么就攤上這事遇骑÷艋伲” “怎么了?”我有些...
    開封第一講書人閱讀 152,370評論 0 342
  • 文/不壞的土叔 我叫張陵落萎,是天一觀的道長亥啦。 經常有香客問我,道長练链,這世上最難降的妖魔是什么翔脱? 我笑而不...
    開封第一講書人閱讀 55,168評論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮媒鼓,結果婚禮上届吁,老公的妹妹穿的比我還像新娘错妖。我一直安慰自己,他們只是感情好疚沐,可當我...
    茶點故事閱讀 64,153評論 5 371
  • 文/花漫 我一把揭開白布暂氯。 她就那樣靜靜地躺著,像睡著了一般亮蛔。 火紅的嫁衣襯著肌膚如雪痴施。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,954評論 1 283
  • 那天尔邓,我揣著相機與錄音晾剖,去河邊找鬼。 笑死梯嗽,一個胖子當著我的面吹牛,可吹牛的內容都是我干的沽损。 我是一名探鬼主播灯节,決...
    沈念sama閱讀 38,271評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼绵估!你這毒婦竟也來了炎疆?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 36,916評論 0 259
  • 序言:老撾萬榮一對情侶失蹤国裳,失蹤者是張志新(化名)和其女友劉穎形入,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體缝左,經...
    沈念sama閱讀 43,382評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡亿遂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,877評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了渺杉。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蛇数。...
    茶點故事閱讀 37,989評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖是越,靈堂內的尸體忽然破棺而出耳舅,到底是詐尸還是另有隱情,我是刑警寧澤倚评,帶...
    沈念sama閱讀 33,624評論 4 322
  • 正文 年R本政府宣布浦徊,位于F島的核電站,受9級特大地震影響天梧,放射性物質發(fā)生泄漏盔性。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,209評論 3 307
  • 文/蒙蒙 一腿倚、第九天 我趴在偏房一處隱蔽的房頂上張望纯出。 院中可真熱鬧蚯妇,春花似錦、人聲如沸暂筝。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,199評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽焕襟。三九已至陨收,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間鸵赖,已是汗流浹背务漩。 一陣腳步聲響...
    開封第一講書人閱讀 31,418評論 1 260
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留它褪,地道東北人饵骨。 一個月前我還...
    沈念sama閱讀 45,401評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像茫打,于是被迫代替她去往敵國和親居触。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,700評論 2 345

推薦閱讀更多精彩內容