目的

这篇文章介绍通过Gradle把开源项目发布到公共仓库JCenter中,发布自己的android library(也就是aar)到公共的jcenter仓库。

为什么选择JCenter,因为JCenter现在是Android Studio中repositories的默认节点了,之前是Maven的,不过JCenter是兼容Maven的。

环境

Android Studio 2.2.3

参考资料

http://www.jianshu.com/p/c4f4894ad215

http://www.jianshu.com/p/6a6eca8c24c4

http://www.cnblogs.com/qianxudetianxia/p/4322331.html

申请Bintray账号

bintray上注册一个账号 建议注册个人账号

可以使用github账号直接授权登陆。

Android Studio 上传aar(Library)到JCenter-LMLPHP

Android Studio 上传aar(Library)到JCenter-LMLPHP

Android Studio 上传aar(Library)到JCenter-LMLPHP

Android Studio 上传aar(Library)到JCenter-LMLPHP

Android Studio 上传aar(Library)到JCenter-LMLPHP

记录API Key

注册后,在https://bintray.com/profile/edit 中查看,首次查看的时候提示需要输入登录密码确认。

Android Studio 上传aar(Library)到JCenter-LMLPHP

Android Studio 上传aar(Library)到JCenter-LMLPHP

创建maven仓库

Android Studio 上传aar(Library)到JCenter-LMLPHP

Android Studio 上传aar(Library)到JCenter-LMLPHP

配置build.gradle

配置插件上传到bintray需要的插件

Android Studio 上传aar(Library)到JCenter-LMLPHP

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

Android Studio 上传aar(Library)到JCenter-LMLPHP

然后在你需要发布的那个module(即是library aar)的build.gradle里配置如下内容:

1、配置插件
// 根节点添加
apply plugin: 'com.github.dcendents.android-maven'
apply plugin: 'com.jfrog.bintray'
2、配置版本
// 根节点添加
version = "0.0.1"
3、定义相关网站
// 根节点添加
def siteUrl = 'https://github.com/Javen205/JPay' // project homepage
def gitUrl = 'https://github.com/Javen205/JPay.git' // project git
4、定义Group

举个例子,当我们引用retrofit的时候是这样的:

compile 'com.squareup.retrofit2:retrofit:2.1.0

// 根节点添加
group = "com.javen205.jpay"
5、打包javadocjar和sourcejar

这也是上传到jcenter必须要的。

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
}
6、定义pom并打包aar
// 根节点添加
install {
repositories.mavenInstaller {
// This generates POM.xml with proper parameters
pom {
project {
packaging 'aar'
name 'JPay For Android'
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 'javen205'
name 'javen.zhou'
email '[email protected]'
}
}
scm {
connection gitUrl
developerConnection gitUrl
url siteUrl
}
}
}
}
}
7、上传到Jcenter仓库

上传到jcenter的网站Bintray,需要用户验证:

bintrayUser=your_user_name 我这里为javendev
bintrayApiKey=your_apikey 就是在上面记录的API Key
//配置bintray参数
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
bintray {
user = properties.getProperty("bintrayUser")
key = properties.getProperty("bintrayApiKey")
configurations = ['archives']
pkg {
repo = "maven" //跟上面创建的Maven仓库名字保持一致
name = "JPay" //发布到JCenter上的项目名字
websiteUrl = siteUrl
vcsUrl = gitUrl
licenses = ["Apache-2.0"]
publish = true
}
}

Android Studio 上传aar(Library)到JCenter-LMLPHP

Android Studio 上传aar(Library)到JCenter-LMLPHP

Android Studio 上传aar(Library)到JCenter-LMLPHP

Android Studio 上传aar(Library)到JCenter-LMLPHP

Android Studio 上传aar(Library)到JCenter-LMLPHP

Android Studio 上传aar(Library)到JCenter-LMLPHP

Android Studio 上传aar(Library)到JCenter-LMLPHP

Android Studio 上传aar(Library)到JCenter-LMLPHP

可以在Terminal中执行如下命令如果成功了就会在Lib工程build目录中自动生成docs libs

 ./gradlew clean build bintrayUpload

Android Studio 上传aar(Library)到JCenter-LMLPHP

Android Studio 上传aar(Library)到JCenter-LMLPHP

然后直接send就行(提交JCenter后groupID和在本地定义的一样,所以本地定义groupID要能标识个人,最好到 https://jcenter.bintray.com 看下有没有重复的包名

最后耐心等待Bintray审核通过。

Android Studio 上传aar(Library)到JCenter-LMLPHP

引用自己的库

1、Maven方式引用自己的库

只要在root下的build加上自己maven地址

maven{
url "https://dl.bintray.com/javendev/maven"
}

然后在app的build中加上引用即可

compile 'com.javen205.jpay:jpaylib:0.0.1'
2、compile方式引用自己的库

如果上面添加到JCenter审核通过,就可以直接在app的build中加上引用即可

compile 'com.javen205.jpay:jpaylib:0.0.1'

Android Studio 上传aar(Library)到JCenter-LMLPHP

安利时间

Android Studio 上传aar(Library)到JCenter-LMLPHP

[![License](https://img.shields.io/badge/license-Apache%202-green.svg)](https://www.apache.org/licenses/LICENSE-2.0)
[![Download](https://api.bintray.com/packages/javendev/maven/JPay/images/download.svg)](https://dl.bintray.com/javendev/maven/JPay/_latestVersion)

如遇到问题欢迎留言交流

05-11 09:23