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

来源:https://www.cnblogs.com/DMingO/archive/2020/05/05/12790052.html
-Advertisement-
Play Games

簡單又詳細,Android Library 發佈開源庫 JCenter & JitPack 攻略~ ...


 

對於Android 的開源庫,一般通過 JCenter 或者 JitPack 發佈開源。兩種方式均可~

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

一、 上傳開源庫到 JCenter

1、準備工作

步驟1:註冊Bintray賬號

  1. 儘量不要在官網註冊,因為官網註冊的是企業版,我們需要的是個人版
  2. 直接關聯 Github賬號進行註冊 & 登錄(建議)

PS:如果Github賬戶使用了qq郵箱,163郵箱等可能會無法註冊,可以嘗試給Github賬戶 增加一個郵箱例如 Gmail

步驟2:在Bintray上建立倉庫

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

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

  • 步驟如下

    Android Studio中

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

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

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

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


2、配置與上傳

步驟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一樣

原因: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中

  • 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 了!

3、查看如何依賴

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

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

4、版本更新

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

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

在這裡插入圖片描述

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

AndroidStudioTerminal輸入以下命令

//一行命令直接在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、填寫發佈內容
  1. 填寫你要發佈的release代碼庫的版本(重要)
  2. 標題名字,一般填寫開源庫的名字
  3. 本次release提交的描述
  4. 點擊 Publish relsease 按鈕

在這裡插入圖片描述

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

在這裡插入圖片描述

步驟四、提交到 JitPack

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

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

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

在這裡插入圖片描述

2、在下方可以看到如何引用依賴你剛發佈的代碼庫了

在這裡插入圖片描述

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

 

謝謝閱讀的同學~,希望文章能對您有用


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1、數據冗餘導致的問題:冗餘存儲、更新異常、插入異常、刪除異常。 2、函數依賴:一種完整性約束。 在關係模式r(R)中,α屬於R,β屬於R。 1)α函數確定β(β函數依賴於α):記作α→β,對於任意合法關係r及其中任兩個元組ti和tj,i≠j,若ti[α]=tj[α],則ti[β]=tj[β]。 2 ...
  • @2020.5.5 練習:賬號信息表,用戶組,主機表,主機組 ...
  • 【目錄】 一 系統資料庫 二 創建資料庫 三 資料庫相關操作 一 系統資料庫 information_schema: 虛擬庫,不占用磁碟空間,存儲的是資料庫啟動後的一些參數,如用戶表信息、列信息、許可權信息、字元信息等 performance_schema: MySQL 5.5開始新增一個資料庫,主要 ...
  • 伴隨著Redis6.0的發佈,作為最令人怦然心動的特性之一,Redis官方同時推出Redis集群的proxy了:redis-cluster-proxy,https://github.com/RedisLabs/redis-cluster-proxy 相比從前訪問Redis集群時需要制定集群中所有的I ...
  • mysql命令gruop by報錯this is incompatible with sql_mode=only_full_group_by 出現這個錯誤已導致在開發中mybatis的sql也運行不了 原因: 看一下group by的語法: select 選取分組中的列+聚合函數 from 表名稱 ...
  • 目錄:andorid jar/庫源碼解析 RxJava2: 作用: 通過提供一種,觀察者和訂閱者的模式,的架構,來優化邏輯流程。適用於複雜和需要多數據轉換和長流程。 慄子: 定義三個對象類 public class ResultInfo { public int code; public Strin ...
  • 目錄:andorid jar/庫源碼解析 Bolts: 作用: 用於鏈式執行跨線程代碼,且傳遞數據 慄子: Task.call(new Callable<Boolean>() { @Override public Boolean call() throws Exception { return tr ...
  • 快速接入訊飛語音聽寫SDK(內附空指針解決和修改對話框文字方法) ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...