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')
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章