Vary's Blog

Android快速发布项目到jcenter

最近在整理项目的时候,想要上传至Jcenter,可以让大家一句代码就可以引入。就在网上寻找,然而网上有些方法实在是太麻烦,故写此篇文章将心酸历程写下,让各位老司机少走弯路,快速发布

注册Bintray账号

个人注册 Bintray 地址:https://bintray.com/signup/oss
不要去 https://bintray.com/login 注册,这个千万不能搞错。
注意一下邮箱问题:不能用QQ,163等,推荐用Gmail,国内用户可以使用github的账号进行登陆完成注册,也要注意邮箱问题。

获取信息:登陆后在首页右上角点击用户名进入个人主页,然后点击用户名下面的Edit Profile进入个人信息编辑页面,接下来点击页面左边列表的最后一项API Key,保存下来,因为将项目发布到JCenter时会用到它。

获取 API key

Add New Repository

注册完之后,第一件事情是”Add New Repository”。

Add New Repository

点击之后就是创建Repository了,记得下图中红框的位置一定要填小写的maven,否则无法发布上去:

Repository创建完之后,我们就可以正式进入发布项目之旅了。

Android项目的发布步骤

1. 修改根目录下build.gradle

先添加

1
2
3
4
5
6
7
8
buildscript {
...
dependencies {
...
classpath 'com.novoda:bintray-release:+'
}
}

以及

1
2
3
4
5
6
7
8
9
10
11
12
allprojects {
repositories {
jcenter()
}
//加上这些
tasks.withType(Javadoc) {
options{ encoding "UTF-8"
charSet 'UTF-8'
links "http://docs.oracle.com/javase/7/docs/api"
}
}
}

2.对需要发布的module,修改build.gradle

先添加插件

1
apply plugin: 'com.novoda.bintray-release'

再加上publish

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
allprojects {
repositories {
jcenter()
}
//加上这些
tasks.withType(Javadoc) {
options{ encoding "UTF-8"
charSet 'UTF-8'
links "http://docs.oracle.com/javase/7/docs/api"
}
}
}
publish{
userOrg = 'zchu' // Bintray 账号名
groupId = 'com.zchu'
artifactId = 'zlog'
publishVersion = '1.0.0'
desc = 'This is a log print library for android'
website = 'https://github.com/z-chu/ZLog' //github 地址
}

假如 JCenter 审核通过,就可以用多种方式添加该库了。
使用gradle添加该库:

1
compile 'com.zchu:zlog:1.0.0'

使用maven添加该库:

1
2
3
4
5
6
<dependency>
<groupId>com.zchu</groupId>
<artifactId>zlog</artifactId>
<version>1.0.0</version>
<type>pom</type>
</dependency>

3. 发布

执行下面的语句

./gradlew clean build bintrayUpload -PbintrayUser={Bintray的用户名} -PbintrayKey={API Key} -PdryRun=false

但是,我相信绝大多数人都会遇到BUILD FAILED 的情况的。
打包过程遇到的错误大致总结一下就是

1
Javadoc generation failed. Generated Javadoc options file (useful for troubleshooting): ‘路径’
  • 错误: 编码GBK的不可映射字符 ——注释不要用中文,或者修改项目的字符编码
  • 错误: 编码GBK的不可映射字符 ——注释不要用中文,或者修改项目的字符编码
1
Could not create package ‘路径’: HTTP/1.1 401 Unauthorized [message:This resource requires authentication]
  • 你一定是用户名或者APIKey填错了。

4.发布完之后

不是执行完上述的语句就算完了,还需要通过 JCenter 的审核。

当然不通过审核也是可以使用的,在根目录的build.gradle中添加形如下面的脚本

1
2
3
4
5
6
allprojects {
repositories {
jcenter()
maven{url 'https://dl.bintray.com/zchu/maven/'}
}
}

最为重要的是下面这一句,但是通过审核的话完全不需要添加这一句。

1
maven{url 'https://dl.bintray.com/zchu/maven/'}

所以,我们需要通过JCenter审核,否则没有意义。
add to JCenter

5.审核通过

JCenter 会通过邮件和站内消息的形式通知到你,一般情况是几个小时之后,审核通过后,就可以尽情地在项目中使用了。

发布成功

6.版本更新

发布新版本时,必须修改publish的publishVersion且高于原先的版本号。如果publishVersion已经存在,上传时会报错并给出如下类似的提示,除非删除原来的版本。

1
2
3
4
5
6
7
8
* What went wrong:
Execution failed for task ':saf-aop:bintrayUpload'.
> Could not upload to 'https://api.bintray.com/content/fengzhizi715/maven/saf-aop/1.0.0/com/safframework/saf-aop/1.0.0/saf-aop-1.0.0-sources.jar': HTTP/1.1 409 Conflict [message:Unable to upload files: An artifact with the path 'com/safframework/saf-aop/1.0.0/saf-aop-1.0.0-sources.jar' already exists]
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED

上传完成后,点击下图按钮即可。

更新版本

更新的审核比较快,稍等一下就行了。

好了,教程到此结束了,是不是 so easy !呢???

Vary Zhao wechat
欢迎你扫描上面的二维码,加我微信