Android Studio 3.2.1 升级后的构建错误

Posted

技术标签:

【中文标题】Android Studio 3.2.1 升级后的构建错误【英文标题】:Build errors after Android Studio 3.2.1 upgrade 【发布时间】:2019-03-18 07:18:30 【问题描述】:

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

Gradle 版本: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。请通过在您的问题中添加根 build.gradle 来添加有关您正在使用的 gradle 版本以及您在项目中拥有哪些存储库的更多详细信息?那太好了。 @Mohsen 我已经添加了 Udacity 项目的链接。 gradle 看起来很旧:classpath 'com.android.tools.build:gradle:2.2.3'。您是否尝试过classpath 'com.android.tools.build:gradle:3.2.1' 或更新依赖项?另外,请使用implementation 而不是compile 做到了。还是一样的错误。 找到了解决方案:***.com/a/50290877/7103964 将 google repo 添加到所有项目解决了我的问题。 【参考方案1】:

项目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 中的存储库。

【讨论】:

【参考方案2】:

解决这个问题

首先从下面的链接下载缺少的 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文件夹上右键-选择New-选择Directory来创建。)

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

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

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

【讨论】:

为什么谷歌不在他们的仓库中捆绑这个? Android dev exp 是我遇到过的最差的【参考方案3】:

是的,正如 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 文件中用 osx 或 linux 代替 windows)【参考方案4】:

适用于 Android Studio 3.2.1 更新

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

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

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

看看魔法 - 错误消失了。

【讨论】:

我有 jcenter() 并在之后添加了 google() 以修复错误。 感谢您提及添加“google()”的确切位置 优秀的答案 好的,这确实解决了问题,但有人能解释一下原因吗? 请问,您到底是怎么知道的? IOW,我也可以在哪里学习这些东西?【参考方案5】:

如下更改你的 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'

【讨论】:

【参考方案6】:

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

allprojects 
    repositories 
        google()
    

【讨论】:

【参考方案7】:

在您的构建脚本中添加 google() > 存储库 在 allprojects > repositories 上添加 google

使用实现作为编译关键字的替换, 也在你的文件树上。

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'

【讨论】:

【参考方案8】:

清除gradle缓存

rm -rf $HOME/.gradle/caches/

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

【讨论】:

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

对于 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更新问题。

以上是关于Android Studio 3.2.1 升级后的构建错误的主要内容,如果未能解决你的问题,请参考以下文章

解决升级android studio 3.2.1后 "No toolchains found in the NDK toolchains folder for ABI with prefix

mac怎么安装android studio

如何手动升级android studio?

android studio Gradle升级到3.5.0遇到的坑

android studio怎么升级

android studio升级之后,新建项目打开之前的项目都出现了问题了?