咸鱼

咸鱼是以盐腌渍后,晒干的鱼

0%

android-library-jcenter

参考:

  1. AndroidStuio快速发布开源项目到Jcenter/Bintray
  2. 创建并发布一个 Android 库
  3. Android Library上传到GitHub并一键发布到Bintray或JCenter

** 本文只记录操作步骤 **
** 本文只记录操作步骤 **
** 本文只记录操作步骤 **

apikey

登录 bintray 拿到apikey,不需要创建仓库,默认已有maven/nuget等7个仓库,我们用maven就可以,当然也可以创建一个属于自己的maven仓库。

创建库项目

以下是我的项目目录结构,app是示例Android app,pageablelibrary就是我们要发布的module。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
.
├── app
├── build.gradle
├── gradle
│   └── wrapper
│   ├── gradle-wrapper.jar
│   └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── local.properties
├── pageablelibrary
│   ├── build.gradle
│   ├── libs
│   ├── pageablelibrary.iml
│   └── proguard-rules.pro
├── PageableLibrary.iml
├── README.md
└── settings.gradle

安装插件

./build.gradle

1
2
3
4
5
6
7
dependencies {
classpath 'com.android.tools.build:gradle:3.1.3'

//新增
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.2'
}

./pageablelibrary/build.gradle

1
2
3
4
apply plugin: 'com.android.library'
//新增
apply plugin: 'com.github.dcendents.android-maven'
apply plugin: 'com.jfrog.bintray'

配置发布信息

./pageablelibrary/build.gradle 在最后一行加入以下内容

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

// 项目引用的版本号,比如 implementation 'com.kevinvane:demo:1.0.1'
group = "com.kevinwen"
version = "1.0.1"

def siteUrl = 'https://github.com/kevinvane/PageableLibrary' // 项目主页。
def gitUrl = 'git@github.com:kevinvane/PageableLibrary.git' // Git仓库的url。

install {
repositories.mavenInstaller {
pom {
project {
packaging 'aar'
//项目描述
name 'Pageable Library For Android'// 可选,项目名称。
description 'The Android Pageable Library.'// 可选,项目描述。
url siteUrl

licenses {
license {
name 'The Apache Software License, Version 2.0'
url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
}
}

//填写开发者基本信息,复制我的,这里需要修改。
developers {
developer {
id 'kevinenjoy ' // 开发者的id。
name 'Sam' // 开发者名字。
email 'kevinwenwork@qq.com' // 开发者邮箱。
}
}

scm {
connection gitUrl
developerConnection gitUrl
url siteUrl
}
}
}
}
}
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))
failOnError false // 忽略注释语法错误,如果用jdk1.8你的注释写的不规范就编译不过。
}
task javadocJar(type: Jar, dependsOn: javadoc) {
classifier = 'javadoc'
from javadoc.destinationDir
}
artifacts {
archives javadocJar
archives sourcesJar
}

// 这里是读取Bintray相关的信息,我们上传项目到github上的时候会把gradle文件传上去,所以不要把帐号密码的信息直接写在这里,写在local.properties中,这里动态读取。
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
bintray {
user = properties.getProperty("bintray.user") // Bintray的用户名。
key = properties.getProperty("bintray.apikey") // Bintray刚才保存的ApiKey。

configurations = ['archives']
pkg {
repo = "maven"
name = "PageableLibrary"// 发布到Bintray上的项目名字,不是引用的名称
userOrg = user
websiteUrl = siteUrl
vcsUrl = gitUrl
licenses = ["Apache-2.0"]
publish = true
}
}

配置隐私信息

以下两行是bintray的用户名称和apikey,这是很重要的信息,我们放在./local.properties文件保存

1
2
user = properties.getProperty("bintray.user") // Bintray的用户名。
key = properties.getProperty("bintray.apikey")

./local.properties

1
2
bintray.user=kevinenjoy
bintray.apikey=xxxx

执行命令发布到 bintray

1
2
3
4
5
$ ./gradlew install
$ ./gradlew bintrayUpload

BUILD SUCCESSFUL in 13s
29 actionable tasks: 2 executed, 27 up-to-date

如果有 BUILD SUCCESSFUL提示信息,表示成功了,登录到 bintray 看一下maven仓库,发现我们的库已经发布上来了。
目前为止,我们已经把库发布到了 bintray

发布到 jcenter

JCenter是Android默认使用的仓库,登录到 bintray,进入库项目,单击 Add to JCenter 按钮,填一下简介信息,提交审核,审核通过就行了。

引用

如果通过审核,直接引用就可以了

1
implementation 'com.kevinwen:pageablelibrary:1.0.1@aar'

没有通过审核一样可以用,只不过要指定repositories

1
2
3
4
5
6
7
8
9
10
11
12
13
14
buildscript {

repositories {
google()
//指定maven仓库为我账号的maven账号
maven {
url 'https://dl.bintray.com/kevinenjoy/maven'
}
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.2'
}
}

注意:https://dl.bintray.com/kevinenjoy/maven 中的 kevinenjoy/maven就是我们配置项目的地址,其中kevinenjoy是我们的账号,maven是我们账号里面的maven仓库。

总结

jcenter配置还是有点复杂的,而且编译提交容易出现错误,这时候有一个更加简单的仓库JitPack。JitPack不用本地做配置,只要将项目放在github上,release一个版本,将URL放在JitPack上可以了,是不是很方便?简单三步发布自己的开源库到JitPack