前言
写这篇文章其实我是痛苦的,哎!说出来都是泪啊。。。今天在JFrog Bintray
中不小心把我Repositories
中原来的maven
中的开源项目给删除了。导致原来的依赖全部没了,找了半天也没找到要怎么才能恢复。现在想到的也只能重新发布一下。可能还有很多人不知道如何实现像我们日常添加别人的依赖一样这样简单的方式。所以顺便在这里简单的介绍下我们写的项目如果要别人也能随时使用,如何实现。
Android仓库
简单的普及下关于android
的依赖仓库,有两种分别是Jcenter
与Maven Central
其实不管是Jcenter
还是Maven Central
都是Maven
库。
Jcenter
Jcenter
是由bintray.com
维护,在Android Studio
的项目根目录的build.gradle
中我们会看到自动帮我们实现的Jcenter
buildscript {
repositories {
jcenter()
}
}
Maven Central
当然也可以在build.gradle
中定义Maven Central
buildscript {
repositories {
mavenCentral()
}
}
至于在Android Studio
中为什么默认使用Jcenter
原因还是有的,感兴趣的可以自己去查,我要说的一点就是,这里你可以认为Jcenter
是Maven Central
的超集,这样就能更好的理解为什么要使用Jcenter
了。
gradle获取library
这里要了解一下我们看到的依赖所定义的方式,其实是有格式的并不是随便乱写的。其实你只要平常够仔细就能发现他们的格式是一样的。
由GroupId
、ArtifactId
与VersionId
组成。例如com.jakewharton:butterknife:6.1.0'
它的GroupId
是com.jakewharton
,ArtifactId
是butterknife
,VersionId
是6.1.0
。现在看这些依赖是不是更清晰了呢。当我们添加了依赖之后gradle
会先去Maven
中查找是否有该library
如果有就会使用上面定义的形式下载http://jcenter.bintray.com/GroupId/ArtifactId/VersionId
http://jcenter.bintray.com/com/jakewharton/butterknife/6.1.0
通过该链接下载到本地再与我们的项目结合。
下面正式进行实现依赖的实现
注册
首先要在https://bintray.com 中注册账号,注册都是很简单的就不所说了。
然后回到主页在你的Owned Repositories
中看下你是否已经添加了maven
。
第一次注册的应该没有,所以我们要先New Repository
创建maven
创建之后会自动跳转到maven
中,你会发现没有package
,我们可以Add New Package
这种相信都会,我这里要说的是另外一种,我们直接在Android Studio
中进行配置然后上传到Bintray
。
代码中配置
分离成多个Module
为了使别人能更好的使用,我们一般在实现自己的依赖的时候会把实现的该依赖的源码作为一个Module
,再把实例代码作为Application Module
。所以我们要事先处理好Module
,下面是我弄好的示例
添加bintray插件
在分了Module
之后,首先在项目的根目录
的build.gradle
的dependencies
中添加bintray
插件
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.2'
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.3
添加bintray认证
找到local.properties
文件在其中添加
bintray.user=xxxx
bintray.apikey=xxx
bintray.user
是注册的user,至于bintray.apikey
在JFrog Bintray
中的Your Profile
的Edit
页面的API Key
中能找到。
修改Module中的build.gradle
在其中添加如下示例代码:
apply plugin: 'com.android.library'
ext {
bintrayRepo = 'maven'
bintrayName = 'mypicker'
publishedGroupId = 'com.idisfkj.picker'
libraryName = 'MyPicker'
artifact = 'mypicker'
libraryDescription = 'A pickerView on Android'
siteUrl = 'https://github.com/idisfkj/idisfkj.picker'
gitUrl = 'https://github.com/idisfkj/idisfkj.picker.git'
libraryVersion = '1.2.1'
developerId = 'idisfkj'
developerName = 'idisfkj'
developerEmail = 'idisfkj@qq.com'
licenseName = 'The Apache Software License, Version 2.0'
licenseUrl = 'http://www.apache.org/licenses/LICENSE-2.0.txt'
allLicenses = ["Apache-2.0"]
}
同时在最后添加两个脚本
apply from: 'https://raw.githubusercontent.com/nuuneoi/JCenter/master/installv1.gradle'
apply from: 'https://raw.githubusercontent.com/nuuneoi/JCenter/master/bintrayv1.gradle'
这是我这个依赖的示例。其中bintrayRepo
是默认的使用maven
,mypicker
是建立的package name
,siteUrl
是你的项目地址,我的项目在github上,所以是github项目的地址形式。gitUrl
是VCS
。其他应该没什么问题,相应的改成自己的信息。
这样就构建好了依赖com.idisfkj.picker:mypicker:1.2.1
上传到bintray
打开Android Studio
的终端
编译library文件
在终端输入
./gradlew install
出现BUILD SUCCESSFUL
就没问题
上传
在终端输入
./gradlew bintrayUpload
一样的出现BUILD SUCCESSFUL
就没问题
然后你进入JFrog Bintray
进入maven
你就会发现其中多了一个package
,如果有的话那就表示完美成功。
同步到Jcenter
完成了上面的步骤并不代表别人可以直接使用
dependencies {
compile 'com.idisfkj.picker:mypicker:1.2.1'
}
还要添加
repositories {
maven {
url 'https://dl.bintray.com/idisfkj/maven/'
}
}
所以我们要同步到Jcenter
中,怎么同步呢?别急,只要在你刚刚生成的package
中点击Add to Jcenter
即可。
进去之后直接发送就可以,不需要填写什么。
最后就是等待了。几个小时之后你会收到考核通过的消息,再返回package
就会发现Linked to
发生了变化。
现在你也可以通过http://jcenter.bintray.com/co... 查看。
同时别人也能使用你的依赖,通过如下简单的配置
dependencies {
compile 'com.idisfkj.picker:mypicker:1.2.1'
}
版本更新
对于版本更新,只要更改上面配置的版本号libraryVersion = '1.2.1'
改成你要更新的版本,其它不变。再重新上传到bintray
。
总结
我这里再来整理下上传的思路。
- 既然要上传到
Jcenter
上,自然要去https://bintray.com 中注册账号 - 根据自己的需求创建
maven
的Repository
- 把项目分离成
Module
- 在项目根目录的
build.gradle
中添加bintray
插件 - 在
local.properties
中添加bintray
认证 - 修改
Module
中的build.gradle
中的配置 - 在
Android Studio
终端使用./gradlew xxx
上传 - 最后在
JFrog Bintray
中同步到Jcenter
中
好了,就到这里了,希望有所帮助!
欢迎访问:https://idisfkj.github.io/arc...