Android Studio 3.2.1 升级后生成错误

Build errors after Android Studio 3.2.1 upgrade

我正在构建 Udacity 的示例项目。到目前为止一切正常,但在升级到 Android Studio 3.2.1 后,我遇到了以下构建错误。

Gradle版本:4.6

项目 link: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

我该如何解决?

项目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

解决这个问题

首先从下面的link下载丢失的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。

现在导航到 app - build 文件夹中的 libs 文件夹。 (如果libs文件夹不存在,可以在app文件夹上右击-select新建-select目录创建。)

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

完成上述操作后同步后一切都应该没问题。 这是此解决方案的来源 link:https://developer.android.com/studio/command-line/aapt2#download_aapt2

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

是的,正如 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 文件放入.

针对 Android Studio 3.2.1 更新

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

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

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

看看魔法 - 错误消失了。

按如下方式更改您的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'
}

在您的 build.gradle(项目:xxxxx)

中添加 Google 存储库
allprojects {
    repositories {
        google()
    }
}

在您的构建脚本 > 存储库中添加 google() 添加 google 到所有项目 > 存储库

使用 implementation 代替 compile 关键字, 也在你的文件树上。

EX.

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'

清除gradle缓存

rm -rf $HOME/.gradle/caches/

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

对于 Android Studio 3.6.3 更新:只需在构建脚本中添加 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
}