简单的普及下关于android
的依赖仓库,有两种分别是Jcenter
与Maven Central
其实不论是Jcenter
仍是Maven Central
都是Maven
库。android
Jcenter
是由bintray.com
维护,在Android Studio
的项目根目录的build.gradle
中咱们会看到自动帮咱们实现的Jcenter
nginx
buildscript { repositories { jcenter() } }
固然也能够在build.gradle
中定义Maven Central
git
buildscript { repositories { mavenCentral() } }
至于在Android Studio
中为何默认使用Jcenter
缘由仍是有的,感兴趣的能够本身去查,我要说的一点就是,这里你能够认为Jcenter
是Maven Central
的超集,这样就能更好的理解为何要使用Jcenter
了。github
这里要了解一下咱们看到的依赖所定义的方式,实际上是有格式的并非随便乱写的。其实你只要日常够仔细就能发现他们的格式是同样的。
由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
sql
http://jcenter.bintray.com/com/jakewharton/butterknife/6.1.0
apache
http://www.codesocang.com/anzhuoyuanma/
经过该连接下载到本地再与咱们的项目结合。api
下面正式进行实现依赖的实现app
首先要在https://bintray.com 中注册帐号,注册都是很简单的就不所说了。
而后回到主页在你的Owned Repositories
中看下你是否已经添加了maven
。maven
第一次注册的应该没有,因此咱们要先New Repository
建立maven
gradle
建立以后会自动跳转到maven
中,你会发现没有package
,咱们能够Add New Package
这种相信都会,我这里要说的是另一种,咱们直接在Android Studio
中进行配置而后上传到Bintray
。
为了使别人能更好的使用,咱们通常在实现本身的依赖的时候会把实现的该依赖的源码做为一个Module
,再把实例代码做为Application Module
。因此咱们要事先处理好Module
,下面是我弄好的示例
在分了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
找到local.properties
文件在其中添加
bintray.user=xxxx bintray.apikey=xxx
bintray.user
是注册的user,至于bintray.apikey
在JFrog Bintray
中的Your Profile
的Edit
页面的API Key
中能找到。
在其中添加以下示例代码:
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
打开Android Studio
的终端
在终端输入
./gradlew install
出现BUILD SUCCESSFUL
就没问题
在终端输入
./gradlew bintrayUpload
同样的出现BUILD SUCCESSFUL
就没问题
而后你进入JFrog Bintray
进入maven
你就会发现其中多了一个package
,若是有的话那就表示完美成功。
完成了上面的步骤并不表明别人能够直接使用
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/com/idisfkj/picker/mypicker/1.2.1 查看。
同时别人也能使用你的依赖,经过以下简单的配置
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
中
好了,就到这里了,但愿有所帮助!