По-прежнему получают предупреждение: конфигурация 'compile' устарела и была заменена на 'реализация'

332

Я заменил каждое вхождение compileна implementationв моем проекте build.gradle, но я все еще получаю это предупреждение:

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

Я пытался найти «compile» во всем проекте, но ничего не найдено. Так в чем может быть причина?

обкрадывать
источник
Вы используете локальную библиотеку, которая все еще использует 'compile'?
Devsil
@Devsil возможно ... но как я могу узнать какой? Я пытался найти путь во всем проекте, но не смог найти ни одного случая compile..
Роб
2
Если вы используете локальную библиотеку, вы увидите ее файл gradle.build, расположенный в средстве просмотра проекта в правой части окна Android Studio. В этом файле build.gradle он может содержать «компиляцию», а не реализацию. Если какой-либо файл build.gradle, который вы видите там, не содержит этого. Это может быть используемая вами библиотека, которая не является локальной, что не дает вам доступа к ее изменению. Так что это предупреждение пока можно просто игнорировать.
Devsil
1
Gradle должен
указать
попробуйте это: stackoverflow.com/questions/48623244/… и Failed to resolve: android.arch.persistence.room:runtime:1.1.1 Open File Show in Project Structure dialogпопробуйте изменить версию на1.0.0
Saeid

Ответы:

496

Я обновил com.google.gms:google-servicesс 3.1.1до 3.2.0и предупреждение перестало появляться.

buildscript {

    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.0'

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

    classpath 'com.google.gms:google-services:3.2.0'
    }
}
Jkrevis
источник
1
Конфигурация 'compile' устарела и была заменена на 'реализация'. Он будет удален в конце 2018 года. Чтобы было ясно, я не использую какие-либо зависимости от службы Google {classpath 'com.android.tools.build:gradle:3.1.0'}
Amit_android
Я получаю сообщение "Не удалось найти com.google.gms: google-services: 3.2.0." когда я попробую это. Обновление: изменив вручную предупреждение lint, когда я изменил его обратно на 3.1.1, затем Alt + Enter, чтобы применить исправление, автоматически изменило его на com.google.gms: google-services: 3.2.0 без ошибок при синхронизации. Я не уверен, в чем разница, но это расстраивает.
jwehrle
Хорошо, я верю, что понимаю разницу. Я изменил путь к классам Project и Module build.gradle gms до версии 3.2.0. Это изменение модуля вызвало проблему. Измените только версию Project build.gradle gms classpath.
jwehrle
Мне также не хватало репозитория jcenter ()! Проект был очень старым и не включал репо!
Yani2000
Вы имеете в виду, что я должен просто добавить эту строку вручную в файл?
hellogoodnight
125

У меня есть одно предупреждение для com.google.gms: google-services.

Решение состоит в том, чтобы обновить classpath com.google.gms: google-services до classpath 'com.google.gms: google-services: 3.2.0' в файле в build.gradle Project:

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

buildscript {
    repositories {
        jcenter()
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
        classpath 'com.google.gms:google-services:3.2.0'
    }
}

allprojects {
    repositories {
        jcenter()
        google()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

В Android Studio verion 3.1 зависимости complie word заменены на реализацию

зависимости с предупреждением в андроид студии 3.1

dependencies {
            compile fileTree(dir: 'libs', include: ['*.jar'])
            compile 'com.android.support:appcompat-v7:27.1.0'
            compile 'com.android.support.constraint:constraint-layout:1.0.2'
            testImplementation 'junit:junit:4.12'
            androidTestImplementation 'com.android.support.test:runner:1.0.1'
            androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
    }

зависимости в норме в андроид студии 3.1

    dependencies {
            implementation fileTree(dir: 'libs', include: ['*.jar'])
            implementation 'com.android.support:appcompat-v7:27.1.0'
            implementation 'com.android.support.constraint:constraint-layout:1.0.2'
            testImplementation 'junit:junit:4.12'
            androidTestImplementation 'com.android.support.test:runner:1.0.1'
            androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'

    }

Gradel генерирует Android Studio 3.1 для нового проекта.

Gradel генерирует Android Studio 3.1 для нового проекта.

Посетите https://docs.gradle.org/current/userguide/dependency_management_for_java_projects.html

Для получения дополнительной информации https://docs.gradle.org/current/userguide/declaring_dependencies.html

Didier
источник
Обратите внимание, что «testCompile» меняется на «testImplementation».
AJW
большинство ответов, а также самый популярный, все сосредоточены на com.google.gms: google-services, но все дело в обновлении старого стиля именования в обоих файлах
gradle
32

Я обновил com.google.gms: google-services с 3.2.0 до 3.2.1, и предупреждение перестало появляться.

 buildscript {

    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.1'
        classpath 'com.google.gms:google-services:3.2.1'

    }
}
Prateek218
источник
вам просто нужно изменить версию, как у меня это "com.google.gms: google-services: 3.2.0", вам нужно просто заменить 3.2.0 на 3.2.1.
Prateek218
Спасибо, я обновил не тот класс, поэтому получил ошибку.
Джорра
2
У меня версия classpath 'com.google.gms:google-services:4.1.0'не самая обновленная, но да, она больше, чем 3.2.0. Нет разрешения до сих пор!
sud007
@ sud007 Можете ли вы объяснить, с какой проблемой вы столкнулись, или опубликовать свой build.gradle (уровень проекта)
Prateek218
22

Использование последней версии сервисов gms gms решило ее для меня.

На уровне проекта build.gradle:

buildscript {
    ...
    dependencies {
        classpath 'com.google.gms:google-services:3.2.1'
        ...  
    }
}
Ованес Мосоян
источник
18

Откройте файл build.gradle, расположенный здесь:

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

Это старый способ написания библиотек зависимостей (для Gradle версии 2 и ниже):

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile files('libs/volley.jar')
    compile 'com.android.support:support-v4:21.+'
}

