使用Android Studio发布开源库到Bintray/Jcenter
Jcenter:一个代码库,相当于一个公共的存储容器,简单的来讲就是你把你写好的aar文件及一些文档描述文件之类的东西打包上传到Jcenter服务器上,其他人就可以通过Jcenter服务器下载到你上传的包了。
Bintray:Bintray是负责维护Jcenter仓库的网站,也就是说Jcenter的代码库是托管到Bintray上的。有个朋友举了个很形象的栗子说把Jcenter看做是位于某地的仓库,Bintray是送货的卡车,你写的库就是货了。实际上Bintray不仅支持Jcenter库还支持很多平台,Jcenter只是众多平台中的一个,每个人也都可以在Bintray创建账户生成自己的maven仓库,下文就会带着大家创建一个自己的maven仓库,同时也将该类库上传到Jcenter中。
- 注册Bintray账号
- 注册成功后 创建仓库 点击Add New Repository
- 配置仓库信息,注意:Name为仓库名后面会用到 Type选择Maven Licenses选择Apache-2.0
- 上传module,介绍一种配置极简的方法
a. 在project下的build.gradle中配置
dependencies {
classpath 'com.android.tools.build:gradle:3.4.1'
//注意:bintray版本和gradle版本有对应关系,根据自己的gradle版本改一下,否则编译不通过
classpath 'com.novoda:bintray-release:0.9.1'
}
b. 在需要上传的module下的build.gradle中配置
apply plugin: 'com.novoda.bintray-release'
c. 基本配置信息,配置在module下build.gradle的最外层,我把这些变量值定义在了根目录下的gradle.properties中
publish {
artifactId = ARTIFACT_ID // 你的模块名称,唯一
userOrg = USER_ORG // bintray用户名
groupId = GROUP_ID // 模块目录
repoName = REPO_NAME // 此字段为你的仓库名称,默认为'maven'
uploadName = ARTIFACT_ID
publishVersion = VERSION // 所需上传类库的版本号,如果提交新版本,版本号需要+1否则提交bintray会失败
desc = DESC // 描述信息
website = WEB_SITE // 网页,一般就是该类库的源码地址
licences = [APACHE_LICENCES]
}
d. 配置完成,在AS的Terminal窗口执行上传命令
Window:
gradlew clean build bintrayUpload -PbintrayUser=******** -PbintrayKey=**************************************** -PdryRun=false
Mac:
./gradlew clean build bintrayUpload -PbintrayUser=******** -PbintrayKey=**************************************** -PdryRun=false
// PbintrayUser:替换为你的bintray用户名,我的是kwunyamshan
// PbintrayKey:替换为你的Key
Key如何获取? 注册登录bintray后 点击右上角头像 ↓
- Terminal窗口执行命令 等控制台输出SUCCESSFUL,回到Bintray首页选择刚才创建的MyRepo仓库,就能看到刚上传成功的库了
- 上传到Jcenter,找到该类库 右上角Actions-> Add to Jcenter 添加一些描述信息提交(直接提交可能不通过) 等审核通过就可以使用了
- 使用: 在app中引用该远程类库:在project下的build.gradle配置maven地址
repositories {
google()
jcenter()
//配置maven地址
maven{url 'https://dl.bintray.com/kwunyamshan/MyRepo'}
}
URL的获取 点击刚才创建的仓库MyRepo ↓
- 在app下的build.gradle引用该类库
dependencies {
...
implementation 'com.wh.repo:bintraylib:1.0.2'
//路径规则:GROUP_ID :ARTIFACT_ID:VERSION,把定义在了根目录下的gradle.properties的变量名替换成变量值
//对应的就是:com.wh.repo:bintraylib:1.0.2
}
- 以上已经完成了所有配置,运行app,弹出Bintray~的吐司表示远程仓库配置成功
当然你也可以引用发布到Jcenter中的类库,那么第7步可以省略,有 jcenter()就可以了,不过前提是Jcenter审核通过
如果你也用Github维护某个类库的源码那么你可以解锁一个小有b格的小徽章咯
进入你创建的仓库-> 找到你提交到Bintray的类库->点击Version栏中的Badge复制这个链接到你的ReadMe中吧~