Android Library 發佈開源庫 JCenter & JitPack 攻略

 

對於Android 的開源庫,通常經過 JCenter 或者 JitPack 發佈開源。兩種方式都可~java

當你造了一個好玩有用的東西想要分享給你們時,開源出來即是一種好方式~

1、 上傳開源庫到 JCenter

一、準備工做

步驟1:註冊Bintray帳號

  1. 儘可能不要在官網註冊,由於官網註冊的是企業版,咱們須要的是我的版
  2. 直接關聯 Github帳號進行註冊 & 登陸(建議)

PS:若是Github帳戶使用了qq郵箱,163郵箱等可能會沒法註冊,能夠嘗試給Github帳戶 增長一個郵箱例如 Gmailandroid

步驟2:在Bintray上創建倉庫

  1. 在我的中心點擊 Add New Repository
  2. Name 框填寫 倉庫名;Type 框 選擇 maven
  3. 點擊 Create,完成建立

步驟3:在代碼項目中建立Module文件夾

  • 步驟以下git

    Android Studio中github

    1. File --> New Module -> Android Library(注意主項目的Project名不要和Library相同,可能會衝突)
    2. 建立成功後,你會發現Module文件夾的結構和 原有的項目文件夾(app)很是相似

步驟4:將須要上傳的代碼存放到Module文件中

  • 本文 以上傳一個 自定義View 爲例子
  • 該自定義View代碼包括:1個類文件
    在這裏插入圖片描述

步驟5:將整個項目上傳到 Github


二、配置與上傳

步驟1:配置 bintray-release 插件

  • Library ModuleGradle文件中配置
    在這裏插入圖片描述
//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同樣web

緣由:Bintray上,你的項目的 maven-metadata.xml 文件的路徑 爲 gruopId+"/"+module名稱。api

​ 假設你的groupId=qg.odm,artifactId是AnimatedFloatingButton,但module名稱是AnimatedFloatingButtonLibrary。
​ 此時,項目文件在qg.odm.animatedfloatingbuttondemo目錄下的,但maven-metadata.xml文件倒是在qg.odm/AnimatedFloatingButtonLibrary目錄下的,可能會有衝突。bash

衝突:若你有多個項目groupId同樣 & artifactId不同,但module名稱都是library的話,maven-metadata.xml文件的地址可能會同樣,即都是:gruopId+"/"+module名稱,那麼就可能產生衝突。oracle

解決方案:保持module名稱和artifactId一致。app

  • 在該項目的Gradle文件中配置

在這裏插入圖片描述

使用插件前應該看下最新版本 Bintray-release 的github地址maven

//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中

  • AndroidStudioTerminal輸入如下命令
// 每行命令均用空格隔開,此處是爲了展現纔會分行

<-- 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

在這裏插入圖片描述

  • 上傳成功提示以下:

img

  • 注:通常來講不會一次成功,可能出錯的問題(坑),詳情拉到末尾總結

  • 到這一步,你已經將項目上傳到 JCenter了,可進入查看到 Package 已被添加進去

在這裏插入圖片描述

步驟3:添加到JCenter

  • 請按照如下步驟真正添加該項目到JCenter
    1. 進入倉庫–>點擊對應Package–>點擊右上方的 Actions --> 選擇 Add to JCenter
    2. 在彈出的對話框中添加 對提交內容的備註,簡單描述便可
  • 提交申請後,須要等待 管理員審覈經過(x小時),會以 站內私信方式通知

在這裏插入圖片描述

  • 收到官方的通知,說明別人就可直接經過 添加你的依賴 來引用你的 Library 了!

三、查看如何依賴

在對應的 Package 頁點擊對應的版本號,在Maven Info中能夠查看

在這裏插入圖片描述
在這裏插入圖片描述

四、版本更新

當須要進行Android Library版本更新時,只須要如下2個步驟:

步驟1:在該Library ModuleGradle文件中的配置2中 從新配置版本號,其餘的都不用更改!!

在這裏插入圖片描述

步驟2:從新執行上傳代碼

AndroidStudioTerminal輸入如下命令

//一行命令直接在Terminal執行,例子以下
gradlew clean build bintrayUpload -PbintrayUser=dmingou -PbintrayKey=610e0e8f022cb3f353908e083932167bd0ff -PdryRun=false

等待必定時間,就能夠看到 Bintray網站上更新了Android Library的新版本。

五、上傳到 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。那何時執行?怎麼執行呢?

步驟一、何時執行?

在gradlew clean build 和 gradlew bintrayUpload… 兩個Task之間執行;

步驟二、怎麼執行?

首先在android studio 中打開gralde task視圖,前後右擊run運行下面的兩個Task便可;

在這裏插入圖片描述

執行完之後,對應module下的build目錄會生成對應的pom文件

再按照如上操做,而後再去官網點擊「add to jcenter」按鈕便可順利進入申請界面

2、發佈開源庫到 JitPack

準備工做

在Github上傳須要開源的項目,與 上傳JCenter步驟中的準備工做對項目代碼的操做相似。

參照 上傳JCenter開源 的 準備工做的 步驟3,步驟4,步驟5

步驟1、在項目的build.gradle添加插件android-maven-gradle-plugin

classpath ‘com.github.dcendents:android-maven-gradle-plugin:2.1’

PS:jitpack的android-maven-gradle-plugin版本要和gradle版本對應。具體的對應呢?查看官方說明~~

以下圖:
在這裏插入圖片描述

步驟2、配置library的build.gralde

在library的 build.gradle中添加代碼

// JitPack Maven
apply plugin: 'com.github.dcendents.android-maven'
// 其中username須要替換爲你在github上的用戶名
group='com.github.username'

以下圖所示:
在這裏插入圖片描述

修改後的部分要提交到github上去!!

步驟3、建立release版本

一、打開項目的github主頁,建立一個Release或Tag

在這裏插入圖片描述

二、填寫發佈內容
  1. 填寫你要發佈的release代碼庫的版本(重要)
  2. 標題名字,通常填寫開源庫的名字
  3. 本次release提交的描述
  4. 點擊 Publish relsease 按鈕

在這裏插入圖片描述

三、發佈成功後可查看到記錄

在這裏插入圖片描述

步驟4、提交到 JitPack

一、將Github項目的倉庫提交到 JitPack

綁定了帳戶後,能夠在左方的 Repositories欄挑選;也能夠在輸入框中填入 發佈release的項目地址

Log欄是綠色,表明OK,點擊 Get It 按鈕,版本提交完成後,JitPack會自動生成引用該library的配置信息:

在這裏插入圖片描述

二、在下方能夠看到如何引用依賴你剛發佈的代碼庫了

在這裏插入圖片描述

在項目依次添加這兩處,就可使用發佈的代碼庫了

 

謝謝閱讀的同窗~,但願文章能對您有用

相關文章
相關標籤/搜索