Это новый (правильный) способ импорта зависимостей для Gradle версии 3:

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    testImplementation 'junit:junit:4.12'
    implementation files('libs/volley.jar')
    implementation 'com.android.support:support-v4:21.+'
}
Ген
источник
1
Спасибо друг! Это похоже на самый актуальный ответ здесь по состоянию на январь 2019 года
NaturalBornCamper
Этот ответ полезен для тех, кто сталкивается с этой проблемой впервые. Хотя у OP есть другой вопрос, который говорит, что даже после этих изменений отображается сообщение об ошибке.
sud007
13

Ответ от Google: https://issuetracker.google.com/issues/74048134

Будет некоторая зависимость, все еще использующая компиляцию, тщательно проверьте зависимости приложения и транзитивные зависимости.

quangkid
источник
1
Я удалил ВСЕ зависимости во ВСЕ build.gradles для моего проекта и все еще получаю ошибку
behelit
3
РЕДАКТИРОВАТЬ: Это было вызвано царством, используя более старую версию
behelit
7

https://issuetracker.google.com/issues/72479188 указывает, что плагины иногда могут вводить зависимости «компиляции», и именно это вызывает предупреждение. Вероятно, проще всего отметить эту проблему и подождать, пока они не исправят ее, чтобы указать, какие плагины вызывают проблему.

Эрик
источник
6

Не нужно убирать строку. Как пишет Jkrevis, обновите com.google.gms: google-services до версии 3.2.0, и он прекратит предупреждение.

Том
источник
1
Заменили ли вы каждое вхождение 'compile' на 'реализация' в build.gradle вашего проекта (Module: App) и обновили com.google.gms: google-services в build.gradle (Project) до версии 3.2.0?
Том
6

Я сталкиваюсь с этой проблемой без использования com.google.gms:google-services. Решение, решающее эту проблему, как показано ниже:

  1. проверить build.gradleфайлы всех проектов и модулей. Или просто глобальный поиск по ключевому слову «compile», чтобы найти причину этого предупреждения.
  2. Если вышеуказанный метод не может устранить это предупреждение, используйте команду CLI, ./gradlew assembleDebug -d > gradle.log
    распечатайте подробную информацию об отладке в файл с именем gradle.logили любым другим, так как информация слишком большая. Затем найдите слово «ПРЕДУПРЕЖДЕНИЕ», чтобы найти позицию gradle.log, обычно вы можете найти, какая зависимость или плагин вызывают предупреждение.
zhangliang
источник
2
Я думаю, что это общее решение. Проблема может быть вызвана одной или несколькими вашими зависимостями
Rasmusob
5

В моем случае это вызвано библиотекой Realm, после того как я обновил ее до последней версии (пока что 5.1.0), проблема решена!

Вот рабочий скрипт gradle:

buildscript {
repositories {
    jcenter()
    google()
}

dependencies {
    classpath 'com.android.tools.build:gradle:3.1.2'
    classpath "io.realm:realm-gradle-plugin:5.1.0"
    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
    classpath 'com.google.gms:google-services:3.2.1'
  }
}
кругозор
источник
3

Просто обновление версии google-сервиса у меня не сработало.

  • Сначала убедитесь, что все ваши зависимости compileзаменены на implementation.
  • Обновите все зависимости в вашем проекте. Потому что, если одна из ваших зависимостей имеет, compileто ваш проект покажет эту ошибку. Так что обновите все зависимости версии.
Khemraj
источник
2

перейдите к файлу build.gradle на уровне проекта, вы увидите следующие выделенные строки

dependencies {
    classpath 'com.android.tools.build:gradle:3.1.4'  //place your cursor over here 
    //and hit alt+enter and it will show you the appropriate version to select


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

    classpath 'com.google.gms:google-services:4.0.2' //the same as previously
}
РАБИ Хамза
источник
2

