为什么jcenter可以在mavenCentral可以解决依赖关系?

Tim*_*Tim 7 android gradle maven-central android-studio jcenter

我有一个只有两个依赖项目的项目,相对标准appcompat-v7ion.所以我的gradle文件非常简单:

项目

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.3.0'
    }
}

allprojects {
    repositories {
        jcenter()
    }
}
Run Code Online (Sandbox Code Playgroud)

应用

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.0"

    defaultConfig {
        applicationId "zz.yy.xx"
        minSdkVersion 18
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:23.0.1'
    compile 'com.koushikdutta.ion:ion:2.1.6'
}
Run Code Online (Sandbox Code Playgroud)

事实上,我认为我自己添加的唯一内容就是ion依赖.

我不是一个gradle这个大师,但我已阅读多个地方在于jcenter是mavenCentral的所谓的超集.特别是这个答案

JCenter本身是Maven Central顶部的薄单板.它代理它(或多或少成功)并添加其他组件.两者都托管在CDN网络上,性能极高.Maven Central本身是所有Eclipse,Apache和大多数其他开源项目的目标,没有它,JCenter将基本上是空的.

这一个

你永远不需要两者.JCenter是Maven Central的超集,它应该足以满足所有依赖项.

我和Bintray背后的公司JFrog和[神器],请参阅我的个人资料以获取详细信息和链接.

让我相信它们基本上是相同的,只要提供软件包,只有jcenter在某种程度上更好.特别是后一个答案的海报似乎知道他在说什么.

但是,我不能用jcenter引入离子依赖.我总是得到这个错误

在此输入图像描述

为了使它工作,我还需要添加mavenCentral.所以上面的gradle片段不起作用,但如果我allprojects改为这个

allprojects {
    repositories {
        jcenter()
        mavenCentral()
    }
}
Run Code Online (Sandbox Code Playgroud)

它神奇地开始工作.

这怎么可能?我已经确认两者都提供了包裹:

Gradle设置

在此输入图像描述

我尝试过本地包装器没有成功.

Android Studio 1.3.2
Gradle 1.3.0