Android Studio 发布 Library 到 JCenter
JCenter 是管理包的地方,可以很方便的使用 Gradle 引用到 JCenter 里面的包,极大的方便了 Android 开发。
想引用 EventBus,一句话搞定:
compile 'org.greenrobot:eventbus:3.0.0'
现在来介绍下怎么把你的 Library 上传到 JCenter,大致的步骤是:
- 科学上网
- 注册 Bintray 账号
- 添加仓库
- 添加包
- 获取 API KEY
- 使用 Gradle 上传 Library 到 仓库
- 提交到 JCenter 等待审核
- 使用你的 Library
科学上网
最近管得严,科学上网也不容易,文章末尾提供了博主科学上网方式。
注册 Bintray 账号
进入bintray 官网,点击 Sign Up Here
进入注册页面。
注册页面填写的邮箱一定要用 GMAIL
注册成功后,登录到主页面。
添加仓库
在主页面点击 Add New Repository
添加一个 maven 仓库
填写仓库信息
填写完信息以后点 Create
按钮,仓库创建完成。
添加包
点击刚添加的仓库进入仓库详情页面,点击 Add New Package
添加包
填写包信息
点 Create Package
创建完成。
获取 API KEY
上图标识获取你的 API KEY,这个在配置 Gradle 的时候用得着。
使用 Gradle 上传 Library 到 仓库
使用人家写好的 Gradle 脚本,只需要添加一点配置就可以了。Github 项目地址 点这里
打开 Android 工程,找到 Project 的 build.gradle 文件:
加上两段代码
classpath 'com.novoda:bintray-release:0.8.0'
tasks.withType(Javadoc) {
options{
encoding "UTF-8"
charSet 'UTF-8'
links "http://docs.oracle.com/javase/7/docs/api"
}
options.addStringOption('Xdoclint:none', '-quiet')
}
第二段代码可以避免 Javadoc 失败。
在 Library 的 build.gradle 文件中添加如下代码,可以防止代码检查出异常。
android {
lintOptions {
abortOnError false
}
}
接下来配置上传 Library 信息:
publish {
userOrg = "niulinguo"
repoName = "maven"
groupId = 'com.niles.test'
artifactId = 'ttsdk'
publishVersion = '1.0.2'
desc = 'this is a desc'
website = 'https://github.com/linglongxin24/SQLite.git'
}
注意配置的信息要和刚刚在官网上填写的信息一致。
按照上面的去配置,最后使用 Gradle 引用为:
compile 'com.niles.test:ttsdk:1.0.2'
配置完成后,最后只需要执行一段 Gradle 命令
$ ./gradlew clean build bintrayUpload -PbintrayUser=BINTRAY_USERNAME -PbintrayKey=BINTRAY_KEY -PdryRun=false
其中 BINTRAY_USERNAME
就是用户名,BINTRAY_KEY
就是 API KEY。
等待2分钟左右就可以上传成功,中间可能有很多坑,我会在文章最后总结。
提交到 JCenter 等待审核
回到网页,打开刚刚创建的项目,这时会发现刚上传的 Library 已经在里面了。
提交审核页面如下图
填写 Comments 信息,点击 Send
提交审核。大概一天以后可以收到审核结果信息。
第二天:
进入官网 ,你将收到一条信息:
通过审核了有木有,比上架 iOS 容易一百倍有木有~
使用你的 Library
审核成功之后,想引用你的 Library,只需要一句话
compile 'com.niles.test:ttsdk:1.0.2'
非常炫酷!!!
可能会遇到的问题
Q:怎么科学上网?
A:
不会科学上网的 Android 开发只能是个好码农。不会科学上网,你就不能获取一手的学习资料,不能解决冷门的 BUG,不能升职加薪,不能赢取白富美,只能当个好码农。想要科学上网,加他微信 hemage99
咨询,299一年,好贵的说。
Q:Gradle 脚本执行 bintrayUpload 命令 FAILURE?
A:
1. 检查你的 userOrg
、repoName
、groupId
、artifactId
配置是否正确。
2. 检查 gradle.properties
是否配置了代理服务器信息,注释掉。
3. 重启电脑。
Q:代码混淆
A:
需要将 Library 的 build.gradle 中修改 minifyEnabled
属性:
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
不想混淆的代码可以使用 Android 注解 android.support.annotation.Keep
@Keep
public static boolean isServiceBond() {
return sTicService != null;
}
Q:技术支持
A:
需要技术支持的朋友可以加我微信哦 niulinguo12138
。
注:我使用的环境是 MacOS,对 Windows 系统不熟哦。