這是一份詳細&清晰的 上傳Android Library到JCenter 教程:如何使得自己的程式碼被別人優雅引用
前言
- 在日常Android開發中,我們經常會通過遠端引用別人的程式碼(Android Library)來實現一些功能,如引用 網路請求庫 Okhttp
// 通過在Android Studio的build.gradle檔案中新增依賴 dependencies { compile 'com.squareup.okhttp:okhttp:2.4.0' }
- 那麼,該如何使得自己的程式碼(Android Library)被別人優雅的引用呢?
- 答:將程式碼上傳至到 JCenter ->> 別人再通過 JCenter引用

- 上傳 Android Library 到 JCenter有許多方法;其中,採用 Android Studio的 bintray-release外掛 上傳程式碼到 JCenter的步驟 & 配置簡單,可以使你快速、簡單的釋出開源專案


- 本文將手把手教你 採用 Android Studio的bintray-release外掛方法釋出開源專案(Android Library) 到 JCenter ,包學包會包快!
目錄

* 為什麼要上傳 Android Library 到 JCenter ?
方便 其他Android開發者 遠端使用你的程式碼Android Library
- 即,通過在Android Studio的build.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負責將開發者上傳的Library傳到JCenter中
2.Maven Central 則由sonatype.org維護
上傳Android Library 到JCenter 的原理圖

幫助理解:JCenter = 倉庫,Bintray = 送貨卡車,程式碼庫 = 貨物
本文主要講解如何通過bintray-release外掛快速上傳程式碼(Library)到 Jcenter
3. 具體如何上傳 Android Library 到 JCenter ?
- 整個過程分為2部分:準備工作 & 上傳

- 具體做法如下
3.1 準備工作

步驟1:註冊Bintray賬號
- 點選即直達註冊地址
注:
1.不要在官網註冊,因為官網註冊的是企業版,我們需要的是個人版
2.(建議)直接關聯 Github 賬號進行註冊 & 登入

步驟2:在Bintray上建立倉庫
具體如下圖

步驟3:在程式碼專案中建立Module資料夾
- 步驟如下

- 建立成功後,你會發現Module資料夾的結構和 原有的專案資料夾(app)非常類似
步驟4:將需要上傳的程式碼存放到Module檔案中
- 本文 以上傳一個 自定義View 為例子
- 該自定義View程式碼包括:1個類檔案 & 屬性檔案

步驟5:將整個專案上傳到 Github
關於如何上傳到Github,此處不作過多描述。
具體請看文章: 程式設計師必知:這是一份全面 & 詳細的 Git與Github 介紹指南

3.2 具體上傳

步驟1:配置bintray-release外掛
包括在Module & 專案 的Gradle檔案配置:
- 在該Module的Gradle檔案中配置

<-- 配置程式碼 --> // 配置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中
- 在AndroidStudio的 Terminal輸入以下命令
// 每行命令均用空格隔開,此處是為了展示才會分行 <-- 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
- 注:獲取API Key(需回到 Jcenter 網站)

- 操作示意圖

- 第1次上傳可能需要較長時間,請耐心等待(科學上網)。上傳成功提示如下:

- 注:執行可能出錯的問題
// 錯誤日誌:說明許可權有問題 bash: ./gradlew: Permission denied // 解決方案:獲得許可權,直接在終端輸入以下命令 chmod +x gradlew
- 至此,已經將專案上傳到 JCenter了,可進入檢視相關資訊

但此時還不能夠被外部直接被引用,請繼續往下看。
步驟3:新增到JCenter
- 請按照以下步驟真正新增該專案到JCenter

-
提交申請後,需要等待 管理員稽核通過(x小時),會以 站內私信
方式通知

- 至此,別人就可直接通過 新增你的依賴 來引用你的Android Library了!
- 即,如何將程式碼上傳到Jcenter講解完畢
3.3 額外注意:版本更新
當需要進行Android Library版本更新時,只需要以下2個步驟:
- 步驟1:在該Module的Gradle檔案中的配置2中 重新配置版本號
其他什麼都不要修改!!!

-
步驟2:重新執行上傳程式碼
在AndroidStudio的 Terminal輸入以下命令
// 每行命令均用空格隔開,此處是為了展示才會分行 <-- 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後,需要測試上傳的程式碼庫是否能正確被其他開發者正常引用
-
下面,我將詳細講解如何測試上傳到JCenter的程式碼開源庫
步驟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. 總結
-
看完本文後,相信你已經可以清晰 採用 bintray-release外掛方法釋出開源專案(Android Library) 到 JCenter了
-
下面我將繼續對Android中的其他知識進行深入講解 ,有興趣可以繼續關注Carson_Ho的安卓開發筆記
END
好了,寫到這裡也結束了,在文章最後放上一個小小的福利,以下為小編自己在學習過程中整理出的一個學習思路及方向,從事網際網路開發,最主要的是要學好技術,而學習技術是一條慢長而艱苦的道路,不能靠一時激情,也不是熬幾天幾夜就能學好的,必須養成平時努力學習的習慣,更加需要準確的學習方向達到有效的學習效果。
由於內容較多就只放上一個大概的大綱,需要更及詳細的學習思維導圖的加群Android IOC架構設計免費獲取。
群內還有免費的高階UI、效能優化、架構師課程、NDK、混合式開發(ReactNative+Weex)微信小程式、Flutter全方面的Android進階實踐技術資料,並且還有技術大牛一起討論交流解決問題。
點贊+加群免費獲取Android IOC架構設計

image