Я создаю образец проекта от 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
Как я могу это исправить?
@Mohsen Я добавил ссылку на проект Udacity.
Градл кажется довольно старым: classpath 'com.android.tools.build:gradle:2.2.3'. Вы пробовали classpath 'com.android.tools.build:gradle:3.2.1' или обновление зависимостей? Также используйте implementation вместо compile.
Сделал это. Все еще та же ошибка.
Проблема устранена после обращения к stackoverflow.com/a/50290877/7103964 Спасибо @Mohsen
Ну, я думал то же самое, так как версия gradle была довольно старой. Однако я добавлю пояснение в качестве ответа.
Нашел решение: stackoverflow.com/a/50290877/7103964 Добавление репозитория Google во все проекты устранило мою проблему.
Версия проекта 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.
Чтобы решить эту проблему
Сначала загрузите недостающий файл Jar по ссылке ниже. Я вижу, вам не хватает версии 3.2.1-4818971
Переключите структуру папок с Android на Project.
Теперь перейдите в папку libs внутри приложения - папку сборки. (Если папка libs не существует, вы можете создать ее, щелкнув правой кнопкой мыши папку приложения - выберите New - выберите Directory.)
Вставьте загруженный файл .jar в папку libs. Щелкните правой кнопкой мыши файл jar и внизу щелкните Добавить как библиотеку. Это позаботится о добавлении файлов реализации ('libs / имя_библиотеки.jar') в build.gradle [вам не нужно вручную вводить это в свой файл сборки].
Все должно быть в порядке, как только вы выполните синхронизацию после выполнения описанных выше действий. Вот исходная ссылка на это решение: https://developer.android.com/studio/command-line/aapt2#download_aapt2
Сообщите мне, если у вас возникнут другие проблемы при выполнении вышеуказанного.
Почему Google не включает это в свое репо? Android dev exp - худшее, что у меня было
Ага, как сказал 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 разновидности файла jar. На Mac это: dl.google.com/dl/android/maven2/com/android/tools/build/aapt 2 /… (замените osx или linux на окна в файле jar)
google() в корневой уровень build.gradlebuildscript {
repositories {
google() // <--here
jcenter()
}
}
allprojects {
repositories {
google() // <-- here
jcenter()
}
}
и увидите волшебство - ошибки больше нет.
спасибо, почему в моем build.gradle есть jcenter ()? Я добавляю google (), и он работает.
У меня был jcenter(), а потом я добавил google(), чтобы исправить ошибку.
Порядок @Daniel, как правило, не имеет большого значения, но библиотеки Google должны быть указаны первыми, поскольку они более важны для создания ваших приложений.
Спасибо, что указали, где именно добавить "google ()"
Отличный ответ
Хорошо, это действительно исправило это, но может кто-нибудь объяснить, почему?
Могу я спросить, откуда вы об этом узнали? IOW, где я тоже могу научиться подобным вещам?
Измените свой 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'
}
Добавьте репозиторий Google в свой build.gradle (Project: xxxxx)
allprojects {
repositories {
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'
очистить кеш Gradle
rm -rf $HOME/.gradle/caches/
и выполнить повторную синхронизацию, чтобы загрузить все зависимости
да, это решение, после обновления Gradle необходимо повторно синхронизировать все зависимости для успешного выполнения этой команды: response-native run-android
Для обновления 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.
Добро пожаловать в SO. Пожалуйста, добавьте более подробную информацию о том, какую версию gradle вы используете и какие репозитории у вас есть в вашем проекте, возможно, добавив корневой build.gradle в свой вопрос? Это было бы прекрасно.