使用Android Studio發佈開源庫到Bintray/Jcenter
Jcenter:一個代碼庫,相當於一個公共的存儲容器,簡單的來講就是你把你寫好的aar文件及一些文檔描述文件之類的東西打包上傳到Jcenter服務器上,其他人就可以通過Jcenter服務器下載到你上傳的包了。
Bintray:Bintray是負責維護Jcenter倉庫的網站,也就是說Jcenter的代碼庫是託管到Bintray上的。有個朋友舉了個很形象的栗子說把Jcenter看做是位於某地的倉庫,Bintray是送貨的卡車,你寫的庫就是貨了。實際上Bintray不僅支持Jcenter庫還支持很多平臺,Jcenter只是衆多平臺中的一個,每個人也都可以在Bintray創建賬戶生成自己的maven倉庫,下文就會帶着大家創建一個自己的maven倉庫,同時也將該類庫上傳到Jcenter中。
- 註冊Bintray賬號
- 註冊成功後 創建倉庫 點擊Add New Repository
- 配置倉庫信息,注意:Name爲倉庫名後面會用到 Type選擇Maven Licenses選擇Apache-2.0
- 上傳module,介紹一種配置極簡的方法
a. 在project下的build.gradle中配置
dependencies {
classpath 'com.android.tools.build:gradle:3.4.1'
//注意:bintray版本和gradle版本有對應關係,根據自己的gradle版本改一下,否則編譯不通過
classpath 'com.novoda:bintray-release:0.9.1'
}
b. 在需要上傳的module下的build.gradle中配置
apply plugin: 'com.novoda.bintray-release'
c. 基本配置信息,配置在module下build.gradle的最外層,我把這些變量值定義在了根目錄下的gradle.properties中
publish {
artifactId = ARTIFACT_ID // 你的模塊名稱,唯一
userOrg = USER_ORG // bintray用戶名
groupId = GROUP_ID // 模塊目錄
repoName = REPO_NAME // 此字段爲你的倉庫名稱,默認爲'maven'
uploadName = ARTIFACT_ID
publishVersion = VERSION // 所需上傳類庫的版本號,如果提交新版本,版本號需要+1否則提交bintray會失敗
desc = DESC // 描述信息
website = WEB_SITE // 網頁,一般就是該類庫的源碼地址
licences = [APACHE_LICENCES]
}
d. 配置完成,在AS的Terminal窗口執行上傳命令
Window:
gradlew clean build bintrayUpload -PbintrayUser=******** -PbintrayKey=**************************************** -PdryRun=false
Mac:
./gradlew clean build bintrayUpload -PbintrayUser=******** -PbintrayKey=**************************************** -PdryRun=false
// PbintrayUser:替換爲你的bintray用戶名,我的是kwunyamshan
// PbintrayKey:替換爲你的Key
Key如何獲取? 註冊登錄bintray後 點擊右上角頭像 ↓
- Terminal窗口執行命令 等控制檯輸出SUCCESSFUL,回到Bintray首頁選擇剛纔創建的MyRepo倉庫,就能看到剛上傳成功的庫了
- 上傳到Jcenter,找到該類庫 右上角Actions-> Add to Jcenter 添加一些描述信息提交(直接提交可能不通過) 等審覈通過就可以使用了
- 使用: 在app中引用該遠程類庫:在project下的build.gradle配置maven地址
repositories {
google()
jcenter()
//配置maven地址
maven{url 'https://dl.bintray.com/kwunyamshan/MyRepo'}
}
URL的獲取 點擊剛纔創建的倉庫MyRepo ↓
- 在app下的build.gradle引用該類庫
dependencies {
...
implementation 'com.wh.repo:bintraylib:1.0.2'
//路徑規則:GROUP_ID :ARTIFACT_ID:VERSION,把定義在了根目錄下的gradle.properties的變量名替換成變量值
//對應的就是:com.wh.repo:bintraylib:1.0.2
}
- 以上已經完成了所有配置,運行app,彈出Bintray~的吐司表示遠程倉庫配置成功
當然你也可以引用發佈到Jcenter中的類庫,那麼第7步可以省略,有 jcenter()就可以了,不過前提是Jcenter審覈通過
如果你也用Github維護某個類庫的源碼那麼你可以解鎖一個小有b格的小徽章咯
進入你創建的倉庫-> 找到你提交到Bintray的類庫->點擊Version欄中的Badge複製這個鏈接到你的ReadMe中吧~