В моем случае это была старая зависимость, которая использовала компиляцию для транзитивных зависимостей: com.jakewharton.hugo

После удаления из моего gradle это скомпилировано.

PerrierCitror
источник
1

Обходной путь для решения этой проблемы был для меня, что я использовал более старую версию Gradle, которую можно найти здесь :

Я использовал версию gradle-3.0-rc-1-src, но другие тоже могут работать, хотя, вероятно, она не должна быть новее версии 3.0.

Сначала распакуйте zip-файл куда угодно.

Затем перейдите в File -> Settings -> Build, Execution, Deployment -> Gradle и измените настройку на Использовать локальное распределение gradle. После этого убедитесь, что поле Gradle Home указывает на каталог .gradle в каталоге, в который вы только что разархивировали.

Перестройте проект, и все должно быть в порядке.

ТПС
источник
0

Я попытался изменить службы gms gms на последнюю com.google.gms:google-services:3.2.1версию в Android Studio 3.0.1, но предупреждение по-прежнему сохраняется.

В соответствии с рекомендациями компилятором, я изменил все compileзависимости , чтобы implementationи testCompileк testImplementationтак ..

dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support:mediarouter-v7:27.1.1'
implementation 'com.android.support:design:27.1.1'
implementation 'com.google.firebase:firebase-ads:12.0.1'
implementation 'com.google.firebase:firebase-crash:12.0.1'
implementation 'com.google.firebase:firebase-core:12.0.1'
implementation 'com.google.firebase:firebase-messaging:12.0.1'
implementation 'com.google.firebase:firebase-perf:12.0.1'
implementation 'com.google.firebase:firebase-appindexing:12.0.1'
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
testImplementation 'junit:junit:4.12'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
}

И, наконец, предупреждение снято!

Haileapp
источник
0

Вы можете сделать это двумя вариантами:

  1. Добавьте classpath 'com.google.gms: google-services: 3.2.0' в свой проект: зависимости build.gradle и
  2. Замените ваш модуль: build.gradle в зависимости от компиляции с реализацией, и вы не получите никаких предупреждающих сообщений.
Ясбин Карки
источник
0

Просто добавьте build.gradleизbuild script

classpath 'com.google.gms:google-services:3.2.0'

и все зависимости "compile"заменить на "implementation".

это сработало от меня.

Omae wa mou shindairu
источник
Обратите внимание, что если вы используете, classpathвы должны использовать его внутри buildscriptблока; кроме того, нельзя использовать implementationвнутри buildscriptблока.
ChumiestBucket
0

Текущая версия 4.2.0 :

buildscript {

repositories {
    google()
    jcenter()
}
dependencies {
    classpath 'com.android.tools.build:gradle:3.4.0'

    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
    classpath 'com.google.gms:google-services:4.2.0'
}

}

Фрэнк Ино
источник
0

Для меня изменение компиляции для реализации исправлено

Перед

compile 'androidx.recyclerview:recyclerview:1.0.0'
compile 'androidx.cardview:cardview:1.0.0'
//Retrofit Dependencies
compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'

После

implementation 'androidx.recyclerview:recyclerview:1.0.0'
implementation 'androidx.cardview:cardview:1.0.0'
//Retrofit Dependencies
implementation 'com.squareup.retrofit2:retrofit:2.1.0'
implementation 'com.squareup.retrofit2:converter-gson:2.1.0'
Ягадеша Н.Х.
источник
-2

Надеюсь, что вы затронуты с build.gradle (приложение) Если сделать это, выполните этот шаг

Заменить компиляцию с androidTestImplementation в build.gradle

androidTestImplementation 'com.android.support:appcompat-v7:27.1.1'
androidTestImplementation 'com.android.support:design:27.1.1'

так просто ! надеюсь это решит

Thiyagu
источник
-3

В моем случае проблема заключалась в плагине gradle для служб Google со следующей строкой в ​​файле gradle:

применить плагин: 'com.google.gms.google-services'

Удаление этого решило проблему

Уджвал Сингх
источник
-7

перейти к вам build.gradle (уровень приложения)

приложение модуля build.gradle

и заменить слово «компилировать» на «реализация»

это будет работать на 100%

Аюб
источник
6
Этот ответ не полезен. ФП уже заявил, что это было сделано, поэтому это не может помочь.
NightOwl888
1
у меня была та же проблема, я не мог сгенерировать свое приложение apk bcoz, этот ответ решил мою проблему
Ayoub
Это не та же ситуация, OP уже заявил, что он сделал это (я тоже в той же лодке), это из-за зависимостей
ElliotM
ОП сказал: «Я заменил каждое вхождение компиляции реализацией».
Мапо