前言
- 在日常
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 Library
到JCenter
有許多方法;其中摄悯,采用Android Studio
的bintray-release
插件上傳代碼到JCenter
的步驟 & 配置簡單赞季,可以使你快速、簡單的發(fā)布開源項目
- 本文將手把手教你 采用
Android Studio
的bintray-release
插件方法發(fā)布開源項目(Android Library
) 到JCenter
奢驯,包學包會包快申钩!
目錄
1. 為什么要上傳 Android Library 到 JCenter ?
- 方便 其他
Android
開發(fā)者 遠程使用你的代碼Android Library
- 即瘪阁,通過在
Android Studio
的build.gradle
文件中添加一句依賴即可撒遣。如下圖
dependencies {
compile 'com.squareup.okhttp:okhttp:2.4.0'
}
2. 知識儲備
2.1 代碼引用的本質
對 jar
包 / aar
包的引用
- 即別人引用你的代碼 = 引用你的
jar
包 /aar
包- 此處主要講解一下
aar
文件
2.2 代碼引用方式
對于 Android
代碼引用方式主要有2種方式:
- 對于
eclipse
: 下載包 --> 放入到lib
文件目錄 - 對于
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
倉庫 = 中央遠程倉庫
- 作用:存儲代碼 & 提供接口供外部調用內部代碼
- 由
Bintray
公司維護义黎,Bintray
負責將開發(fā)者上傳的Library
傳到JCenter
中Maven Central
則由sonatype.org
維護
- 上傳
Android Library
到JCenter
的原理圖
幫助理解:
JCenter
= 倉庫,Bintray
= 送貨卡車豁跑,代碼庫 = 貨物
本文主要講解如何通過bintray-release
插件快速上傳代碼(Library
)到 Jcenter
3. 具體如何上傳 Android Library 到 JCenter 廉涕?
- 整個過程分為2部分:準備工作 & 上傳
- 具體做法如下
3.1 準備工作
步驟1:注冊Bintray賬號
- 點擊即直達 注冊地址
注:
- 不要在官網注冊,因為官網注冊的是企業(yè)版,我們需要的是個人版
- (建議)直接關聯
Github
賬號進行注冊 & 登錄
步驟2:在Bintray上建立倉庫
具體如下圖
步驟3:在代碼項目中創(chuàng)建Module
文件夾
-
步驟如下
創(chuàng)建成功后火的,你會發(fā)現
Module
文件夾的結構和 原有的項目文件夾(app
)非常類似
步驟4:將需要上傳的代碼存放到Module文件中
- 本文 以上傳一個 自定義
View
為例子 - 該自定義
View
代碼包括:1個類文件 & 屬性文件
步驟5:將整個項目上傳到 Github
關于如何上傳到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次上傳可能需要較長時間,請耐心等待(科學上網)弄息。上傳成功提示如下:
- 注:執(zhí)行可能出錯的問題
// 錯誤日志:說明權限有問題
bash: ./gradlew: Permission denied
// 解決方案:獲得權限痊班,直接在終端輸入以下命令
chmod +x gradlew
- 至此,已經將項目上傳到
JCenter
了摹量,可進入查看相關信息
但此時還不能夠被外部直接被引用涤伐,請繼續(xù)往下看。
步驟3:添加到JCenter
-
請按照以下步驟真正添加該項目到
JCenter
提交申請后缨称,需要等待 管理員審核通過(x小時)凝果,會以 站內私信
方式通知
- 至此,別人就可直接通過 添加你的依賴 來引用你的
Android Library
了睦尽! - 即器净,如何將代碼上傳到
Jcenter
講解完畢
3.3 額外注意:版本更新
當需要進行Android Library
版本更新時,只需要以下2個步驟:
- 步驟1:在該
Module
的Gradle
文件中的配置2中 重新配置版本號
其他什么都不要修改B钌尽U贫!
- 步驟2:重新執(zhí)行上傳代碼
在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
后,需要測試上傳的代碼庫是否能正確被其他開發(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. 總結
看完本文后,相信你已經可以清晰 采用
bintray-release
插件方法發(fā)布開源項目(Android Library
) 到JCenter
了下面我將繼續(xù)對
Android
中的其他知識進行深入講解 欧宜,感興趣的同學可以繼續(xù)關注本人運營的Wechat Public Account
:
請點贊坐榆!因為你的鼓勵是我寫作的最大動力!
相關文章閱讀
Android開發(fā):最全面冗茸、最易懂的Android屏幕適配解決方案
Android事件分發(fā)機制詳解:史上最全面席镀、最易懂
Android開發(fā):史上最全的Android消息推送解決方案
Android開發(fā):最全面、最易懂的Webview詳解
Android開發(fā):JSON簡介及最全面解析方法!
Android四大組件:Service服務史上最全面解析
Android四大組件:BroadcastReceiver史上最全面解析
歡迎關注Carson_Ho的簡書夏漱!
不定期分享關于安卓開發(fā)的干貨豪诲,追求短、平挂绰、快屎篱,但卻不缺深度。