Android Studio 3.2.1升级后的构建错误


75

我正在从Udacity构建一个示例项目。到现在为止,这个工作还不错,但是在升级到Android Studio 3.2.1之后,我遇到了以下构建错误。

摇篮版本:4.6

项目链接:https : //github.com/udacity/ud851-Sunshine/tree/student/S02.02-Solution-Menus

Could not find com.android.tools.build:aapt2:3.2.1-4818971**. Searched in the following locations:
    file:/C:/Users/sandeepk2/AppData/Local/Android/Sdk/extras/m2repository/com/android/tools/build/aapt2/3.2.1-4818971/aapt2-3.2.1-4818971.pom
    file:/C:/Users/sandeepk2/AppData/Local/Android/Sdk/extras/m2repository/com/android/tools/build/aapt2/3.2.1-4818971/aapt2-3.2.1-4818971-windows.jar
    file:/C:/Users/sandeepk2/AppData/Local/Android/Sdk/extras/google/m2repository/com/android/tools/build/aapt2/3.2.1-4818971/aapt2-3.2.1-4818971.pom
    file:/C:/Users/sandeepk2/AppData/Local/Android/Sdk/extras/google/m2repository/com/android/tools/build/aapt2/3.2.1-4818971/aapt2-3.2.1-4818971-windows.jar
    file:/C:/Users/sandeepk2/AppData/Local/Android/Sdk/extras/android/m2repository/com/android/tools/build/aapt2/3.2.1-4818971/aapt2-3.2.1-4818971.pom
    file:/C:/Users/sandeepk2/AppData/Local/Android/Sdk/extras/android/m2repository/com/android/tools/build/aapt2/3.2.1-4818971/aapt2-3.2.1-4818971-windows.jar
    https://jcenter.bintray.com/com/android/tools/build/aapt2/3.2.1-4818971/aapt2-3.2.1-4818971.pom
    https://jcenter.bintray.com/com/android/tools/build/aapt2/3.2.1-4818971/aapt2-3.2.1-4818971-windows.jar Required by:
    project :app

我该如何解决?


欢迎来到SO。请通过在问题中添加root build.gradle来添加有关正在使用的gradle版本以及项目中具有哪些存储库的更多详细信息?那很好啊。
ʍѳђઽ9ท

@Mohsen我已将链接添加到Udacity项目。

该gradle这个看起来很老:classpath 'com.android.tools.build:gradle:2.2.3'。您是否尝试过classpath 'com.android.tools.build:gradle:3.2.1'或更新了依赖项?另外,请使用implementation代替compile
18 18-10-13

做过某事。还是一样的错误。

3
找到了解决方案:stackoverflow.com/a/50290877/7103964将google repo添加到allprojects解决了我的问题。

Answers:


164

对于Android Studio 3.2.1更新

只需添加google()根级别build.gradle

buildscript {
    repositories {
        google()   //  <--here
        jcenter()
    }
 }

allprojects {
    repositories {
        google()   //  <-- here
        jcenter()
    }
}

并看到魔术-错误消失了。


4
我已经jcenter()添加了此google()后再修复错误。
丹尼尔(Daniel)

2
感谢您提到要在何处添加“ google()”
Meenohara '18

2
出色的答案
法提赫(Fatih TAN)

1
好的,这确实可以解决问题,但是有人可以解释原因吗?
罗德里戈·雷西奥

1
我想问一下,您是怎么知道的?IOW,我在哪里也可以学到这样的东西?
Lior

8

该项目的gradle版本很旧:

classpath 'com.android.tools.build:gradle:2.2.3'

您正在使用Android Studio v3.2.1,因此,请更新gradle

classpath 'com.android.tools.build:gradle:3.2.0' // or 3.2.1 maybe

另外,如您所见,它还在寻找以下软件包:

file:/C:/Users/sandeepk2/AppData/Local/Android/Sdk/extras/m2repository/com/android/tools/build/aapt2/3.2.1-4818971/aapt2-3.2.1-4818971.pom

