Android Studio 3.0 Beta 1: 解决不了:com.android.support:multidex:1.0.2

38

从Android Studio 3.0 (Canary 5) 迁移到 Android Studio 3.0 (Beta 1),并升级到最新的 Gradle,即 'com.android.tools.build:gradle:3.0.0-beta1' 后,当我尝试 gradle 同步时,出现以下错误。

Failed to resolve: com.android.support:multidex:1.0.2 
Failed to resolve: com.android.support:multidex-instrumentation:1.0.2 

我在Android Studio 3.0 Canary 9 - Failed to resolve packages上查过了,但并没有解决我的问题,因为我已经有这个了。

    maven {
        url 'https://maven.google.com'
    }

我很惊讶它甚至要求使用multidex 1.0.2,因为我在我的build.gradle文件中只有以下内容

compile 'com.android.support:multidex:1.0.1'

我使用./gradlew app:dependencies | grep multidex进行检查,它显示了以下的失败情况(跨越了各种风味等)

+--- com.android.support:multidex-instrumentation:1.0.2 FAILED
+--- com.android.support:multidex:1.0.1
+--- com.android.support:multidex:1.0.2 FAILED
+--- com.android.support:multidex:1.0.1 -> 1.0.2 FAILED

multidex:1.0.2multidex-instrumentation:1.0.2 的依赖关系从哪里来?我该如何解决这个问题?


1
你在哪里添加了 url 'https://maven.google.com' - M D
在我的项目的build.gradle文件中,在repositories范围内,与其他Maven一起。 - Elye
1
你更新了支持库和其他必需的东西吗? - M D
3
жІЎй”ҷпјҢжҲ‘жҠҠжҲ‘зҡ„Mavenж”ҫеңЁ buildscript зҡ„ repositories йҮҢдәҶпјҢиҖҢдёҚжҳҜ allprojects зҡ„ repositoriesгҖӮи°ўи°ўпјҒ - Elye
12个回答

97

显然我的问题是我应该发布这个:

maven {
    url 'https://maven.google.com'
}

allprojects 中,而不是在 buildscript 中(这个微小的区别让我看不清问题所在),代码如下:

allprojects {
    repositories {
        maven {
            url 'https://maven.google.com'
        }
    }
}

感谢M D提供的指引!


2
是的!前往根目录下的 build.gradle 文件,并确保在 allProjects {} 中添加 google(),而不是在 buildscript {} 中添加。我之前也遇到了同样的问题。 - EGHDK
1
@Elye 对于已经更新了最新版本的Android Studio的用户非常有用。 - M D
4
可以使用“google()”代替“url 'http...'”,同样有效。请注意,翻译时不会添加解释或其他内容。 - OriolJ
2
仍然存在问题。这个解决方案对我不起作用。 - Rahul Tiwari
除了您的解决方案,还需要添加以下内容:compile 'com.android.support:multidex:1.0.3' - Yogesh Devgun

23

对我来说,解决方案是将google()项目移动到jcenter()之前。实际上,我会将google()放在所有存储库的第一位。


似乎大约三天前jcenter发生了一些变化,导致我们的自动构建系统出现了这个确切的错误(在此期间我们没有进行任何代码更改)。我猜测jcenter宣布它有这个库,然后返回404或其他错误。调整顺序后问题得到解决,所以我点了一个赞 :-) - entropy

10

还需要添加以下内容:

compile 'com.android.support:multidex:1.0.3'

在添加上述行之后,它对我起了作用,并且除了以上答案之外。


如何在Phonegap Build中实现此解决方案? - sqlchild
请在您的模块构建文件中添加上述行。 - UVM
但是Phonegap没有提供任何编辑构建文件的选项?我猜我是正确的? - sqlchild
你能告诉我解决方案吗? - sqlchild

6

首先您需要清理项目,然后重建它。

构建 ----> 清理项目

构建 ----> 重建项目


6
allprojects {
    repositories {
        google()
    }
}

对我而言,使用了这个方法而不是

allprojects {
    repositories {
        maven {
            url 'https://maven.google.com'
        }
    }
}

5
如果您在中国, 请使用。
allprojects {
    respositories {
        google()
    }
}

改为

allprojects {
    respositories {
        maven {
            url 'https://maven.google.com'
        }
    }
}

不要问我为什么,我不想告诉你……可能是因为GFW选择了'https://maven.google.com'?


3
在我的所有项目中添加google()解决了我的问题...
allprojects {
    repositories {
        jcenter()
        google()
    }
}

2
如果以上解决方案都不起作用,那么请添加 mavenLocal()
allprojects {
    repositories {
        jcenter()
               maven {
            url 'https://maven.google.com'
        }

        mavenLocal()
        google()
    }
}

在我的情况下,我这样做是为了从我的本地存储库加载Maven,并且它起作用了。因此,我指定如果没有其他方法可行,则也可以尝试一下它。 - jeet.chanchawat

2
google()项目上移,以确保它在jcenter()之前。最初的回答。
repositories {
    jcenter()
    google()
}

哇!真希望在我费尽心思地试图解决这个问题之前就遇到了这个。 - user1689757

0

将所有gradle依赖项更新到最新版本..就这样


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接