上傳AndroidLibrary到JCenter :如何使自己的代碼被別人優雅引用

前言

  • 在日常Android開發中,我們經常會通過遠程引用別人的代碼(Android Library)來實現一些功能,如引用 網絡請求庫 Okhttp
// 通過在Android Studio的build.gradle文件中添加依賴
dependencies {
compile 'com.squareup.okhttp:okhttp:2.4.0'
}
  • 那麼,該如何使得自己的代碼(Android Library)被別人優雅的引用呢?
  • 答:將代碼上傳至到 JCenter ->> 別人再通過 JCenter引用
上傳AndroidLibrary到JCenter :如何使自己的代碼被別人優雅引用

上傳 Android Library 到 JCenter有許多方法;其中,採用 Android Studio的bintray-release插件上傳代碼到 JCenter的步驟 & 配置簡單,可以使你快速、簡單的發佈開源項目

上傳AndroidLibrary到JCenter :如何使自己的代碼被別人優雅引用


上傳AndroidLibrary到JCenter :如何使自己的代碼被別人優雅引用


  • 本文將手把手教你 採用 Android Studio的bintray-release插件方法發佈開源項目(Android Library) 到 JCenter ,包學包會包快!

目錄

上傳AndroidLibrary到JCenter :如何使自己的代碼被別人優雅引用

1.為什麼要上傳 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文件

上傳AndroidLibrary到JCenter :如何使自己的代碼被別人優雅引用

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)原理

上傳AndroidLibrary到JCenter :如何使自己的代碼被別人優雅引用

2.4 JCenter 介紹

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

Maven倉庫 = 中央遠程倉庫

  • 作用:存儲代碼 & 提供接口供外部調用內部代碼

1.由 Bintray 公司維護,Bintray負責將開發者上傳的Library傳到JCenter中

2.Maven Central 則由sonatype.org維護

上傳Android Library 到JCenter 的原理圖


上傳AndroidLibrary到JCenter :如何使自己的代碼被別人優雅引用

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

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

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

  • 整個過程分為2部分:準備工作 & 上傳
上傳AndroidLibrary到JCenter :如何使自己的代碼被別人優雅引用

具體做法如下

3.1 準備工作

上傳AndroidLibrary到JCenter :如何使自己的代碼被別人優雅引用

步驟1:註冊Bintray賬號

  • 點擊即直達 註冊地址

注:

1.不要在官網註冊,因為官網註冊的是企業版,我們需要的是個人版

2.(建議)直接關聯Github賬號進行註冊 & 登錄

上傳AndroidLibrary到JCenter :如何使自己的代碼被別人優雅引用

步驟2:在Bintray上建立倉庫

具體如下圖

上傳AndroidLibrary到JCenter :如何使自己的代碼被別人優雅引用

步驟3:在代碼項目中創建Module文件夾

  • 步驟如下
上傳AndroidLibrary到JCenter :如何使自己的代碼被別人優雅引用

創建成功後,你會發現Module文件夾的結構和 原有的項目文件夾(app)非常類似

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

  • 本文 以上傳一個 自定義View 為例子
  • 該自定義View代碼包括:1個類文件 & 屬性文件
上傳AndroidLibrary到JCenter :如何使自己的代碼被別人優雅引用

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

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

具體請看文章:程序員必知:這是一份全面 & 詳細的 Git與Github 介紹指南

上傳AndroidLibrary到JCenter :如何使自己的代碼被別人優雅引用

3.2 具體上傳

上傳AndroidLibrary到JCenter :如何使自己的代碼被別人優雅引用


步驟1:配置bintray-release插件

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

  • 在該Module的Gradle文件中配置


上傳AndroidLibrary到JCenter :如何使自己的代碼被別人優雅引用


// 配置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文件中配置
上傳AndroidLibrary到JCenter :如何使自己的代碼被別人優雅引用


// 配置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輸入以下命令
// 每行命令均用空格隔開,此處是為了展示才會分行

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

./gradlew clean build bintrayUpload
-PbintrayUser=carson-ho
-PbintrayKey=*****************************
-PdryRun=false
  • 注:獲取API Key(需回到 Jcenter 網站)
上傳AndroidLibrary到JCenter :如何使自己的代碼被別人優雅引用

操作示意圖

上傳AndroidLibrary到JCenter :如何使自己的代碼被別人優雅引用


  • 第1次上傳可能需要較長時間,請耐心等待(科學上網)。上傳成功提示如下:
上傳AndroidLibrary到JCenter :如何使自己的代碼被別人優雅引用

注:執行可能出錯的問題

// 錯誤日誌:說明權限有問題
bash: ./gradlew: Permission denied
// 解決方案:獲得權限,直接在終端輸入以下命令

chmod +x gradlew
  • 至此,已經將項目上傳到 JCenter了,可進入查看相關信息
上傳AndroidLibrary到JCenter :如何使自己的代碼被別人優雅引用

但此時還不能夠被外部直接被引用,請繼續往下看。

步驟3:添加到JCenter

  • 請按照以下步驟真正添加該項目到JCenter
上傳AndroidLibrary到JCenter :如何使自己的代碼被別人優雅引用


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


上傳AndroidLibrary到JCenter :如何使自己的代碼被別人優雅引用


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

3.3 額外注意:版本更新

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

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

其他什麼都不要修改!!!

上傳AndroidLibrary到JCenter :如何使自己的代碼被別人優雅引用


  • 步驟2:重新執行上傳代碼
  • 在AndroidStudio的 Terminal輸入以下命令
// 每行命令均用空格隔開,此處是為了展示才會分行

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

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

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

4. 測試

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

步驟1:查看依賴

上傳AndroidLibrary到JCenter :如何使自己的代碼被別人優雅引用

// 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> android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#000000"
android:padding="30dp"
app:circle_color="#FF4081"
/>
/<scut.carson>

運行效果

上傳AndroidLibrary到JCenter :如何使自己的代碼被別人優雅引用

5. 總結

  • 看完本文後,相信你已經可以清晰 採用 bintray-release插件方法發佈開源項目(Android Library) 到 JCenter了
  • 下面我將繼續對Android中的其他知識進行深入講解 ,有興趣可以繼續關注Carson_Ho的安卓開發筆記

END

好了,寫到這裡也結束了,在文章最後放上一個小小的福利,以下為小編自己在學習過程中整理出的一個學習思路及方向,從事互聯網開發,最主要的是要學好技術,而學習技術是一條慢長而艱苦的道路,不能靠一時激情,也不是熬幾天幾夜就能學好的,必須養成平時努力學習的習慣,更加需要準確的學習方向達到有效的學習效果。

由於內容較多就只放上一個大概的大綱,需要更及詳細的學習思維導圖的私信我免費獲取。

關注+私信回覆“安卓資料”免費獲取!

領取獲取往期Android高級架構資料、源碼、筆記、視頻。高級UI、性能優化、架構師課程、NDK、混合式開發(ReactNative+Weex)微信小程序、Flutter全方面的Android進階實踐技術。

上傳AndroidLibrary到JCenter :如何使自己的代碼被別人優雅引用



分享到:


相關文章: