Метод DSL Gradle не знайдений: 'compile ()'


78

У мене була ця помилка gradle.

Помилка: (9, 0) Не знайдено методу DSL Gradle: 'compile ()'

Я намагався звернутися до подібних питань, але це не спрацювало.

Помилка збірки Android gradle: (9, 0) Не знайдено методу Gradle DSL: 'compile ()'.

Отримання помилки "Метод Gradle DSL не знайдено: 'compile ()'" при синхронізації Build.Gradle

Знайдено непідтримуваний метод DSL Gradle: 'compile ()'!

Мій build.gradleкод тут

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.0.0'
        compile 'com.android.support:appcompat-v7:20.+'
        compile 'com.google.android.gms:play-services:6.5.+'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

build.gradle(Module.app)

apply plugin: 'com.android.application'

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.1"

    defaultConfig {
        applicationId "com.example.simplemaker.pushtest"
        minSdkVersion 9
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:21.0.3'
}

Що не так з моїм кодом?

Перепрошую за мою англійську.

Дуже дякую!


Відповіді:


111

Як зазначено у примітці до build.gradleфайлу вашого проекту :

// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files

Видаліть 2 оператори компіляції у цьому файлі gradle:

compile 'com.android.support:appcompat-v7:20.+'
compile 'com.google.android.gms:play-services:6.5.+'

А потім зробіть так, щоб інші ваші build.gradleзалежності (модуля) виглядали так:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:21.0.3'
    compile 'com.google.android.gms:play-services:6.5.+'
}

Що робити, якщо у моєму проекті Android немає модулів?
arun8

я використовую com.android.support:support-compat:23.0.0 bt це було com.android.support:support-v4:23.0.0
10101010

36

Я використовую студію Android на базі IntelliJ Idea, і я змінив налаштування, коли і як обертати код. Також у мене були параметри автоматичного переформатування, які призводять до випадкового форматування файлів Gradle. Тож це призвело до приблизно такого:

    compile 'de.greenrobot:eventbus:2.4.0' compile 'com.jakewharton:butterknife:7.0.1'

Потім Gradle не вдається знайти compile () для другої компіляції. Оскільки ви дозволяли писати лише одну залежність на рядок.


Це ще одна можливість, чому ця помилка може статися @Drew
Бато-Баїр Циренов 01.03.16

Гаразд, це як би запитується. Не хотів, щоб його видаляли
Дрю

1
Дякую, я щойно виявив, що IDEA дійсно переформатував мій файл Gradle і зробив два рядки в одному. Ви відповідаєте, працює для мене.
speedcell4,

Деякі додаткові деталі тут можуть стати в нагоді
Кріс Невілл,

@ChrisNevill що ти маєш на увазі?
Бато-Баїр Циренов

31

Це справді дурна проблема, і я отримав рішення:

як компіляція операторів йде в один рядок

compile "com.squareup.okhttp3:okhttp:$okHttpVersion"    compile "com.squareup.okhttp3:okhttp-urlconnection:$okHttpVersion"    compile "com.squareup.okhttp3:logging-interceptor:$okHttpVersion"    compile "com.google.code.gson:gson:$gsonVersion"

Я просто змінив наступний за наступним рядком і вирішив свою проблему:

compile "com.squareup.okhttp3:okhttp:$okHttpVersion"
compile "com.squareup.okhttp3:okhttp-urlconnection:$okHttpVersion"
compile "com.squareup.okhttp3:logging-interceptor:$okHttpVersion"
compile "com.google.code.gson:gson:$gsonVersion"

Сподіваюся, це допоможе вам. Дякую.


Саме це ... чомусь щось витягнуло мої компіляційні висловлювання в один рядок
Кріс Невілл


Я мав певний успіх у зміні "на"
Кріс Невілл,

Там, де я використовував рядок, я мав певний успіх: скомпілювати myString + '' (це дві порожні коми)
Кріс Невілл,

Зіткнувся з тією ж проблемою, і це рішення!
dmSherazi

8

Перевірте свої файли build.gradle , іноді, коли ви додаєте модуль до поточного модуля за допомогою параметрів проекту, build.gradle поточного модуля пошкоджено, а відступи порушені, просто перевірте поточний build.gradle і перевірте, чи всі оператори компіляції видаються в новому рядку!


Це саме те, що сталося, коли я оновив конфігурацію "підписання" в налаштуваннях модуля.
Wahib Ul Haq

7

на додаток до правильних відповідей, вже наведених вище - малюнок для більш детального пояснення:

введіть тут опис зображення

Проект має 2 build.gradle. Вам потрібне виділене: build.gradle (модуль: додаток)


2

Перевірте свій проект. є 2 build.gradle.

Перемістіть рядок компіляції в інший build.gradle


0

Залежності програми повинні містити файл app -> build.gradle . Не у проекті -> файл build.gradle.



0

У моєму випадку я отримував цю помилку, оскільки у мене був рядок реалізації залежностей поза dependenciesблоком. Щось на зразок цього:

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.1.0'
    ...
  }

implementation 'androidx.media:media:1.1.0'

Зверніть увагу, що всі виклики реалізації повинні бути визначені в блоці залежностей. Це просте виправлення.

Я сподіваюся, це допоможе комусь там.

Веселого кодування!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.