Android 快速釋出開源專案到jcenter
大家在很多時候都希望讓自己的開源專案可以更方便的讓使用者去使用,那麼對於Android平臺,一個很好的方式就是上傳到jcenter,然後使用時通過新增compile
引用即可。
對於上傳到jcenter,也不算技術類的文章,而且已經有很多較好的文章可以參考,寫之前我也大致百度了一下。
目前很多文章都是以gradle-bintray-plugin
這個外掛做上傳,多數文章的介紹都是針對普通的開源專案的(即不包含編譯時註解相關)。那麼對於用到編譯時註解,因為涉及到多個module
,上傳可能會比較麻煩。
本文準備採用bintray-release
這個外掛,個人感覺比gradle-bintray-plugin
So,本文的主要內容是:
- 使用
bintray-release
釋出一般專案到jcenter - 使用
bintray-release
釋出編譯時註解專案到jcenter
一、普通專案上傳到jcenter
ok,首先你應該有一個待上傳的專案。
那麼我們這裡模擬一個簡單的專案。
可以看到我們的basetools是個Android library,主要用來存放一些工具,我們現在要將其上傳到jcenter。
那麼,對於你,應該已經有了這樣一個Android library,處於待上傳的狀態。
(1)註冊bintray.com賬號
為什麼要註冊這個賬號呢,因為jcenter()
我們的上傳流程其實就是,從你的Androd Studio,到你的bintray 倉庫,最後同步到jcenter倉庫。
- 註冊完成後,需要郵箱啟用;也可以選擇第三方登入。
註冊完成後,登入,這兩步屬於非職業玩家都能搞定的。
登入後:
登陸後,你可以點選Your Profile
->Edit
然後就能看到上圖的介面。
點選API Key,就可以看到你一段key字串,把這個copy下放一邊,一會上傳要用。
(2)引入bintray-release
專案的build.gralde
在你的專案的build.gradle新增bintray-release
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就介紹完畢了,希望能夠節省你的時間~
關注微信公眾號:hongyangAndroid
(歡迎關注,第一時間推送博文資訊)