如何發(fā)布Android依賴庫到JCenter

這篇文章將介紹如何進行一步一步操作實現(xiàn)將自己的庫上傳至JCenter,使得可以簡便的在app/build.gradle中的dependencies使用compile進行導入庫使用。最終看起來使用的姿勢是這樣的

最終使用姿勢

1.Example項目和庫的建立

按照平常的開發(fā)創(chuàng)建項目,在項目中創(chuàng)建Module,這個Module便是一個可以作為三方提供的庫,這里舉個簡單栗子,一個android工具集的項目,核心目錄結構如下:

project structure

其中app下為Example的demo,其中包含了一個Module名字叫utils.

注意: demo和Module的目錄名需要不同,比如com.leo618.utilsexample和com.leo618.utils;

完成項目的創(chuàng)建以及Module庫代碼編寫之后,上傳至github。

2.上傳項目至github

把自己的項目上傳到github上也是有多種方式的,可以直接在網(wǎng)站上傳,或者使用GitHub桌面客戶端,也可以使用命令行。這一步比較簡單,注冊github賬號按照步驟上傳就行了,直接跳過。

3.準備JCenter支持賬號

首先你需要做的就是在https://bintray.com/有注冊賬號,沒有的話注冊一個便是,項目中需要兩個東西:賬號名稱和API Key,右上角用戶名處點擊Edit Profile進入設置頁面,左邊欄最后一欄即為API Key(可能需要輸入一次密碼才能查看)

查看API Key

4.修改項目配置,上傳庫

主要修改項目中的三個文件(紅線標注):

Gradle文件修改
  • 加入插件依賴

    在Project的build.gradle中的加入主要的兩行classpath:

      buildscript {
          repositories {
              jcenter()
          }
          dependencies {
              classpath 'com.android.tools.build:gradle:2.2.3'
      
              classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1+' // jfrog plugin
              classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5' // maven plugin
          }
      }
    
  • 本地文件保存賬戶信息

    在local.properties文件中加入bintray平臺的賬號和API Key,選擇寫在這個文件中是因為該文件不會上傳到github上,版本控制中是需要忽略的,敏感信息就可以起到保護作用

    local
  • Module打包上傳gradle腳本

    在Module(庫)的build.gradle中的加入腳本設置如下:

      android {
          resourcePrefix "leo_" //資源標識前綴 隨意填寫
          ...
      }
    
      // 然后你可以拷貝下面這一大段 修改注釋的地方
      apply plugin: 'com.github.dcendents.android-maven'
      apply plugin: 'com.jfrog.bintray'
      
      version = "0.0.1"http:// 區(qū)分library版本
      
      def siteUrl = 'https://github.com/Leo0618/Utils'   // 項目的主頁 github地址
      def gitUrl = 'git@github.com:Leo0618/Utils.git'   // Git倉庫的url
      group = "com.leo618.utils"            // Maven Group ID for the artifact,一般填你唯一的包名
      install {
          repositories.mavenInstaller {
              pom {
                  project {
                      packaging 'aar'
                      //項目的描述 
                      name 'Android Utils.'
                      url siteUrl
                      // 許可證說明
                      licenses {
                          license {
                              name 'The Apache Software License, Version 2.0'
                              url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
                          }
                      }
                      developers {
                          //開發(fā)者的基本信息,根據(jù)自己喜好填上就是
                          developer {
                              id 'Leo0618'
                              name 'Leo'
                              email 'leo0618@126.com'
                          }
                      }
                      scm {
                          connection gitUrl
                          developerConnection gitUrl
                          url siteUrl
                      }
                  }
              }
          }
      }
      task sourcesJar(type: Jar) {
          from android.sourceSets.main.java.srcDirs
          classifier = 'sources'
      }
      task javadoc(type: Javadoc) {
          source = android.sourceSets.main.java.srcDirs
          options.linkSource true
          classpath += project.files(project.android.getBootClasspath().join(File.pathSeparator))
          failOnError false
      }
      task javadocJar(type: Jar, dependsOn: javadoc) {
          classifier = 'javadoc'
          from javadoc.destinationDir
      }
      artifacts {
          archives javadocJar
          archives sourcesJar
      }
      Properties properties = new Properties()
      properties.load(project.rootProject.file('local.properties').newDataInputStream())
      bintray {
          user = properties.getProperty("bintray.user")
          key = properties.getProperty("bintray.apikey")
          configurations = ['archives']
          pkg {
              repo = "maven"
              name = "Utils"    //發(fā)布到JCenter上的項目名字
              websiteUrl = siteUrl
              vcsUrl = gitUrl
              licenses = ["Apache-2.0"]
              publish = true
          }
    

    修改完成之后,執(zhí)行gradle命令,過一會兒執(zhí)行完成成功后,回到https://bintray.com/ 可以看到項目庫源碼已經(jīng)上傳到Maven倉庫里面

    上傳成功

    點擊進入項目,檢查Files是否包含四個文件

    一般來說只要上傳成功aar和pom文件是有的,檢查一下javadoc和sources兩個jar是否存在,如果缺失這兩個文件,很容易提交JCenter無法通過審核,如果缺失則分別按順序執(zhí)行gradle腳本命令other下面的三個命令

  • 提交JCenter審核

點擊2 進入 然后 send 即可,然后坐等幾小時后,你就可以在其他項目中按照開頭的姿勢使用自己的庫了。

如果你覺得文章有一定價值,歡迎推薦給你的朋友!
如有疑問,歡迎加群討論交流
點擊鏈接加入群【AndroidRunner】

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容