Gradle Метод DSL не найден: 'реализация()'
У меня была эта ошибка
Error:(45, 0) Gradle DSL method not found: 'implementation()'
Possible causes:<ul><li>The project 'LaTaxi2' may be using a version of the Android Gradle plug-in that does not contain the method (e.g. 'testCompile' was added in 1.1.0).
<a href="fixGradleElements">Upgrade plugin to version 2.3.3 and sync project</a></li><li>The project 'LaTaxi2' may be using a version of Gradle that does not contain the method.
<a href="open.wrapper.file">Open Gradle wrapper file</a></li><li>The build file may be missing a Gradle plugin.
<a href="apply.gradle.plugin">Apply Gradle plugin</a></li>
build.gradle
content
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
maven {
url 'https://maven.google.com'
}
// google()
jcenter()
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
/* CHANGE to classpath 'com.android.tools.build:gradle:2.3.3' for STABLE BUILD TOOL VERSION*/
// classpath 'com.android.tools.build:gradle:3.0.0-alpha7'
classpath 'com.android.tools.build:gradle:2.3.3'
classpath 'com.google.gms:google-services:3.1.0'
// We recommend changing it to the latest version from our changelog:
// https://docs.fabric.io/android/changelog.html#fabric-gradle-plugin
classpath 'io.fabric.tools:gradle:1+'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
maven {
url 'https://maven.google.com'
}
// google()
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
build .gradle
приложение модуля
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
repositories {
maven {
url 'https://maven.google.com'
}
// google()
maven { url 'https://maven.fabric.io/public' }
}
android {
compileSdkVersion 25
buildToolsVersion '26.0.0'
defaultConfig {
applicationId "in.techware.lataxi"
minSdkVersion 17
targetSdkVersion 25
versionCode 5
versionName "1.0.4"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
/* Remove This to remove Crashlytics and Fabric */
compile('com.crashlytics.sdk.android:crashlytics:[email protected]') {
transitive = true;
}
/* compile('com.digits.sdk.android:digits:[email protected]') {
transitive = true;
}*/
implementation 'com.android.support:appcompat-v7:25.4.0'
implementation 'com.android.support:design:25.4.0'
implementation 'com.android.support:recyclerview-v7:25.4.0'
implementation 'com.squareup.okhttp3:okhttp:3.8.1'
implementation 'com.android.support:cardview-v7:25.4.0'
implementation 'com.github.bumptech.glide:glide:3.8.0'
implementation 'com.google.android.gms:play-services-maps:11.0.2'
implementation 'com.google.android.gms:play-services-location:11.0.2'
implementation 'com.google.android.gms:play-services-places:11.0.2'
implementation 'com.google.firebase:firebase-auth:11.0.2'
implementation 'com.google.firebase:firebase-messaging:11.0.2'
implementation 'com.android.support.constraint:constraint-layout:1.1.0-beta1'
implementation 'com.google.code.gson:gson:2.8.0'
testCompile 'junit:junit:4.12'
}
apply plugin: 'com.google.gms.google-services'
Ответы
Ответ 1
Чтобы использовать DSL implementation()
, вы должны использовать:
- Обновленный плагин gradle для Android 3.0.0
- gradle версия 3.4 или новее
Затем в build.gradle
вы должны использовать:
buildscript {
repositories {
...
// You need to add the following repository to download the
// new plugin.
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.0-beta1'
}
}
В gradle-wrapper.properties
distributionUrl=\
https\://services.gradle.org/distributions/gradle-4.1-rc-1-all.zip
Подробнее информация здесь.
Ответ 2
или если вы не хотите обновляться до последней версии Gradle, вернитесь к использованию DSL-метода compile()
вместо implementation()
Ответ 3
У меня была такая простая причина, по которой это не сработало, поэтому я должен опубликовать свой ответ, чтобы никто другой не прошел через это.
Не помещайте репозитории и зависимости в файл с именем build.gradle(Projet: YourProjectName)
! В этом файле есть комментарий:
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
Хорошая работа тому, кто положит эту записку туда. Вместо этого поместите свои репозитории и зависимости в файл модуля с build.gradle(Module: app)
названием build.gradle(Module: app)
.
Там уже должна быть функция dependencies
. Вам может понадобиться добавить функцию хранилища. В моем случае это было:
repositories {
maven { url "https://jitpack.io" }
}
Это должно позволить вам синхронизировать и распознавать implementation
.
Ответ 4
Вы используете турецкое рабочее пространство,
изменение ниже решает проблему
testImplementation -> testİmplementation,
androidTestImplementation -> androidTestİmplementation
androidTestImplementation -> androidTestİmplementation
Ответ 5
implementation()
заменило конфигурацию compile()
, которая к концу 2018 года будет УСТАРЕТЬ.
Чтобы исправить ошибки и использовать их, необходимо обновить до Android Gradle Plugin 3.0.0 (или выше). В результате этого обновления вам также необходимо обновить Gradle до Gradle 4.1 (или выше). Вам также необходимо использовать Build Tools 26.0.2 (или выше), то есть обновить ваш buildToolsVersion
в вашем build.gradle
или просто полностью удалить его оттуда (так как, начиная с 3.0.0, по умолчанию используется минимальная требуемая версия), Вам также необходимо обновить Android Studio 3 (или выше), чтобы использовать эти расширенные версии.
Вы можете прочитать о журнале изменений плагина Android 3.0, улучшенном времени компиляции и многом другом здесь: https://developer.android.com/studio/releases/gradle-plugin#3-0-0
Так как же обновить Android Gradle Plugin и Gradle?
ВАРИАНТ 1: Вручную
В вашем build.gradle
найдите свой путь к классу Gradle и обновите версию до Gradle 3.0. Также следует добавить репозиторий google() maven:
buildscript {
repositories {
jcenter()
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.0'
}
}
В gradle-wrapper.properties найдите ваш дистрибутивUrl и обновите его до:
distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
ВАРИАНТ 2: через свойства проекта (но обратите внимание, что ручная конфигурация переопределит его)
Перейдите в Файл → Структура проекта → Проект
![enter image description here]()
И последнее, вы также можете выбрать, заменять ли compile() реализацией() или api(). По умолчанию я бы предложил использовать только реализацию(). Вы можете прочитать больше о различиях здесь: https://developer.android.com/studio/build/dependencies
Ответ 6
В моем случае это была просто опечатка. Это был дополнительный знак "/" после одного из рядов