轉載請標明出處(請勿轉載刪除底部微博、微信等信息):
http://blog.csdn.net/lmj623565791/article/details/51148825;
本文出自:【張鴻洋的博客】
大家在很多時候都希望讓自己的開源項目可以更方便的讓用戶去使用,那麼對於Android平臺,一個很好的方式就是上傳到jcenter,然後使用時通過添加compile
引用即可。
對於上傳到jcenter,也不算技術類的文章,而且已經有很多較好的文章可以參考,寫之前我也大致百度了一下。
目前很多文章都是以gradle-bintray-plugin
這個插件做上傳,多數文章的介紹都是針對普通的開源項目的(即不包含編譯時註解相關)。那麼對於用到編譯時註解,因爲涉及到多個module
,上傳可能會比較麻煩。
本文準備採用bintray-release
這個插件,個人感覺比gradle-bintray-plugin
要方便很多。
對於使用gradle-bintray-plugin
的,我百度了下,可以參考這篇http://www.cnblogs.com/qianxudetianxia/p/4322331.html
So,本文的主要內容是:
- 使用
bintray-release
發佈一般項目到jcenter - 使用
bintray-release
發佈編譯時註解項目到jcenter
一、普通項目上傳到jcenter
ok,首先你應該有一個待上傳的項目。
那麼我們這裏模擬一個簡單的項目。
可以看到我們的basetools是個Android library,主要用來存放一些工具,我們現在要將其上傳到jcenter。
那麼,對於你,應該已經有了這樣一個Android library,處於待上傳的狀態。
(1)註冊bintray.com賬號
爲什麼要註冊這個賬號呢,因爲jcenter()
屬於bintray旗下的一個倉庫。
我們的上傳流程其實就是,從你的Androd Studio,到你的bintray 倉庫,最後同步到jcenter倉庫。
- 進入https://bintray.com/,註冊賬號。
- 註冊完成後,需要郵箱激活;也可以選擇第三方登錄。
註冊完成後,登錄,這兩步屬於非職業玩家都能搞定的。
登錄後:
登陸後,你可以點擊Your Profile
->Edit
然後就能看到上圖的界面。
點擊API Key,就可以看到你一段key字符串,把這個copy下放一邊,一會上傳要用。
(2)引入bintray-release
項目的build.gralde
在你的項目的build.gradle添加bintray-release
的classpath,注意是項目的build.gradle,不是module的,針對文章開始的圖即UploadJcenterTest/build.gradle
。
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.2.3'
classpath 'com.novoda:bintray-release:0.3.4'
}
}
待上傳moudle的build.gralde
來到你想要上傳的module,針對文章開始的圖即UploadJcenterTest/basetools/build.gradle
。
apply plugin: 'com.android.library'
apply plugin: 'com.novoda.bintray-release'//添加
android {
//保持不變
}
dependencies {
//保持不變
}
//添加
publish {
userOrg = 'hyman'//bintray.com用戶名
groupId = 'com.hyman'//jcenter上的路徑
artifactId = 'basetools'//項目名稱
publishVersion = '1.0.0'//版本號
desc = 'Oh hi, this is a nice description for a project, right?'//描述,不重要
website = 'https://github.com/hyman/basetools'//網站,不重要;儘量模擬github上的地址,例如我這樣的;當然你有地址最好了
}
按照上面編寫即可,細節有標識註釋了,假設按照上述的編寫,最終引入的方式爲:
compile 'com.hyman:basetools:1.0.0
完成上面的配置後,就準備上傳了。
上傳
上傳很簡單,執行下面的代碼即可
./gradlew clean build bintrayUpload
-PbintrayUser=hyman
-PbintrayKey=xxxxxxxxxxxxxxxxxxxxxx
-PdryRun=false
user就是用戶名,key就是我們剛纔的讓你保存的key,dryRun是一個配置參數,當爲true的時候,會運行所有的環節,但是不會上傳。
ok,下面整理好上面的這段代碼,運行即可。關於運行,你可以選擇在Android Studio的Terminal面板進行,如下圖。
點擊底部的Terminal即可,注意下你當前的路徑是當前項目下,然後enter運行。
然後就是等待,當運行完成,看到BUILD SUCCESSFUL
就沒問題了,如果有什麼問題呢,根據log排查下。
到此就上傳完成了~~~
你可以訪問https://bintray.com/你的用戶名/maven
,即可看到:
看到我們上傳的項目了,你可以點擊進去看該庫的一些信息,但是注意此時還不能夠直接被引用。
點擊進去該庫,按照下圖,點擊Add To jcenter
然後隨便寫一下對你該庫的描述,然後點擊發送就可以了。
ok,到此就結束了,不過目前還是不能直接引用的,你需要等待bintray的工作人員審覈,審覈通過會給你發送站內Message,並且Add to Jcenter
那個按鈕就小時了,此外你還可以根據你上傳的groupId,訪問該網站https://jcenter.bintray.com/你的groupId
例如https://jcenter.bintray.com/com/hyman/
如果可以引用,則能看到如下:
最後總結下整個過程,其實非常簡單:
- 申請賬號
- 引入bintray-release,在需要上傳的module裏面填寫相關publish的信息
- 調用上傳的命令
Add to Jcenter
提交審覈
基本都是步驟化的東西,真正需要我們填寫的也就publish裏面幾個信息。
ok,接下來看上傳編譯時註解的項目。
二、編譯時註解項目上傳到jcenter
如果你暫時不需要這個需求,其實沒必要往下看,因爲並不屬於技術類文章,瞭解這裏有寫,可以收藏下,遇到需求再回來看就好了。
其實也很簡單,按照步驟做就好。
我們這裏找一個項目作爲演示。
爲什麼說編譯時註解的項目特殊呢?
因爲它一般會涉及到多個moudle,比如上圖,涉及到compilter
、permission-annotation
、permission-lib
。
我們在上傳時,這3個module都要進行上傳,這裏暫不涉及爲啥會這麼分module相關知識。
其實利用bintray-release
上傳的過程也很簡單。
項目的build.gradle
首先針對項目的build.gradle,即圖中MPermissions/build.gradle
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.2.3'
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4'
classpath 'com.novoda:bintray-release:0.3.4'//添加
}
}
allprojects {
repositories {
jcenter()
}
}
//添加
ext {
userOrg = 'hongyangandroid'
groupId = 'com.zhy'
uploadName = 'MPermission'
publishVersion = '1.0.1'
desc = 'a easy API to use runtime permission for Android M '
website = 'https://github.com/hongyangAndroid/MPermissions'
licences = ['Apache-2.0']
}
只要關注添加的部分,底部的ext主要是爲了上傳多個module統一管理的。
module的build.gradle
剩下就是compilter
、permission-annotation
、permission-lib
這三個module,這三個模塊的處理其實是一致的:
- apply插件
- 填寫publish信息
apply plugin: 'com.android.library'
apply plugin: 'bintray-release'//添加
android {
}
dependencies {
}
//添加
publish {
artifactId = 'mpermission-api'
userOrg = rootProject.userOrg
groupId = rootProject.groupId
uploadName = rootProject.uploadName
publishVersion = rootProject.publishVersion
desc = rootProject.description
website = rootProject.website
licences = rootProject.licences
}
3個模塊的配置是一樣的,唯一不同的就是publish中的artifactId
,不同的module應該有它不同的名字。
對所有需要上傳的module配置完成後,和上面一樣,運行上傳的命令即可。
./gradlew clean build bintrayUpload
-PbintrayUser=hyman
-PbintrayKey=xxxxxxxxxxxxxxxxxxxxxx
-PdryRun=false
你可以選擇在Android Studio的Terminal面板進行,如下圖。
ok,然後就和上面普通項目的步驟一致了,去Add to Jcenter
,之後等待。
如果審覈成功,你會發現3個module都會被同步到jcenter上,比如訪問http://jcenter.bintray.com/com/zhy/
:
在使用時,對於compiler需要引入apt的插件,大致類似如下用法:
apply plugin: ‘com.neenbedankt.android-apt’
dependencies {
apt ‘com.zhy:mpermission-compiler:1.0.0’
compile ‘com.zhy:mpermission-api:1.0.0’
}
ok,當然本文的重點在於上傳,其他方面細節就不贅述了。
三、注意事項
(1)版本更新
我們上傳完成後,肯定會涉及到更新問題,那麼怎麼更新呢?
publish {
userOrg = 'hyman'//bintray.com用戶名
groupId = 'com.hyman'//jcenter上的路徑
artifactId = 'basetools'//項目名稱
publishVersion = '2.0.0'//修改版本號
desc = 'Oh hi, this is a nice description for a project, right?'//描述,不重要
website = 'https://github.com/hyman/basetools'
}
什麼都不用動,唯獨修改下版本號就可以了,修改完成,執行上傳那段代碼。
(2)你是windows系統
gradlew clean build bintrayUpload
-PbintrayUser=hyman
-PbintrayKey=xxxxxxxxxxxxxxxxxxxxxx
-PdryRun=false
前面的./
就不要輸入了,這屬於比較基礎的問題了。
(3)亂碼問題
註釋中有中文,可能會出現:編碼GBK的不可映射字符
項目的build.gradle中添加:
allprojects {
tasks.withType(Javadoc) {
options{
encoding "UTF-8"
charSet 'UTF-8'
links "http://docs.oracle.com/javase/7/docs/api"
}
}
}
還有上傳過程中的一些問題,確定你的用戶名正確,偶爾需要科學上網。
那麼如何利用bintray-release
上傳開源項目到jcenter就介紹完畢了,希望能夠節省你的時間~
歡迎關注我的微博:
http://weibo.com/u/3165018720
關注微信公衆號:hongyangAndroid
(歡迎關注,第一時間推送博文信息)