2017最最最最新的Android發佈aar給別人使用方法

目測現在網上發佈aar的方法的教程都是一個版本,也就是maven-plugin爲1.3,jfrog爲1.0那個版本,老掉牙了有木有,還是自己寫個給自己備用吧。授之以魚不如授之以肉,從頭開始流程走一遍。

零、新建項目

新建一個項目起名爲YourLibraryDemo,然後新建一個Module->Library起名爲YourLibrary。
這個Module就是將來要給別人使用的你的庫了。

一、引入gradle-bintray-plugin

The Gradle Bintray Plugin allows you to publish artifacts to Bintray.
大意是這個插件允許你發佈你的作品到Bintray(某國外網站,部分地區需FQ)

gradle-bintray-plugin地址

在項目根目錄下有個build.gradle,先在這裏添加

plugins {
    id "com.jfrog.bintray" version "1.7.3"
}

上面這一步替代了舊版本中的在dependencies中添加classpath

jFrog註冊個賬戶,然後各種填完了找到自己資料裏面的API Key。

API Key

然後進YourLibrary下的build.gradle添加

bintray {
    user = System.getenv('BINTRAY_USER')
    key = System.getenv('BINTRAY_KEY')

}

要說這個System.getenv是什麼玩意兒,就是爲了防止你把你的bintray賬戶的user和key傳到github中開源了。

那麼user和key要放到哪裏呢?

回到項目的根目錄local.properties中加入

BINTRAY_USER=yzlee
BINTRAY_KEY=你的key

再回到YourLibrary下的build.gradle添加

bintray {
    user = properties.getProperty('BINTRAY_USER') //這裏注意原Demo不是這麼寫的,還有上面兩行也別忘了
    key = properties.getProperty('BINTRAY_KEY')
    //目測有三種方式打包上傳到bintray,我們要用Maven Publications模式。
    // Configurations 模式貌似只能在java plugin下使用,反正嘗試gradlew bintrayUpload之後,網站上是看不到的。
    //安卓上要用的話例子在{@link https://github.com/bintray/bintray-examples/tree/master/gradle-bintray-plugin-examples/android-maven-example}裏。
    configurations = ['archives']
    pkg {
        repo = "maven" //在bintray中的已經存在的倉庫,貌似有好多現成的比如'maven' 'nuget' 'boxes' 'registry' 'generic' 'rpm' 'opkg' 等等等等……還可以自己創建
        name = 'YourLibrary' //項目名字
        licenses = ['Apache-2.0'] //開源許可
        vcsUrl = 'https://github.com/yzlee/YourLibrary.git' //如果這個項目不存在的話,是要強制填寫的。
        //version {
        //    name = '1.0' //這個是版本號,建議不要寫,而是定義一個全局的版本號
        //}
        publish = true //一定要填寫,這個不填寫bintrayUpload默認是不發佈的!!!!!!!!
    }
}

照着安卓例子複製粘貼就行了,不過授之以漁的話還是要搞明白到底別的東西是啥。所以再看要引入的另一個包。

二、引入android-maven-gradle-plugin

android-maven-gradle-plugin 地址

找到剛剛

plugins {
    id "com.jfrog.bintray" version "1.7.3"
}

的地方添加一行

plugins {
    id "com.jfrog.bintray" version "1.7.3"
    id "com.github.dcendents.android-maven" version "1.5"
}

然後在YourLibrary下的build.gradle文件裏的最外層加上

group = 'cn.liyongzhi' //這個就是引入依賴時候的前綴了。
version = '1.0' //這就是版本,bintray{}中的版本還是不要寫了,默認用這個

至於install{}那個選項,是因爲想要同步到Maven Central給別人使用的話,除了aar還需要sourcesJar,javadocJar,以及一個叫pom.xml的東西,而install中就是這個pom。這是發佈到maven的requirements

先說sourcesJar,javadocJar……好吧沒搜到出處。拿來用吧

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
}

至於這個install不寫的話bintray上也會有pom.xml,內容只有bintray{}上填的幾行,應該也可以。

之後直接在android studio log窗口底下的teminal中打上 gradlew bintrayUpload 就好了。

如果網站上能找到了,那麼add to JCenter,等就好了,估計有時差。

出現問題

1、javadocJar編譯不過。

在library的build.gradle中添加

tasks.withType(Javadoc) {
options.addStringOption('Xdoclint:none', '-quiet')
options.addStringOption('encoding', 'UTF-8')
options.addStringOption('charSet', 'UTF-8')
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章