Получение ошибки "Gradle Метод DSL не найден: 'compile()'" при Syncing Build.Gradle
![Error after resolution]()
![project is staymax]()
Чтобы добавить библиотеки поддержки V4 в студию android, я следил за этим документом: https://developer.android.com/tools/support-library/setup.html#libs-without-res, но я получить сообщение об ошибке. Вот что я сделал
- Менеджер SDK > Установленная библиотека поддержки Android и репозиторий Android.
- Перейдите в Build.Gradle и добавьте строку, указанную в dcoument. Build.Gradle теперь выглядит следующим образом:
//Файл сборки верхнего уровня, где вы можете добавить параметры конфигурации, общие для всех подпроектов/модулей.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.13.2'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
dependencies {
compile "com.android.support:support-v4:18.0.+"
}
}
}
Затем я получаю всплывающее окно, предлагающее синхронизировать gradle. Когда я синхронизирую Gradle, я получаю эту ошибку:
Ошибка: (20, 0) Gradle Метод DSL не найден: 'compile()'
Возможные причины:
В проекте "staymax" может использоваться версия Gradle, которая не содержит метод.
Откройте файл оболочки Gradle В файле сборки может отсутствовать плагин Gradle.
Примените плагин Gradle
Я пропустил какой-нибудь шаг? Пожалуйста, предложите.
build.gradle(приложение)
apply plugin: 'com.android.application'
android {
compileSdkVersion 20
buildToolsVersion "20.0.0"
defaultConfig {
applicationId "com.appt.shreyabisht.staymax"
minSdkVersion 15
targetSdkVersion 20
versionCode 1
versionName "1.0"
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
}
Ответы
Ответ 1
Почти во всех случаях ваши зависимости должны быть помещены в отдельные файлы build.gradle модуля, а не в файл build.gradle самого высокого уровня. В вашем случае это означает, что зависимость должна быть добавлена в файл сборки app
build.gradle:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile "com.android.support:support-v4:18.0.+"
}
И вы должны удалить всю часть allprojects
верхнего уровня build.gradle.
Ответ 2
Я обнаружил, что когда я добавляю applicationSuffix
или versionNameSuffix
через меню IDE (Build > Edit Build Types), он меняет раздел зависимостей моего приложения build.gradle из этого
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
testCompile 'org.json:json:20140107'
compile "com.android.support:appcompat-v7:${supportLibVersion}"
compile "com.android.support:design:${supportLibVersion}"
compile "com.android.support:support-vector-drawable:${supportLibVersion}" // VectorDrawableCompat
compile "com.android.support:animated-vector-drawable:${supportLibVersion}" // AnimatedVectorDrawableCompat
}
к этому:
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
testCompile 'org.json:json:20140107'
compile "com.android.support:appcompat-v7:${supportLibVersion}" compile "com.android.support:design:${supportLibVersion}" compile "com.android.support:support-vector-drawable:${supportLibVersion}"
// VectorDrawableCompat
compile "com.android.support:animated-vector-drawable:${supportLibVersion}"
// AnimatedVectorDrawableCompat
}
Я не знаю почему, но он объединяет первые три "компилирования" строк в одну строку и перемещает два комментария (в следующую строку в каждом случае).
Я решил проблему, отредактировав приложение build.gradle и поместив каждое выражение "compile" в свою собственную строку.
Ответ 3
Это сработало для меня:
- Закройте Android Studio.
- Удалите папку
<home folder>/.gradle
.
- Перезапустите Android-студию и снова загрузите все модули gradle.
P.S.: Mine был новым проектом, поэтому я удалил проект и создал новый, поэтому не было старых gradle ссылок из проекта
Ответ 4
В моем случае в моем проекте есть 2 файла build.gradle(он автоматически создается с помощью студии android при создании нового проекта)
Просто переместите строку компиляции на другую, решив мою проблему
Ответ 5
У вас есть 2 разных build.gradle
(иногда больше в зависимости от вас)
Только одно из них - ваше приложение gradle, а другое - проект gradle.
Если вы поместите проект зависимостей gradle, вы можете получить сообщение об ошибке: Gradle DSL method not found: 'compile()'
Поместите свои зависимости в приложение build.gradle
, тогда он будет работать.
Ответ 6
Привет всем для меня это была "работа на пару дней", чтобы приложение запускалось в Android Studio. Наконец, я нашел этот очень простой способ.
- Создайте папку libs в разделе src/main/java/это приложение /java/libs на левой панели.
- Скопируйте и вставьте все свои внешние банки здесь.
- Откройте левую панель и щелкните правой кнопкой мыши на своем приложении, затем нажмите Открыть настройки модуля
- Появится окно "Структура проекта".
- Затем перейдите на вкладку "Зависимости".
- Заключительный шаг: добавьте все свои банки в App/java/libs (вы найдете их в src/main/java/libs) по очереди.
Это все Наслаждайтесь этим.
Ответ 7
Просто удалите этот метод.
//DELETE THIS LINES:
android {
compileSdkVersion 21
buildToolsVersion '21.1.2'
}
Попробуйте снова скомпилировать. Теперь он должен работать.
Источник: https://medium.com/@marcuspereira/solving-the-gradle-dsl-method-not-found-android-in-android-studio-6e5ab499bd3#.u1lxecq41
Ответ 8
У меня такая же проблема, и ошибка - это мой build.gradle уровня приложения имеет зависимости моих подмодулей. Средства
dependencies {
compile project(':library')
compile project(':MPChartLib')
}
Я просто удаляю две строки внутри фигур зависимостей, и он может начать синхронизацию.
Ответ 9
Удаление .gradle в моей папке проекта выполнило эту работу для меня.
Ответ 10
Убедитесь, что в вашем проекте есть файл settings.gradle
. Добавив это, я решил для меня проблему Error:Gradle DSL method not found: 'minSdkVersion()'
.