背景:我本地有一基础library库,每次创建项目选择依赖该库,一次,发现改库中有一处地方需要修改,这时候你发现之前该library的项目又得删除然后导入修改后的library。过程会超级麻烦,要是能够像其他第三库一样,通过 implementation XXX ,就简便很多。
概念普及
JCenter是什么?
jcenter是一个由 bintray.com维护的Maven仓库。一般我们会这样定义使用的仓库:
repositories {
jcenter()
}
Maven仓库又是什么?
你可以理解为存放我们Library的文件服务器。
我们在使用一些开源库的时候,可能会看到在项目根目录下的build.gradle有如下配置:
allprojects {
repositories {
mavenCentral()
}
}
mavenCentral又是什么?
mavenCentral跟jcenter一样,都是maven仓库,只是存放的地方不一样,不用猜了,它们半毛钱关系都没有,有一段时间Android的默认仓库是mavenCentral,但后来由于它对开发者不太友好,就把默认仓库换成了jcenter。
更加详细的说明,可以参考以下文章:
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0623/3097.html
继续
一.创建Library
首先创建一个Module,右键project->new Module->Android Library,创建好一个library
我这里创建了一个common的library.简单的添加了几个类。
二.应用bintray插件
如果想在AS通过bintrayUpload命令上传library就必须在根gradle下引用相应的插件,配置如下:
在project下的build.gradle下面添加
classpath 'com.novoda:bintray-release:0.8.0'
在Library下的build.gradle下添加
apply plugin: 'com.novoda.bintray-release'
publish {
userOrg = 'llxqb' //注册Bintray的用户名
groupId = 'com.liliu.app.addcartanimmaven'//组ID 一般是应用的包名
artifactId = 'AddCartAnimMaven'//组件标示
publishVersion = '1.0.0'//版本
desc = 'AddCartAnimMaven使用'
website = 'https://github.com/llxqb/AddCartAnim'//如果有上传GitHub可以填写URL
}
//避免乱码
allprojects {
tasks.withType(Javadoc) {
options {
encoding "UTF-8"
charSet 'UTF-8'
links "http://docs.oracle.com/javase/7/docs/api"
}
}
}
apply plugin: 'com.novoda.bintray-release'放在apply plugin: 'com.android.library'下面
三.在bintray.com注册账号
然后你需要去bintray上注册账号 ,https://bintray.com,
四.新建项目
找到Add New Repository,创建项目。
五.获取api key
创建好了之后拿到你的api key,如下获取
点击查看,进行保存。
六.生成库文件
在Sync Now 构建之后,在AS右侧Gradle的module模块下会生成一个upload文件,双击uploadArchives,会在项目目录下生成repository文件,打开看是aar包,可知library被添加成aar包了。
七.上传到jenter库
在AS执行窗口Terminal 执行命令:
gradlew clean build bintrayUpload -PbintrayUser=你的bintray账号 -PbintrayKey=第五步api key -PdryRun=false
八.最后打开bintray网站查看项目详情
点击 Add to JCenter 提交审核,审核通过会在项目左下侧显示出最终可以使用的地址,然后在build.gradle中进行使用。
八.使用中的坑
一般都是gradle版本不对应,jdk版本不对应
注意一点的就是bintray中创建项目时name 填maven,否则会有
Bintray- HTTP/1.1 404 Not Found [message:Repo 'maven' was not found]异常