Помилки збірки після оновлення Android Studio 3.2.1


75

Я будую зразок проекту від 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. Будь ласка, додайте більше деталей про те, яку версію gradle ви використовуєте і які сховища у вас є у вашому проекті, додавши у своє запитання кореневий build.gradle у своєму питанні? Було б чудово.
ʍѳђ ઽ ૯ ท

@Mohsen Я додав посилання на проект Udacity.

Gradle здається досить старий: classpath 'com.android.tools.build:gradle:2.2.3'. Ви пробували classpath 'com.android.tools.build:gradle:3.2.1'або оновлювали залежності? Також використовуйте implementationзамість compile.
ʍѳђ ઽ ૯ ท

Зробив це. Все така ж помилка.

3
Знайдено рішення: stackoverflow.com/a/50290877/7103964 Додавання google repo до всіх проектів вирішило мою проблему.

Відповіді:


164

Для оновлення Android Studio 3.2.1

Просто додайте google()на кореневому рівніbuild.gradle

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

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

і побачити магію - помилка зникла.


4
Я мав jcenter()і додав google()згодом, щоб виправити помилку.
Даніель

2
Дякуємо, що
згадали,

2
Відмінна відповідь
Фатих ТАН

1
Гаразд, це справді виправило, але хтось може пояснити, чому?
Родріго Ресіо

1
можу запитати, звідки ти про це знав? IOW, де я теж можу навчитися таким речам?
Ліор

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 - build. (Якщо папки libs не існує, ви можете створити її, клацнувши правою кнопкою миші на папці програми - виберіть Новий - виберіть Каталог.)

LibsFolder

Вставте завантажений файл .jar у папку libs. Клацніть правою кнопкою миші файл jar, а внизу натисніть Додати як бібліотеку. Це подбає про додавання файлів реалізації ('libs / library_name.jar') у build.gradle [Вам не потрібно вручну вводити це у свій файл збірки].

AddAsLibrary

Після синхронізації, виконавши вищезазначене, все має бути в порядку. Ось вихідне посилання на це рішення: https://developer.android.com/studio/command-line/aapt2#download_aapt2

Повідомте мене, якщо під час виконання вищезазначеного у вас виникнуть будь-які інші проблеми.


3
Чому Google не поєднує це у своїх репо? Android dev exp - найгірше, що я мав
Майк

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 намагається його знайти. Якщо у вас немає каталогів, таких як /tools/build/aapt2/3.2.1-4818971/ в папці AndroidSDK, просто створіть їх, а потім вставте файл aapt2-3.2.1-4818971-windows.jar в.


Дякую, це спрацювало для мене. Мені довелося додати 3 рівні каталогів. Також є 3 смаки файлу банки. На mac це: dl.google.com/dl/android/maven2/com/android/tools/build/aapt2/… (підмінити osx або linux для windows у файлі jar)
Vicky T

3

Додайте сховище Google у свій build.gradle (проект: xxxxx)

allprojects {
    repositories {
        google()
    }
}

2

очистити кеш gradle

rm -rf $HOME/.gradle/caches/

та повторно синхронізувати, щоб завантажити всі залежності


1
так, це рішення, після оновлення gradle, необхідно повторно синхронізувати всі залежності для успішного запуску цієї команди:
response

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: просто додавання тегу google maven у buildscript та всі сховища проектів у файлі 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.
Абені
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.