1. 程式人生 > >教你輕鬆將Android library 釋出到JCenter

教你輕鬆將Android library 釋出到JCenter

JCenter是全世界最大的Java倉庫,也是Android Studio中repositories的預設節點。JCenter支援Maven, Gradle, Ivy, SBT 等大部分構建工具。將專案釋出到JCenter大致流程如下:
將專案釋出到JCenter流程

具體步驟:

第一步:註冊Bintray拿到API Key

如果你已經有賬號,則可以跳過這一步,直接往下看。
JCenter是由Bintray公司在維護,因此你必須註冊一個Bintray賬號,註冊完賬號後Bintray會分配給你一個API Key。
登陸後在首頁右上角點選使用者名稱選項下的”Your Profile”進入個人主頁,然後點選使用者名稱下面的Edit進入個人資訊編輯頁面,接下來點選頁面左邊列表的最後一項API Key。
檢視bintray api key

第二步:釋出前的配置

首先:新增maven-gradle、gradle-bintray外掛

在專案的最外層的build.gradle檔案中的dependencies節點下新增:

classpath 'com.github.dcendents:android-maven-gradle-plugin:1.3'   
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.6'

android-maven-gradle-plugin外掛是用來打包Maven所需檔案的。
gradle-bintray-plugin外掛是用來將生成的Maven所需檔案上傳到Bintray的。

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.0.0'
        classpath 'com.github.dcendents:android-maven-gradle-plugin:1.3'
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.6' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { jcenter() } } task clean(type: Delete) { delete rootProject.buildDir }

其次,在library model下的build.gradle中進行相應配置

apply plugin: 'com.github.dcendents.android-maven'
apply plugin: 'com.jfrog.bintray'
// This is the library version used when deploying the artifact
version = "1.0.0"

def siteUrl = 'https://git.oschina.net/crazycodeboy/ScanProj'      // 專案的主頁
def gitUrl = 'https://git.oschina.net/crazycodeboy/ScanProj.git'   // Git倉庫的url
group = "com.jph.scan.zxing"                                        // Maven Group ID for the artifact,一般填你唯一的包名
install {
    repositories.mavenInstaller {
        // This generates POM.xml with proper parameters
        pom {
            project {
                packaging 'aar'
                // Add your description here
                name 'multi-format 1D/2D barcode image processing use zxing.'
                url siteUrl
                // Set your license
                licenses {
                    license {
                        name 'The Apache Software License, Version 2.0'
                        url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
                    }
                }
                developers {
                    developer {
                        id 'you id'     //填寫的一些基本資訊
                        name 'your name'
                        email 'your email'
                    }
                }
                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
    classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}
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 = "ScanProj"   //釋出到JCenter上的專案名字
        websiteUrl = siteUrl
        vcsUrl = gitUrl
        licenses = ["Apache-2.0"]
        publish = true
    }
}
javadoc { //jav doc採用utf-8編碼否則會報“GBK的不可對映字元”錯誤
    options{
        encoding "UTF-8"
        charSet 'UTF-8'
    }
}    

其實這些配置指令碼也可以從model的build.gradle檔案中抽離出來,現在下library model下建立一個bintrayUpload.gradle檔案然後將上述程式碼複製進去,之後再library model的build.gradle中加入如下程式碼:

apply from: "bintrayUpload.gradle"  

最後,在local.properties檔案中新增從Bintray申請到的API Key

#bintray
bintray.user=your bintray username
bintray.apikey=your apikey

建議將local.properties檔案加入忽略檔案中不上傳,以保護你的apikey

第三步:將專案提交到Bintray

如果你一完成了上述的配置後,下面只需要一行程式碼就可以完成將專案提交到Bintray。
開啟終端進入專案目錄下,執行gradlew bintrayUpload命令即可。
執行完成後,開啟你的bintray主頁如果在”Owned Repositories”下的maven選中看到你的倉庫,則說明你已經將你的倉庫成功上傳到bintray了。
如圖:
將專案提交到Bintray

第四步:將提交到Bintray的專案釋出到JCenter

完成上述的步驟只是將專案提交到bintray,還無法使用該專案庫,因為還沒有釋出到JCenter。
登入Bintray網站,進入個人中心,在右側的Owned Repositories區域點選Maven的圖示,進入你的Maven專案列表。
如果已經上傳成功了,在這裡就能看到你的專案,進入專案詳情,在右下角的Linked To區域點選Add to JCenter,然後在Comments輸入框裡隨便填寫下資訊,最後點Send提交請求即可。一般情況下當天就會稽核,稽核通過後會給你發郵件通知你,並且以後更新專案就不需要再稽核了。
稽核成功後就可以使用你釋出到JCenter上的專案了。

使用你釋出到JCenter上的專案
在Bintray的搜尋輸入框中輸入你的專案:
如圖:
在jcenter搜尋專案

單擊搜尋結果中你的專案,進入專案預覽便可以看到專案的引用方式:
如圖:
引用jcenter上的專案