簡單又詳細,Android Library 發佈開源庫 JCenter & JitPack 攻略~ ...
對於Android 的開源庫,一般通過 JCenter 或者 JitPack 發佈開源。兩種方式均可~
當你造了一個好玩有用的東西想要分享給大家時,開源出來便是一種好方式~
一、 上傳開源庫到 JCenter
1、準備工作
步驟1:註冊Bintray賬號
- 儘量不要在官網註冊,因為官網註冊的是企業版,我們需要的是個人版
- 直接關聯
Github
賬號進行註冊 & 登錄(建議)
PS:如果Github賬戶使用了qq郵箱,163郵箱等可能會無法註冊,可以嘗試給Github賬戶 增加一個郵箱例如 Gmail
步驟2:在Bintray上建立倉庫
- 在個人中心點擊 Add New Repository
- Name 框填寫 倉庫名;Type 框 選擇 maven
- 點擊 Create,完成創建
步驟3:在代碼項目中創建Module
文件夾
-
步驟如下
Android Studio中
- File --> New Module -> Android Library(註意主項目的Project名不要和Library相同,可能會衝突)
- 創建成功後,你會發現
Module
文件夾的結構和 原有的項目文件夾(app
)非常類似
步驟4:將需要上傳的代碼存放到Module文件中
- 本文 以上傳一個 自定義
View
為例子 - 該自定義
View
代碼包括:1個類文件
步驟5:將整個項目上傳到 Github
2、配置與上傳
步驟1:配置 bintray-release 插件
- 在
Library Module
的Gradle
文件中配置
//Library build.gradle
apply plugin: 'com.novoda.bintray-release' // 添加bintray插件
publish {
userOrg = 'dmingou' // Bintray用戶名
repoName = 'AnimatedFloatingButton' // Bintray上的新建的倉庫名(Repository)
groupId = 'qg.odm' // 依賴名 implemention 'x:y:z'中的包名x
artifactId = 'AnimatedFloatingButton' // 依賴名implemention 'x:y:z'中的項目名y
publishVersion = '1.0.0' // 依賴名implemention 'x:y:z'中的版本號z
desc = 'XXXXXXXX' // 對該開源組件的說明
website = 'https://github.com/DMingOu/AnimatedFloatingButton' // VCS地址
}
註意:儘量保持你的library module的名字同artifactId一樣
原因:Bintray上,你的項目的 maven-metadata.xml 文件的路徑 為 gruopId+"/"+module名稱。
假設你的groupId=qg.odm,artifactId是AnimatedFloatingButton,但module名稱是AnimatedFloatingButtonLibrary。
此時,項目文件在qg.odm.animatedfloatingbuttondemo目錄下的,但maven-metadata.xml文件卻是在qg.odm/AnimatedFloatingButtonLibrary目錄下的,可能會有衝突。衝突:若你有多個項目groupId一樣 & artifactId不一樣,但module名稱都是library的話,maven-metadata.xml文件的地址可能會一樣,即都是:gruopId+"/"+module名稱,那麼就可能產生衝突。
解決方案:保持module名稱和artifactId一致。
- 在該項目的
Gradle
文件中配置
使用插件前應該看下最新版本 Bintray-release 的github地址
//Project build.gradle
classpath 'com.novoda:bintray-release:0.9.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=UserName // Bintray用戶名
-PbintrayKey=********* // Bintray上的API key
-PdryRun=false
<-- Mac版本 -->
./gradlew clean build bintrayUpload
-PbintrayUser=carson-ho
-PbintrayKey=*****************************
-PdryRun=false
//一行命令直接在Terminal執行,例子如下
gradlew clean build bintrayUpload -PbintrayUser=dmingou -PbintrayKey=610e0e8f022cb3f353908e083932167bd0ff -PdryRun=false
- 註:獲取API Key(需回到
Jcenter
網站)
- 上傳成功提示如下:
-
註:一般來說不會一次成功,可能出錯的問題(坑),詳情拉到末尾總結
-
到這一步,你已經將項目上傳到
JCenter
了,可進入查看到 Package 已被添加進去
步驟3:添加到JCenter
- 請按照以下步驟真正添加該項目到
JCenter
- 進入倉庫–>點擊對應Package–>點擊右上方的 Actions --> 選擇 Add to JCenter
- 在彈出的對話框中添加 對提交內容的備註,簡單描述即可
- 提交申請後,需要等待 管理員審核通過(x小時),會以 站內私信方式通知
- 收到官方的通知,說明別人就可直接通過 添加你的依賴 來引用你的
Library
了!
3、查看如何依賴
在對應的 Package 頁點擊對應的版本號,在Maven Info中可以查看
4、版本更新
當需要進行Android Library
版本更新時,只需要以下2個步驟:
步驟1:在該Library Module
的Gradle
文件中的配置2中 重新配置版本號,其他的都不用更改!!
步驟2:重新執行上傳代碼
在AndroidStudio
的 Terminal
輸入以下命令
//一行命令直接在Terminal執行,例子如下
gradlew clean build bintrayUpload -PbintrayUser=dmingou -PbintrayKey=610e0e8f022cb3f353908e083932167bd0ff -PdryRun=false
等待一定時間,就可以看到 Bintray
網站上更新了Android Library
的新版本。
5、上傳到 Bintray 時遇到的坑
MacOS可能出現的坑
// 錯誤日誌:說明許可權有問題
bash: ./gradlew: Permission denied
// 解決方案:獲得許可權,直接在終端輸入以下命令
chmod +x gradlew
坑:Could not publish XXXX HTTP/1.1 404 Not Found [message:Package ‘XXXX’ was not found]
研究一番,類似的錯誤還有 **Not Found Repo …**網上回答清一色是說配置中寫錯了或者檢查下空格問題。然後我認真檢查發現無錯後,我直接按原來的命令,再次執行,然後居然就 Build Successful 了,有點玄學
坑:Please fix the following before submitting a JCenter inclusion request:Add a POM file to the latest version of your package
bintray網站,Package上傳成功後,點擊“add to jcenter”按鈕時,提示以上信息。
- 上傳到bintray的命令行
gradlew clean build bintrayUpload -PbintrayUser=BINTRAY_USERNAME -PbintrayKey=BINTRAY_KEY -PdryRun=false
- 其實上面的命令行可以分解為2個task:
gradlew clean build
gradlew bintrayUpload.........
- 點擊“add to jcenter”時提示的異常信息,意思是上傳的最新版本裡面缺少了pom文件,而通過bintray-release插件上傳,執行命令時如果沒有生成,則需要我們手動生成
gradlew clean build bintrayUpload...
解決辦法就是手動執行task。那什麼時候執行?怎麼執行呢?
步驟1、什麼時候執行?
在gradlew clean build 和 gradlew bintrayUpload… 兩個Task之間執行;
步驟2、怎麼執行?
首先在android studio 中打開gralde task視圖,先後右擊run運行下麵的兩個Task即可;
執行完以後,對應module下的build目錄會生成對應的pom文件
再按照如上操作,然後再去官網點擊“add to jcenter”按鈕即可順利進入申請界面
二、發佈開源庫到 JitPack
準備工作
在Github上傳需要開源的項目,與 上傳JCenter步驟中的準備工作對項目代碼的操作類似。
參照 上傳JCenter開源 的 準備工作的 步驟3,步驟4,步驟5
步驟一、在項目的build.gradle添加插件android-maven-gradle-plugin
classpath ‘com.github.dcendents:android-maven-gradle-plugin:2.1’
PS:jitpack的android-maven-gradle-plugin版本要和gradle版本對應。具體的對應呢?查看官方說明~~
如下圖:
步驟二、配置library的build.gralde
在library的 build.gradle中添加代碼
// JitPack Maven
apply plugin: 'com.github.dcendents.android-maven'
// 其中username需要替換為你在github上的用戶名
group='com.github.username'
如下圖所示:
修改後的部分要提交到github上去!!
步驟三、創建release版本
1、打開項目的github主頁,創建一個Release或Tag
2、填寫發佈內容
- 填寫你要發佈的release代碼庫的版本(重要)
- 標題名字,一般填寫開源庫的名字
- 本次release提交的描述
- 點擊 Publish relsease 按鈕
3、發佈成功後可查看到記錄
步驟四、提交到 JitPack
1、將Github項目的倉庫提交到 JitPack
綁定了賬戶後,可以在左方的 Repositories欄挑選;也可以在輸入框中填入 發佈release的項目地址
Log欄是綠色,代表OK,點擊 Get It 按鈕,版本提交完成後,JitPack會自動生成引用該library的配置信息:
2、在下方可以看到如何引用依賴你剛發佈的代碼庫了
在項目依次添加這兩處,就可以使用發佈的代碼庫了
謝謝閱讀的同學~,希望文章能對您有用