Maven仓库
在用Eclipse+Ant组合的时候,我们往往引入一个库都是下载jar包或者aar包放到lib目录下,然后右键添加引用。
But!这并不友好,比如当升级版本库的时候往往需要下载新的包替换引用,非常麻烦。
所以,当升级到Android Studio + Gradle 组合后 gradle中提供了可以从远端拉取jar包和aar包引入本地。
这个概念我们懂了。但是这个下载源是哪呢,就是maven仓库。那maven仓库的地址是什么呢,是不是Android Studio都是从一个仓库获取包呢,这时候就需要了解 JCenter、MavenCenter、JitPack 了
JCenter、MavenCenter、JitPack
这3个名词即具体的Maven仓库的地址,他们都是Maven仓库,但是属于不同的服务源。总的来说,只有两个标准的Android library文件服务器:Jcenter 和 Maven Central,现在JitPack也流行了起来。(比较方便)
从哪引用这几个Maven仓库呢,就是在根目录build.gradle中
allprojects {
repositories {
jcenter() //JCenter仓库
mavenCenter() //mvenCenter仓库
maven { url "https://jitpack.io" } // jitpack仓库
}
}
具体使用哪个要看开源项目把Library传到了哪个仓库。它就会要求你在这加哪个仓库。
起初,Android Studio 选择Maven Central作为默认仓库。如果你使用老版本的Android Studio创建一个新项目,mavenCentral()会自动的定义在build.gradle中。
但是Maven Central的最大问题是对开发者不够友好。上传library异常困难。上传上去的开发者都是某种程度的极客。同时还因为诸如安全方面的其他原因,Android Studio团队决定把默认的仓库替换成jcenter。正如你看到的,一旦使用最新版本的Android Studio创建一个项目,jcenter()自动被定义,而不是mavenCentral()
我们发现第三个jitpack的写法和前2个不一样,写法是maven {} 里面加入地址,其实这个才是maven仓库标准引用方法,jcenter和mavenCenter由于是标准的Android仓库,相当于定义了一个别名。
所以一些自定义的仓库都是这种写法然后填入自己的仓库网址,比如Fabric.io的library
Bintray是什么
Bintray其实只是一个网站,他们负责维护JCenter这个库,就是说JCenter库是托管在Bintray网站上的。
但是Bintray不只只有JCenter库,每个人都可以在上面创建自己的账号,生成自己的maven仓库,比如我的账号tangsiyuan下面创建了一个名叫"maven"的maven仓库。那我的maven仓库地址就是
https://dl.bintray.com/tangsiyuan/maven
当然也可以再build中引入
maven { url 'https://dl.bintray.com/tangsiyuan/maven' }
而JCenter仓库只是Bintray官方账户创建的一个maven仓库,地址是
https://jcenter.bintray.com
其实个人的仓库和JCenter是平级的,只不过JCenter被Android Studio设为了标准仓库。