Все ще отримує попередження: конфігурація "компілювати" застаріла і її замінено на "реалізація"


332

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

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

Я намагався шукати "компілювати" у всьому проекті, але не знайдено відповідності. То що може бути причиною?


Чи використовуєте ви локальну бібліотеку, яка все ще використовує "компілювати"?
Девсіль

@Devsil можливо ... але як я можу дізнатися, яку саме? Я спробував «Знайти шлях» у всьому проекті, але не зміг знайти жодного явища compile..
Роб

2
Якщо ви використовуєте локальну бібліотеку, ви побачите його файл gradle.build, який знаходиться в програмі перегляду проектів праворуч від вікна Android Studio. У цьому файлі build.gradle він може містити "компіляцію" на відміну від реалізації. Якщо будь-який файл build.gradle, який ви бачите там, не містить цього. Це може бути бібліотека, яку ви використовуєте, яка не є локальною, тому не надає вам доступу до змін. Тож це попередження зараз можна просто ігнорувати.
Девсіль

1
Gradle має вказати номер рядка, де виникає проблема
Yetti99

спробуйте: 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'
    }
}

1
Конфігурація "компілювати" застаріла і була замінена на "реалізація". Він буде видалений наприкінці 2018 року. Щоб зрозуміти, я не використовую будь-яких залежностей від служби Google {classpath 'com.android.tools.build:gradle:3.1.0'}
Amit_android

Я отримую "Не вдалося знайти com.google.gms: google-services: 3.2.0." коли я спробую це. Оновлення: зміни його вручну викликало попередження про вказівку, коли я змінив його на 3.1.1, потім Alt + Enter, щоб застосувати виправлення, автоматично змінив його на com.google.gms: google-services: 3.2.0 без помилок синхронізації. Я не впевнений, у чому різниця, але це неприємно.
jwehrle

Добре, я вважаю, що я розумію різницю. Я змінив проект і модуль build.gradle gms classpath на версію 3.2.0. Саме зміна модуля викликало проблему. Змініть лише версію Project build.gradle gms classpath.
jwehrle

Мені також не вистачало jcenter () repo! Проект був дуже старим і не включав репо!
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 Проект:

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

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 слово замінено на реалізацію

залежності від Warning в андроїд-студії 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'
    }

залежності OK в андроїд-студії 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_dependency.html


Зауважте, що "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'

    }
}

вам просто потрібно змінити версію, як у мене є ця '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

Використовуючи останню версію сервісів google 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

Ця відповідь корисна тим, хто стикається з цим питанням вперше. Незважаючи на те, що в ОП є інше питання, яке говорить, що навіть після цих змін відображається повідомлення про помилку.
sud007

13

Відповідь google: https://issuetracker.google.com/isissue/74048134

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


1
Я усунув ВСІ залежність у ВСІх build.gradles для свого проекту і все одно отримую помилку
behelit

3
EDIT: Це було спричинено царством, використовуючи старішу версію
behelit

7

https://issuetracker.google.com/isissue/72479188 вказує на те, що плагіни іноді можуть вводити залежності "компілювати", і саме це викликає попередження. Напевно, найпростіше позначити цю проблему зірочкою та чекати, поки вони її виправлять, щоб вказати, які плагіни спричиняють проблему.


6

Не потрібно видаляти рядок. Як писав Jkrevis, оновіть com.google.gms: google-services до 3.2.0 і це зупиняє попередження.


1
Ви замінювали кожне виникнення "компілювати" на "реалізацію" у своєму build.gradle проекту (Модуль: додаток) та оновили com.google.gms: google-services у build.gradle (Project) на 3.2.0?
Том

6

Я стикаюся з цією проблемою без використання com.google.gms:google-services. Розв’язання подібної задачі, як описано нижче:

  1. перевірити build.gradleфайли всіх проектів та модулів. Або просто глобальне ключове слово пошуку "компілювати", щоб знайти, де викликають це попередження.
  2. якщо вищевказаний метод не може вирішити це попередження, використовуйте команду CLI, ./gradlew assembleDebug -d > gradle.log
    друкуйте інформацію про налагодження деталей у файлі з назвою gradle.logчи будь-яким іншим, оскільки інформації занадто багато. Потім шукайте слово "ПОПЕРЕДЖЕННЯ", щоб знайти позицію в gradle.log, зазвичай ви можете знайти, яка залежність чи плагін викликає попередження.

2
Я думаю, що це загальне рішення. Проблему може спричинити будь-яка чи кілька ваших залежностей
Расмусоб

5

У моєму випадку, це причина в бібліотеці Realm, після того як я оновив її до останньої версії (5.1.0 поки що) Realm, проблема вирішена!

Ось робочий сценарій 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ваш проект покаже цю помилку. Тож оновіть версію всіх залежностей.

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

Після вилучення його з мого градула він склав.


1

Для вирішення цієї проблеми для мене було застосовано старішу версію Gradle, яку можна знайти тут :

Я використовував версію gradle-3.0-rc-1-src, але інші можуть також працювати, хоча, ймовірно, вона не повинна бути новішою, ніж 3.0-версія.

Спочатку витягніть zip-файл у будь-яке місце, де вам подобається.

Потім перейдіть до Файл -> Налаштування -> Збірка, Виконання, Розгортання -> Gradle та змініть налаштування на Використання локального розподілу gradle. Після цього переконайтеся, що домашнє поле Gradle вказує на каталог .gradle в каталозі, який ви просто розпакували.

Перебудуйте проект і все повинно бути нормально.


0

Я спробував змінити служби google 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"
}

І нарешті попередження знято!


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".

що працювало у мене.


Зверніть увагу, що якщо ви використовуєте, 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'

так просто ! сподіваюся, що це вирішиться


-3

У моєму випадку проблемою був плагін служби Google від Gradle із наступним рядком у файлі gradle:

застосувати плагін: 'com.google.gms.google-services'

Видалення цього рішення вирішило проблему


-7

перейти до build.gradle (рівень програми)

додаток build.gradle модуль

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

це буде працювати 100%


6
Ця відповідь не корисна. В ОП вже було заявлено, що це було зроблено, тому вона не може допомогти.
NightOwl888

1
У мене була така ж проблема, я не міг генерувати свою програму apk bcoz, що відповідь вирішила мою проблему
Ayoub

Це не та сама ситуація, ОП вже заявив, що він це зробив (я теж у тому ж човні), це через залежності
ElliotM

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