Build-Fehler nach dem Upgrade von Android Studio 3.2.1

75

Ich baue ein Beispielprojekt von Udacity. Dies hat bis jetzt gut funktioniert, aber nach dem Upgrade auf Android Studio 3.2.1 tritt der folgende Build-Fehler auf.

Gradle-Version: 4.6

Projektlink: 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

Wie kann ich es reparieren?

Sandeep Kakkar
quelle
Willkommen bei SO. Bitte fügen Sie weitere Details dazu hinzu, welche Gradle-Version Sie verwenden und welche Repositorys Sie in Ihrem Projekt haben, indem Sie möglicherweise das root build.gradle in Ihre Frage einfügen. Das wäre toll.
13 ઽ ૯ ท
@Mohsen Ich habe den Link zum Udacity-Projekt hinzugefügt.
Der Gradle scheint ziemlich alt zu sein : classpath 'com.android.tools.build:gradle:2.2.3'. Haben Sie versucht classpath 'com.android.tools.build:gradle:3.2.1'oder die Abhängigkeiten aktualisiert? Verwenden Sie auch implementationanstelle von compile.
13 ઽ ૯ ท
Tat dies. Immer noch der gleiche Fehler.
3
Eine Lösung gefunden: stackoverflow.com/a/50290877/7103964 Das Hinzufügen von Google Repo zu allprojects hat mein Problem behoben.

Antworten:

164

Für Android Studio 3.2.1 Update

Fügen Sie einfach die google()Root-Ebene hinzubuild.gradle

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

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

und sehen Sie die Magie - Fehler ist weg.

Nikunj Paradva
quelle
4
Ich hatte jcenter()und fügte google()danach hinzu , um den Fehler zu beheben.
Daniel
2
Vielen Dank für die Erwähnung, wo genau "google ()"
Meenohara
2
Ausgezeichnete Antwort
Fatih TAN
1
Ok, das hat es wirklich behoben, aber kann jemand erklären warum?
Rodrigo Recio
1
Darf ich fragen, woher in aller Welt wusstest du davon? IOW, wo kann ich solche Dinge auch lernen?
Lior
8

Die Projektversion gradleist ziemlich alt:

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

Wenn Sie Android Studio v3.2.1 verwenden, aktualisieren Sie Folgendes gradle:

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

Wie Sie sehen können, wurde nach einigen Paketen gesucht in:

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

Das heißt, Sie haben wahrscheinlich vergessen, google()das Repository der obersten Ebene hinzuzufügen . Einfach hinzufügengoogle()

zu Ihren Repositories in Ihrer Wurzel build.gradle.

ʍѳђ ઽ ૯ ท
quelle
6

Um dies zu lösen

Laden Sie zunächst die fehlende Jar-Datei über den unten stehenden Link herunter. Ich sehe, Sie vermissen Version 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

Wechseln Sie Ihre Ordnerstruktur von Android zu Project.

Ordnerstruktur

Navigieren Sie nun zum Ordner libs im Ordner app - build. (Wenn der libs-Ordner nicht vorhanden ist, können Sie ihn erstellen, indem Sie mit der rechten Maustaste auf den App-Ordner klicken - Neu auswählen - Verzeichnis auswählen.)

LibsFolder

Fügen Sie die Datei downloaded.jar in den Ordner libs ein. Klicken Sie mit der rechten Maustaste auf die JAR-Datei und unten auf Als Bibliothek hinzufügen. Dadurch wird das Hinzufügen von Implementierungsdateien ('libs / library_name.jar') in build.gradle [Sie müssen dies nicht manuell in Ihre Build-Datei eingeben] übernommen.

AddAsLibrary

Nach dem Synchronisieren sollte nach dem Ausführen der obigen Schritte alles in Ordnung sein. Hier ist der Quelllink zu dieser Lösung: https://developer.android.com/studio/command-line/aapt2#download_aapt2

Lassen Sie mich wissen, wenn Sie dabei auf andere Probleme stoßen.

d4rkcon
quelle
3
Warum bündelt Google dies nicht in seinem Repo? Android Dev Exp ist das Schlimmste, das ich hatte
Mike
6

Ja, wie d4rkcon sagte Download https://dl.google.com/dl/android/maven2/com/android/tools/build/aapt2/3.2.1-4818971/aapt2-3.2.1-4818971-windows.jar Aber Sie können es einfacher machen - legen Sie diese Datei einfach in ein Verzeichnis, in dem Andoid Studio versucht, sie zu finden. Wenn Sie keine Verzeichnisse wie /tools/build/aapt2/3.2.1-4818971/ im AndroidSDK-Ordner haben, erstellen Sie diese einfach und fügen Sie die Datei aapt2-3.2.1-4818971-windows.jar ein.

Alesha170
quelle
Danke, das hat bei mir funktioniert. Ich musste 3 Ebenen von Verzeichnissen hinzufügen. Es gibt auch 3 Varianten der JAR-Datei. Auf einem Mac ist es: dl.google.com/dl/android/maven2/com/android/tools/build/aapt2/… (ersetzen Sie Windows in der JAR-Datei durch OSX oder Linux)
Vicky T
3

Fügen Sie ein Google-Repository in Ihr build.gradle ein (Projekt: xxxxx)

allprojects {
    repositories {
        google()
    }
}
Jim Lin
quelle
2

Gradle-Cache löschen

rm -rf $HOME/.gradle/caches/

und erneut synchronisieren, um alle Abhängigkeiten herunterzuladen

do01
quelle
1
Ja, dies ist die Lösung. Nach dem Upgrade von gradle müssen alle Abhängigkeiten erneut synchronisiert werden, damit dieser Befehl erfolgreich ausgeführt werden kann: react-native run-android
novonimo
1

Ändern Sie Ihr build.gradle wie folgt.

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'
}
Abdullah Alialdin
quelle
0

Fügen Sie google () zu Ihrem Build-Skript hinzu> Repositorys. Fügen Sie Google zu allprojects hinzu.> Repositorys

Verwenden Sie die Implementierung als Ersatz für das Schlüsselwort compile, auch in Ihrem Dateibaum.

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'
fMadTech
quelle
0

Für Android Studio 3.6.3 Update: Durch einfaches Hinzufügen eines Google Maven-Tags in Buildscript und aller Projekt-Repositorys in der Datei build.gradle der Projektdatei wird das Problem behoben.

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
}
Abeni
quelle
Würde es Ihnen etwas ausmachen, Ihre Antwort mit zusätzlichen Informationen zu aktualisieren? Was unterscheidet sich in dieser Konfiguration von anderen früheren Antworten? Funktionieren die vorherigen Ansätze in Android Studio 3.6.3 nicht? Welche spezifischen Teile Ihrer Konfiguration sind der Schlüssel zur Lösung? Sind es hauptsächlich die maven {}Konfigurationen?
Jeremy Caney
Ja, andere Antworten lösen keine Probleme mit dem neuesten Android Studio-Update.
Abeni