1. 程式人生 > >使用Android Studio釋出私有庫到倉庫中心

使用Android Studio釋出私有庫到倉庫中心

介紹

當在我們這行積累到一定程度,都會有自己的一些程式碼庫,這些程式碼被多個專案使用。之前的做法是每次到新的專案中,就會把之前的程式碼拷貝過來,升級一下,或許會把一些純java程式碼打包成jar包檔案,這樣專案中只要引用這個jar包就可以了,但是在Android中,我們可能還會用到一些資原始檔,這樣再想打包成jar包就比較麻煩了。再再升級下,我們可以使用Android Studio生成aar檔案,這樣就避免了資原始檔無法打包的困擾。但是這樣每次到新專案,我們還是要將aar檔案拷貝過來,這樣的維護還是需要些成本。本文將闡述如何將私有程式碼庫釋出到maven倉庫中心,只要一句簡單的配置程式碼,即可引用自己的程式碼庫,這樣是不是更好維護,更簡單,逼格更高呢~

建立並配置library專案

作為一個工具類庫,首先,我們需要建立一個library專案
library專案
然後在project的build.gradle配置以下兩句程式碼

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


接著在library module的build.gradle增加一些配置:

1、新增外掛

apply plugin: 'com.github.dcendents.android-maven'
apply plugin: 'com.jfrog.bintray'

2、定義版本

version = "0.0.1"

3、設定專案程式碼地址

這裡我是使用github作為程式碼開源地址

def siteUrl = 'https://github.com/a631855639/BintrayDemo'    // project homepage
def gitUrl = 'https://github.com/a631855639/BintrayDemo.git' // project git

4、定義group

這個group定義的名稱將是你之後要引用時會用到的,且要唯一,一般是用包名

group
= "com.bintray.library.demo"

5、定義pom並打包aar

install {
    repositories.mavenInstaller {
        // This generates POM.xml with proper parameters
        pom {
            project {
                packaging 'aar'
                name 'Helen Code For Android'//一些描述
                url siteUrl
                licenses {
                    license {
                        name 'The Apache Software License, Version 2.0'
                        url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
                    }
                }
                developers {
                    developer {//開發者資訊
                        id ''
                        name ''
                        email ''
                    }
                }
                scm {
                    connection gitUrl
                    developerConnection gitUrl
                    url siteUrl
                }
            }
        }
    }
}

6、打包javadoc jar和source jar

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
}

javadoc {
    options{
        encoding 'UTF-8'
        charSet 'UTF-8'
        author true
    }
}

artifacts {
    archives javadocJar
    archives sourcesJar
}

7、上傳到maven倉庫,從local.properties讀取user和apikey

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 = "BintrayLibraryDemo"                // project name in maven
        websiteUrl = siteUrl
        vcsUrl = gitUrl
        licenses = ["Apache-2.0"]
        publish = true
    }
}

publish = true,代表當改task執行時,就將其釋出上去,如果為false就不釋出。
這裡你需要在專案的local.properties檔案裡配置bintray.user和bintray.apikey,分別為https://bintray.com/ 網站註冊的使用者名稱和金鑰。
注意:不要將local.properties檔案提交到程式碼開源庫上,防止重要資訊洩露,記得使用忽略檔案將其忽略提交

專案整體配置

以上步驟算是配置好了,剩下就是到https://bintray.com/ 註冊使用者,獲取bintray.user和bintray.apikey了
來個配置程式碼全身照吧!


獲取bintray.user和bintray.apikey

要獲取這兩個值,必須要先到https://bintray.com/ 註冊,然後點選個人頭像—>編輯


如果釋出失敗,可能是因為你的user填錯了。之前,我在註冊的時候,使用的使用者名稱是Helen,但是發現釋出失敗,當我改為小寫helen時,成功了!當你不知道你要填大寫小寫時,你可以看進入你的個人主頁時,地址寫著是什麼就是什麼了,比如我的個人主頁是https://bintray.com/helen

釋出

配置完以上,最後,開啟命令列執行

gradlew bintrayUnload

或者如下圖

雙擊執行bintrayUnload即可。
然後你會在bintray的個人主頁下方

說明已經上傳成功了,但是還沒完,點選上面的專案連結進入專案主頁,然後將其“Add to JCenter”提交,等待稽核。


等待稽核通過之後(這個差不多等半個小時吧),然後就可以使用了。用法就是使用gradle compile group名+module名+版本號

compile 'com.bintray.library.demo:app:0.01'

升級

我們的類庫也會不斷優化,新增功能,這時候倉庫中心的程式碼也需要升級,這個只要將第二步中的版本號version提高一個版本即可,然後再次執行bintrayUnload。如果沒有將版本號升級,就再次釋出,會報錯

Could not upload to 'https://api.bintray.com/content/helen/maven/BintrayLibraryDemo/0.0.1/com/bintray/library/demo/app/0.0.1/app-0.0.1-javadoc.jar': HTTP/1.1 409 Conflict

提交升級之後,需要等待一段時間。