这意味着您可能忘记了添加google()为顶级存储库。只需添加google()

到根目录中的存储库build.gradle


6

为了解决这个问题

首先从下面的链接下载丢失的Jar文件。我看到您缺少版本3.2.1-4818971

https://dl.google.com/dl/android/maven2/com/android/tools/build/aapt2/3.2.1-4818971/aapt2-3.2.1-4818971-windows.jar

将文件夹结构从Android切换到Project。

文件夹结构

现在,导航至应用程序内的libs文件夹-build文件夹。(如果libs文件夹不存在,则可以通过右键单击app文件夹-选择“新建”-选择“目录”来创建它。)

库文件夹

将downloaded.jar文件粘贴到libs文件夹中。右键单击jar文件,然后在底部单击“添加为库”。这将有助于在build.gradle中添加实现文件('libs / library_name.jar')[您不必在构建文件中手动输入此文件]。

AddAsLibrary

完成上述操作后,一切就可以了。这是此解决方案的源链接:https : //developer.android.com/studio/command-line/aapt2#download_aapt2

如果您在执行上述操作时遇到其他问题,请告诉我。


3
为什么Google不将其捆绑在他们的仓库中?Android开发人员体验是我遇到过的最糟糕的
体验

6

是的,正如d4rkcon所说,下载https://dl.google.com/dl/android/maven2/com/android/tools/build/aapt2/3.2.1-4818971/aapt2-3.2.1-4818971-windows.jar 但您可以简化操作-只需将此文件放在Andoid Studio试图找到它的目录中即可。如果您在AndroidSDK文件夹中没有/tools/build/aapt2/3.2.1-4818971/目录,则只需创建它们,然后将aapt2-3.2.1-4818971-windows.jar文件放入。


谢谢,这对我有用。我必须添加3级目录。jar文件也有3种口味。在Mac上,它是:dl.google.com/dl/android/maven2/com/android/tools/build/aapt2/…(用jar文件中的Windows替换osx或linux)
Vicky T

3

在build.gradle(Project:xxxxx)中添加Google存储库

allprojects {
    repositories {
        google()
    }
}

2

清除gradle缓存

rm -rf $HOME/.gradle/caches/

并重新同步以下载所有依赖项


1
是的,这是解决方案,升级gradle后,必须重新同步所有依赖项才能成功运行此命令:react-native run-android
novonimo

1

如下更改您的build.gradle。

android {
    compileSdkVersion 26
    buildToolsVersion "28.0.3"

    defaultConfig {
        applicationId "your package name here"
        minSdkVersion 15
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    testImplementation 'junit:junit:4.12'
    implementation 'com.android.support:appcompat-v7:26.1.0'
}

0

在构建脚本上添加google()>存储库在所有项目上添加google>存储库

在文件树上使用实现代替compile关键字。

例如

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })

    implementation 'com.android.support:appcompat-v7:25.3.1'
    implementation 'com.android.support:design:25.3.1'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    implementation 'com.android.support:support-v4:25.3.1'

0

对于Android Studio 3.6.3更新:只需在buildscript中添加google maven标签,并在项目文件的build.gradle文件中添加所有项目存储库即可解决此问题。

buildscript {
    repositories {
        jcenter()
        maven {
            url 'https://maven.google.com/'
            name 'Google'
        }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.6.3'

    }
}

allprojects {
    repositories {
        jcenter()
        maven {
            url 'https://maven.google.com/'
            name 'Google'
        }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

您介意使用其他信息来更新您的答案吗?此配置与其他先前的答案有何不同?以前的方法在Android Studio 3.6.3中不起作用吗?配置的哪些特定部分是解决方案的关键?主要是maven {}配置吗?
杰里米·卡尼

是的,其他答案不能解决最新的android studio更新上的问题。
阿贝尼
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.