Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> 手把手圖文並茂教你發布Android開源庫

手把手圖文並茂教你發布Android開源庫

編輯:關於Android編程

經常逛github,總看到別人的readme中寫著compile ‘com.xxx:1.0.xxx’,這個已經越來越普及,個人,團人,公司都在用,雖然做android這麼長時間了,但是發現自己好像不會,走了好多彎路,幾經折騰,這沒什麼技術含量的玩意,還挺費時的,所以,下定決心,發布一個開源庫出來。Github: https://github.com/hejunlin2013/SuperIndicator

今天的Agenda如下:

主工程下的的build.gradle配置Maven,jcenter服務 創建一個類module 上傳類庫到jcenter倉庫
注冊/bintray賬號 添加package 添加bintray插件 編譯類庫 配置local.properties添加Bintray認證 Android Studio終端使用命令上傳 Bintray中同步到Jcenter,發送打包請求 升級類庫,再打包過程

背景

AndroidStudio是從Maven Repository 下載類庫的。基本上有jcenter和Maven Central這兩個服務器用於下載Android的類庫。
在工程(注意是主工程下的)中的build.gradle有一段腳本如下:

buildscript {
    repositories {
        jcenter() //jcenter倉庫
        mavenCentral() //Maven Central倉庫
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.1.0'
        classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.2'
        classpath 'com.github.dcendents:android-maven-gradle-plugin:1.3'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

了解到Google studio團隊最先使用MavenCentral作為遠程倉庫下載我們用的編譯類庫的。
MavenCentral有一些問題。首先是對於開發者體驗不好,種種原因Google studio團隊遠程倉庫換成jcenter。
jcenter有一個打包工廠,每天特別多的類庫從此誕生,用於github上各種項目中。
像我們平時在app目錄下build.gradle中的dependencies中經常看到的:

compile 'com.hejunlin.superindicatorlibray:superindicatorlibray:1.0.3'

這是什麼意思呢?它實際上相當於

GROUP_ID:ARTIFACT_ID:VERSION

在這句代碼裡面的GROUP_ID是com.hejunlin.superindicatorlibray,ARTIFACT_ID是superindicatorlibray(類庫名),VERSION是1.0.3。

創建一個類module

首先在Android Studio中點擊File菜單,選擇New->New Module,然後在彈出視圖中選擇Android Library,點擊Next後填寫庫的名稱。

這裡寫圖片描述

創建完新的library後就可以寫公用部分的類代碼了,我這裡是寫superindicatZ喎?/kf/ware/vc/" target="_blank" class="keylink">vcmxpYnJheaOs0LS6w7rzo6y/z7aou7m1w9PQ0ru49nNhbXBsZdauwOC1xLLiytTV4rj2wOC/4qOsztLTw7XEysfErMjPYXBwuaSzzKOswO/D5tPQQWN0aXZpdHnWrsDgtcSjrL3Tz8LAtL7N1NphcHC5pLPM0v3Tw9XiuPbA4L/io6zU2mFwcM/CtcRidWlsZC5ncmFkbGXW0MztvNPSwMC1o7o8L3A+DQo8cD48aW1nIGFsdD0="這裡寫圖片描述" src="/uploadfile/Collfiles/20160907/20160907094357168.png" title="\" />

compile project(‘:superindicatorlibray’) //冒號後是你的類庫的名字
本地充分測試好後,接著你就上要開始上傳jcenter倉庫了。

上傳類庫到jcenter倉庫

那麼如何上傳你的類庫到jcenter倉庫?

這裡寫圖片描述

注冊Bintray用戶,Bintray是一個可以托管Android庫的平台,JCenter則由Bintray進行維護的。打開https://bintray.com/,進行注冊,然後登錄。

這裡寫圖片描述

點擊add,然後如圖填寫:

這裡寫圖片描述

填完後,如出現前面圖中那樣,有一個maven的倉庫,接下來要在這裡添加package,

這裡寫圖片描述

點擊Add New Package,如圖:

這裡寫圖片描述

現在一個空倉庫和一個package已經創建好了,接下來要在studio,寫腳本配置,上傳類庫

添加bintray插件

在module中類庫下build.gradle中添加如下腳本

apply plugin: 'com.jfrog.bintray'//添加bintray插件
apply plugin: 'com.github.dcendents.android-maven'

Bintray在上傳庫時需要一個pom文件,而這個文件可以讓Maven插件自動生成,但你還是需要給出groupId和version的值,將下面這兩行代碼添加到庫module的build.gradle中。

group = 'com.hejunlin.superindicatorlibray'
version = '1.0.3'
編譯類庫
寫過ant腳本的話,知道,ant中都是一個個target,而gadle中是task,所以接下來寫幾個task,對應分別分別生成Jar,Javadoc和JavadocsJar,將下面三個task代碼添加到庫module的build.gradle文件即可。
task generateSourcesJar(type: Jar) {
    from android.sourceSets.main.java.srcDirs 
    classifier 'sources'
}

task generateJavadocs(type: Javadoc) {
    source = android.sourceSets.main.java.srcDirs //source指定了源碼位置
    classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}

//這裡dependsOn意為僅當generateJavadocs完成後才開始本task,和ant腳本也是對應的。
task generateJavadocsJar(type: Jar, dependsOn: generateJavadocs) {         
    from generateJavadocs.destinationDir
    classifier 'javadoc'
}

將本地編譯過的類庫及源碼及doc文件上傳到Maven倉庫中package中,需要將task添加到一個archive中,只需要向庫module下的build.gradle中添加如下代碼:

artifacts {
    archives generateJavaDocsJar
    archives generateSourcesJar
}

配置local.properties添加Bintray認證

接下來還要配置local.properties添加Bintray認證,git提交時,也會讓你填用戶名和密碼,那jcenter,如何配置呢?
我們須要本地local.properties文件下配置,如果沒有沒有就創建一個,放在主工程目錄下:

這裡寫圖片描述

內容如下:

bintray.user=你的Bintray注冊時的名字
bintray.apikey=xxxxxxxxxxxxxxxxxxxxx

接下來說下這個apikey在哪?

這裡寫圖片描述

這裡寫圖片描述

輸入密碼,就可以得到這個key。接下來回到庫module下的build.gradle中添加如下腳本:

Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())

bintray {
    user = properties.getProperty("bintray.user")
    key = properties.getProperty("bintray.apikey")

    pkg {
        repo = 'maven'
        name = 'com.hejunlin.superindicatorlibray'

        version {
            name = '1.0.3-release'
            desc = "a superindicatorlibray for viewpager, banner"
            vcsTag = '1.0.3'
        }

        licenses = ['Apache-2.0']
        vcsUrl = 'https://github.com/hejunlin2013/SuperIndicator.git'
        websiteUrl = 'https://github.com/hejunlin2013/SuperIndicator'
    }

    configurations = ['archives']

}

Android Studio終端使用命令上傳

最後我們在Android studio中Terminal命令行中,執行:

這裡寫圖片描述

gradlew install

如果順利的話,過幾分鐘就會出現

這裡寫圖片描述

恭喜你,編譯成功了,去類module看,多了個build的目錄,這裡東西一會要上傳jcenter:

這裡寫圖片描述

接下來需要把build成功的文件upload到bintray上,同樣在Terminal命令行,執行如下命令:

gradlew bintrayUpload

順利的話,也會出現,和上面的圖一樣的BUILD SUCCESSFUL

Bintray中同步到Jcenter,發送打包請求

這時檢查你在bintray創建的package,你會看到對應的版本號

這裡寫圖片描述

點擊進去,如圖,首次沒有打包時,這裡是一個add to jcenter的字樣,我這裡是打了包的。就變成了下圖:

這裡寫圖片描述

點擊那個箭頭的“add to jcenter”,接下來會跳到一個Request to include package GradientUI in jcenter的頁面,

這裡寫圖片描述
填下你的groupId,直接send,就會發起一個打包版本的請求,
過幾個小時,通過jcenter那邊的審核就會在bintray上收到jcenter那邊的同意消息提醒。
恭喜你,你的類庫上傳到jcenter成功了!大家都可以用你的類庫了。

升級類庫,再打包過程

我們上傳完成後,如發現類庫中的一個bug,這就涉及到更新問題,那麼怎麼更新呢?
一句話,修改代碼後,改本地build.gradle的版本號,按上面的操作,執行gradlew install,gradlew bintrayUpload,到bintray上點擊“
Stage snapshots on oss.jfrog.org”同樣發送一個請求,不用幾分鐘,就可以用了,升級,不像首次提交那樣,非常快。馬上就你可以更新github上的引用版本號,瞬間心情爽爽哒。

這裡寫圖片描述

其實寫這篇文章,是沒有一點技術分析的過程,但是,如果當初有人寫這麼一個圖文並茂的教程。我可能不會走那麼多彎路,可以更節省我的時間,做更多有意義的事情。如果腳本什麼的,沒寫全,可以參考我的github:SuperIndicator類庫:https://github.com/hejunlin2013/SuperIndicator,喜歡可以點star。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved