【问题标题】:How to include multiple Repositories in build.gradle?如何在 build.gradle 中包含多个存储库?
【发布时间】:2015-03-21 23:49:32
【问题描述】:

Android Studio 不允许我构建它。它说 com.mixpanel.blahblahblah 没有找到。 com.mixpanel.blahblahblah 来自 mavenCentral() 我知道问题是因为它不识别 mavenCentral() 因为它只识别另一个 repo。我如何才能同时包含这两者并使该项目正常运行?

apply plugin: 'com.android.application'
apply plugin: 'crashlytics'

buildscript {
    repositories {
        maven { url 'http://download.crashlytics.com/maven' }
    }

    dependencies {
        classpath 'com.crashlytics.tools.gradle:crashlytics-gradle:1.+'
    }
}


repositories {
    maven { url 'http://download.crashlytics.com/maven' }
    mavenCentral()
}


android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"

    defaultConfig {
        applicationId "co.dilmile.dilmile"
        minSdkVersion 9
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:21.0.3'
    compile 'com.parse.bolts:bolts-android:1.1.2'
    compile 'com.loopj.android:android-async-http:1.4.6'
    compile 'com.google.code.gson:gson:2.3.1'
    compile 'com.facebook.android:facebook-android-sdk:3.20.0'
    compile 'com.android.support:support-v4:21.0.3'
    compile 'org.roboguice:roboguice:3.+'
    compile 'com.google.code.findbugs:jsr305:1.3.9'
    provided 'org.roboguice:roboblender:3.+'
    compile 'com.crashlytics.android:crashlytics:1.+'
    compile 'com.mixpanel.android:mixpanel-android:4.5.3'
}

【问题讨论】:

  • 如果您注释掉 compile 'com.mixpanel.android:mixpanel-android:4.5.3' 行,是否会构建应用程序的其余部分?如果是这样,您的问题不直接是 mavenCentral() 语句,因为您的 dependencies 中的大多数其他内容都来自那里。
  • 是的,它在没有那条线的情况下构建。但是我只是在添加com.mixpanel之前添加了mavenCentral()。如果我删除 mavenCentral() 和 com.mixpanel 那么它工作正常并且其他依赖项构建。

标签: android maven gradle android-gradle-plugin


【解决方案1】:

我认为您应该将 maven Central 添加到您的 buildscript 存储库中。我有这样的,工作没问题:

buildscript {
    repositories {
        mavenCentral()
        maven { url 'http://download.crashlytics.com/maven' }
    }
...
}

allprojects {
    repositories {
        mavenCentral()
        maven { url 'http://download.crashlytics.com/maven' }
    }
}

编辑:我相信你的 gradle 文件应该是

apply plugin: 'com.android.application'
apply plugin: 'crashlytics'

buildscript {
    repositories {
        maven { url 'http://download.crashlytics.com/maven' }
        mavenCentral()
    }

    dependencies {
        classpath 'com.crashlytics.tools.gradle:crashlytics-gradle:1.+'
    }
}


repositories {
    maven { url 'http://download.crashlytics.com/maven' }
    mavenCentral()
}


android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"

    defaultConfig {
        applicationId "co.dilmile.dilmile"
        minSdkVersion 9
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:21.0.3'
    compile 'com.parse.bolts:bolts-android:1.1.2'
    compile 'com.loopj.android:android-async-http:1.4.6'
    compile 'com.google.code.gson:gson:2.3.1'
    compile 'com.facebook.android:facebook-android-sdk:3.20.0'
    compile 'com.android.support:support-v4:21.0.3'
    compile 'org.roboguice:roboguice:3.+'
    compile 'com.google.code.findbugs:jsr305:1.3.9'
    provided 'org.roboguice:roboblender:3.+'
    compile 'com.crashlytics.android:crashlytics:1.+'
    compile 'com.mixpanel.android:mixpanel-android:4.5.3'
}

【讨论】:

    【解决方案2】:

    由于现在 Android Studio 使用 jcenter 而不是 maven,您应该通过将 mavenCentral 更改为 jcenter 来迁移存储库

    buildscript {
        repositories {
            //old
            //mavenCentral()
            //new
            jcenter()
            maven { url 'http://download.crashlytics.com/maven' }
        }
    ...
    }
    
    allprojects {
        repositories {
            //old
            //mavenCentral()
            //new
            jcenter()
            maven { url 'http://download.crashlytics.com/maven' }
        }
    }
    

    jcenter 比 mavenCentral 更完善、更快

    【讨论】:

      【解决方案3】:

      jcenter 将镜像 mavenCentral 存储库,以便您在遇到 mavenCentral 问题时可以使用 jcenter。

      并尽量避免在声明依赖版本号时使用+。 也可能有问题。

      我最近写了一个依赖管理工具来查找哪些依赖是过期的,你可以试试看。

      https://github.com/Jintin/andle

      【讨论】:

        猜你喜欢
        • 2020-11-25
        • 1970-01-01
        • 2023-03-11
        • 1970-01-01
        • 1970-01-01
        • 2017-04-29
        • 2010-09-25
        • 2020-11-10
        • 1970-01-01
        相关资源
        最近更新 更多