使用Gradle(Android Studio)发布Android开源项目到jCenter
使用Android Studio进行Android开发的时候,有些第三方库的引用只需要一句话
compile 'com.squareup.picasso:picasso:2.3.2'
第一次用的时候感觉很神奇,等到自己参与到开源组件的开发的时候,也想实现这种效果,应该怎么操作呢?本文就介绍一下如何使用Gradle发布到jCenter。
一、注册账号及获取API Key
首先,我们需要一个Bintray的账号,在https://bintray.com进行注册。
网站会分配个每个注册账号一个唯一的API Key,作为身份标识,所以注册完毕之后我们需要找到API Key,进入https://bintray.com并登录,鼠标移至右上角你的用户名处,点击Your Profile,如图
然后点击头像旁边的Edit,
最后点击API Key切换到该页面,点击Show查看你的API Key并复制保存下来,接下来要用到。
二、配置Gradle
1、配置全局Gradle
找到Gradle的目录,根据你的操作系统的不同,该目录位于
Windows XP:C:\Documents and Settings\用户名\.gradle
Windows 7及以上:C:\Users\用户名\.gradle
Mac OS:/Users/用户名/.gradle
打开目录下的gradle.properties
文件(如果文件不存在则新建),添加Bintray信息到文件末尾
BINTRAY_USER为你在Bintray注册的用户名,BINTRAY_KEY则为刚才获取到的API Key。
当然,你也可以选择在每个项目中的gradle.properties
文件添加上述Bintray信息,但这样做十分繁琐,还需要将该文件添加到.gitignore中,防止泄露了个人信息。
2、配置项目Gradle
我们开发开源控件时,一般都会包含两个module,library
和demo
,demo为控件的使用示例,library才是控件的实际源码,上传到jCenter时只需要上传library模块就行。
修改项目根目录的build.gradle文件
在dependencies下添加一行
添加完之后gradle.properties
文件的内容大概如下
修改项目library目录的build.gradle文件
在文件末尾添加一行:apply from: 'bintray.gradle'
bintray.gradle
暂时还不存在,我们需要在library目录下创建它,并修改它的内容如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
group = PROJ_GROUP
version = PROJ_VERSION
project.archivesBaseName = PROJ_ARTIFACTID
apply plugin: 'com.jfrog.bintray'
//apply plugin: "com.jfrog.artifactory"
apply plugin: 'maven-publish'
task sourcesJar(type: Jar) {
from android.sourceSets.main.java.srcDirs
classifier = 'sources'
}
task javadoc(type: Javadoc) {
source = android.sourceSets.main.java.srcDirs
classpath += configurations.compile
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
version true
links "http://docs.oracle.com/javase/7/docs/api"
title PROJ_ARTIFACTID
}
}
def pomConfig = {
licenses {
license {
name PROJ_LICENSE
url PROJ_LICENSE_URL
distribution "repo"
}
}
developers {
developer {
id DEVELOPER_ID
name DEVELOPER_NAME
email DEVELOPER_EMAIL
}
}
}
publishing {
publications {
mavenJava(MavenPublication) {
artifactId PROJ_ARTIFACTID
artifact javadocJar
artifact sourcesJar
pom.withXml {
def root = asNode()
root.appendNode('description', PROJ_DESCRIPTION)
root.children().last() + pomConfig
def dependenciesNode = root.appendNode('dependencies')
configurations.compile.allDependencies.each {
if (it.group && it.name && it.version) {
def dependencyNode = dependenciesNode.appendNode('dependency')
dependencyNode.appendNode('groupId', it.group)
dependencyNode.appendNode('artifactId', it.name)
dependencyNode.appendNode('version', it.version)
}
}
}
}
}
}
afterEvaluate {
publishing.publications.mavenJava.artifact(bundleRelease)
}
bintray {
user = hasProperty("bintrayUser")?getProperty("bintrayUser"):getProperty("BINTRAY_USER")
key = hasProperty("bintrayKey")?getProperty("bintrayKey"):getProperty("BINTRAY_KEY")
publications = ['mavenJava']
publish = true
pkg {
repo = 'maven'
name = PROJ_NAME
licenses = [PROJ_LICENSE]
vcsUrl = PROJ_VCSURL
userOrg = user
version {
name = PROJ_VERSION
released = new Date()
desc = PROJ_VERSION_DESC
vcsTag = PROJ_VERSION
}
publicDownloadNumbers = true
}
}
84行和85行用到的就是刚才设置的全局gradle变量,Bintray的用户名和API Key,然后第1行的PROJ_GROUP
和第2行的PROJ_VERSION
又是啥?请继续往下看。
修改项目根目录的gradle.properties文件
在文件末尾添加如下内容
最终项目的引用方式为
可以发现,引用形式是PROJ_GROUP:PROJ_ARTIFACTID:PROJ_VERSION
。
三、上传到Bintray
由于在Windows和Mac OS下使用命令行的方法不一样,先说说怎么在Android Studio里上传吧。上面的步骤执行完之后,先同步一下项目,即Sync Project with Gradle Files
,然后点击Gradle,找到library的Task下的publishing里的bintrayUpload,双击执行上传,等待上传完成即可。
升级Android Studio 2.3之后发现这个方法会导致部分文件没有生成,所以只能采用命令行上传的方法了。
在macOS下打开终端cd到项目目录,执行./gradlew build bintrayUpload
即可,在Windows下估计也是类似的,我没试过,就不误导大家啦。
四、包含项目到jCenter
进入https://bintray.com并登录,找到你刚才上传的项目点进去,点击右下角的
然后写几句你的项目的介绍,然后Send,之后等待jCenter的审核,审核通过之后就可以使用
compile 'com.celerysoft:materialdesigndialog:1.0.0'
来引用你的项目了。
除非另有声明,本博客所有文章采用的授权方式为 自由转载-非商用-非衍生-保持署名 ,转载请务必注明出处,谢谢。