Nadal pojawia się ostrzeżenie: „Kompilacja” konfiguracji jest przestarzała i została zastąpiona przez „implementację”

332

Wymieniłem wszystkie wystąpienia compileprzez implementationmoich projektu build.gradle, ale nadal jestem coraz to ostrzeżenie:

wprowadź opis zdjęcia tutaj

Próbowałem szukać „kompilacji” w całym projekcie, ale nie znaleziono dopasowania. Co może być przyczyną?

Obrabować
źródło
Czy korzystasz z lokalnej biblioteki, która nadal używa opcji „kompiluj”?
Devsil
@Devsil prawdopodobnie ... ale jak mogę dowiedzieć się, który? Próbowałem znaleźć ścieżkę w całym projekcie, ale nie mogłem znaleźć żadnego wystąpienia compile...
Rob
2
Jeśli korzystasz z lokalnej biblioteki, zobaczysz jej plik gradle.build znajdujący się w przeglądarce projektów po prawej stronie okna Android Studio. W tym pliku build.gradle może zawierać „kompilację”, a nie implementację. Jeśli którykolwiek plik build.gradle, który widzisz, nie zawiera tego. Może to być biblioteka, której używasz, która nie jest lokalna, co nie daje ci dostępu do zmiany. Więc to ostrzeżenie można na razie zignorować.
Devsil
1
Gradle powinien podać numer linii, w której występuje problem
Yetti99
spróbuj: stackoverflow.com/questions/48623244/... i Failed to resolve: android.arch.persistence.room:runtime:1.1.1 Open File Show in Project Structure dialogspróbuj zmienić wersję na1.0.0
Saeid

Odpowiedzi:

496

Zaktualizowałem com.google.gms:google-servicesod 3.1.1do 3.2.0i ostrzeżenie przestało się pojawiać.

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
źródło
1
Konfiguracja „kompilacja” jest przestarzała i została zastąpiona przez „implementacja”. Zostanie on usunięty pod koniec 2018 r. Dla jasności nie używam żadnych zależności usługi Google {classpath 'com.android.tools.build:gradle:3.1.0'}
Amit_android
Pojawia się komunikat „Nie można znaleźć com.google.gms: google-services: 3.2.0.” kiedy spróbuję tego. Aktualizacja: zmiana ręcznie wyzwoliła ostrzeżenie o kłaczkach, gdy zmieniłem ją z powrotem na 3.1.1, a następnie Alt + Enter, aby zastosować poprawkę, automatycznie zmieniłem ją na com.google.gms: google-services: 3.2.0 bez błędów synchronizacji. Nie jestem pewien, jaka była różnica, ale to frustrujące.
jwehrle
Dobra, wierzę, że rozumiem różnicę. Zmieniłem ścieżkę klas gms projektu i modułu do wersji 3.2.0. Problem spowodował zmiana modułu. Zmień tylko wersję kompilacji projektu. Build.gradle gms classpath.
jwehrle
Brakowało mi również repozytorium jcenter ()! Projekt był bardzo stary i nie zawierał tego repozytorium!
Yani2000
Czy masz na myśli, że powinienem po prostu ręcznie dodać tę linię do pliku?
hellogoodnight
125

Mam jedno takie samo ostrzeżenie dla com.google.gms: google-services.

Rozwiązaniem jest uaktualnienie classpath com.google.gms: usługi google do classpath „com.google.gms: google-services: 3.2.0” w pliku w build.gradle Projekt:

wprowadź opis zdjęcia tutaj

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
}

W Android Studio w wersji 3.1 zależności zgodne są zamieniane na implementację

zależności z ostrzeżeniem w Android Studio 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'
    }

zależności OK w Android studio 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 generuje przez Android Studio 3.1 dla nowego projektu.

Gradel generuje przez Android Studio 3.1 dla nowego projektu.

Odwiedź https://docs.gradle.org/current/userguide/dependency_management_for_java_projects.html

Aby uzyskać szczegółowe informacje https://docs.gradle.org/current/userguide/declaring_dependencies.html

Didier
źródło
Zauważ, że „testCompile” zmienia się na „testImplementation”.
AJW,
większość odpowiedzi, a także ta najbardziej popularna, koncentruje się na com.google.gms: google-services, ale chodzi o aktualizację starego stylu nazewnictwa w obu plikach
stopni
32

Zaktualizowałem com.google.gms: usługi google z 3.2.0 do 3.2.1 i przestało pojawiać się ostrzeżenie.

 buildscript {

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

    }
}
Prateek218
źródło
musisz tylko zmienić wersję, tak jak mam to „com.google.gms: google-services: 3.2.0”, wystarczy, że zastąpisz wersję 3.2.0 wersją 3.2.1.
Prateek218,
Dzięki, zaktualizowałem niewłaściwą klasę, dlatego dostałem błąd.
Jhorra
2
Mam wersję classpath 'com.google.gms:google-services:4.1.0'nie najbardziej zaktualizowaną, ale tak, jest większa niż 3.2.0. Brak rozdzielczości!
sud007
@ sud007 można wyjaśnić trochę problem co ty stoi lub wysłać build.gradle (poziom projektu)
Prateek218
22

Korzystanie z najnowszej wersji usług Google GMS rozwiązało to dla mnie.

Na poziomie projektu build.gradle:

buildscript {
    ...
    dependencies {
        classpath 'com.google.gms:google-services:3.2.1'
        ...  
    }
}
Hovanes Mosoyan
źródło
18

Otwórz plik build.gradle znajdujący się tutaj:

wprowadź opis zdjęcia tutaj

Jest to stary sposób pisania bibliotek zależności (dla wersji gradate 2 i niższych):

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

To jest nowy (właściwy) sposób importowania zależności dla wersji 3 stopnia:

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    testImplementation 'junit:junit:4.12'
    implementation files('libs/volley.jar')
    implementation 'com.android.support:support-v4:21.+'
}
Gen
źródło
1
Dziękuję przyjacielu! To wydaje się być najbardziej aktualną odpowiedzią na ten temat w styczniu 2019 r.
NaturalBornCamper
Ta odpowiedź jest przydatna dla tych, którzy napotykają ten problem po raz pierwszy. Chociaż OP ma inne pytanie, które mówi, że nawet po tych zmianach wyświetlany jest komunikat o błędzie.
sud007
13

Odpowiedz przez google: https://issuetracker.google.com/issues/74048134

Nadal będzie występować pewna zależność przy użyciu kompilacji, dokładnie sprawdź zależności aplikacji i zależności przechodnie.

quangkid
źródło
1
Usunąłem
3
EDYCJA: Zostało to spowodowane przez królestwo, używając starszej wersji
behelit
7

https://issuetracker.google.com/issues/72479188 wskazuje, że wtyczki mogą czasami wprowadzać zależności „kompilować” i to powoduje ostrzeżenie. Prawdopodobnie najłatwiej jest oznaczyć ten problem gwiazdką i poczekać, aż naprawią go, aby wskazać, które wtyczki powodują problem.

Eric
źródło
6

Nie ma potrzeby usuwania linii. Jak napisał Jkrevis, zaktualizuj com.google.gms: google-services do 3.2.0 i zatrzyma ostrzeżenia.

Tomek
źródło
1
Czy zamieniłeś każde wystąpienie „kompilacji” na „implementacja” w build.gradle twojego projektu (Module: App) i zaktualizowałeś com.google.gms: google-services in build.gradle (Project) do 3.2.0?
Tom
6

Napotykam ten problem bez użycia com.google.gms:google-services. Rozwiązanie rozwiązujące ten problem jak poniżej:

  1. sprawdź build.gradlepliki wszystkich projektów i modułów. Lub po prostu globalne słowo kluczowe „skompiluj”, aby znaleźć przyczynę tego ostrzeżenia.
  2. jeśli powyższa metoda nie może rozwiązać tego ostrzeżenia, użyj polecenia CLI, ./gradlew assembleDebug -d > gradle.log
    wydrukuj szczegółowe informacje debugowania do pliku o nazwie gradle.loglub dowolnej innej, ponieważ informacje te są zbyt duże. Następnie wyszukaj słowo „OSTRZEŻENIE”, aby znaleźć pozycję gradle.log, zwykle możesz znaleźć zależność lub wtyczkę, które powodują ostrzeżenie.
zhangliang
źródło
2
Myślę, że to jest ogólne rozwiązanie. Problem może być spowodowany jedną lub kilkoma z twoich zależności
Rasmusob
5

W moim przypadku jest to spowodowane przez bibliotekę Realm, po zaktualizowaniu jej do najnowszej wersji (do tej pory 5.1.0) Realm problem został rozwiązany!

Oto działający skrypt oceny:

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'
  }
}
rozpoznać
źródło
3

Właśnie aktualizacja wersji usługi Google nie działała dla mnie.

  • Najpierw upewnij się, że wszystkie Twoje zależności compilezostały zastąpione implementation.
  • Zaktualizuj wszystkie zależności w swoim projekcie. Ponieważ jeśli występuje jedna z twoich zależności, compiletwój projekt wyświetli ten błąd. Zaktualizuj więc wszystkie wersje zależności.
Khemraj
źródło
2

przejdź do pliku build.gradle na poziomie projektu, podświetlone zostaną następujące linie

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
}
RABI Hamza
źródło
2

W moim przypadku była to stara zależność, która używała kompilacji dla zależności przechodnich: com.jakewharton.hugo

Po usunięciu go z mojej klasy skompilowałem.

PerrierCitror
źródło
1

Obejściem rozwiązania tego problemu było dla mnie użycie starszej wersji Gradle, którą można znaleźć tutaj :

Użyłem wersji gradle-3.0-rc-1-src, ale inne też mogą działać, chociaż prawdopodobnie nie powinna być nowsza niż wersja 3.0.

Najpierw rozpakuj plik zip do dowolnego miejsca.

Następnie przejdź do Plik -> Ustawienia -> Kompilacja, wykonanie, wdrożenie -> Stopniowanie i zmień ustawienie na Użyj lokalnej dystrybucji stopni. Następnie upewnij się, że pole Gradle Home wskazuje katalog .gradle w katalogu, do którego właśnie rozpakowałeś.

Odbuduj projekt i wszystko powinno być w porządku.

tpn
źródło
0

Próbowałem zmienić usługi Google GMS na najnowsze com.google.gms:google-services:3.2.1w Android Studio 3.0.1, ale ostrzeżenie nadal występuje.

Zgodnie z zaleceniami przez kompilator, zmieniłem wszystkie compilezależności do implementationi testCompiledo testImplementationtak ..

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

I wreszcie ostrzeżenie zostało usunięte!

Haileapp
źródło
0

Możesz to zrobić dwie opcje:

  1. Dodaj ścieżkę klasy „com.google.gms: google-services: 3.2.0” w swoim projekcie: zależności build.gradle i
  2. Wymień moduł: build.gradle w zależności od zgodności z implementacją i nie otrzymasz żadnych komunikatów ostrzegawczych.
Jasbin Karki
źródło
0

Po prostu dodaj build.gradlezbuild script

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

i wszystkie zależności "compile"zastępują "implementation".

to działało ode mnie.

Omae wa mou shindairu
źródło
Pamiętaj, że jeśli używasz classpath, musisz użyć go w buildscriptbloku; ponadto nie można używać implementationwewnątrz buildscriptbloku.
ChumiestBucket
0

Obecna wersja to 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'
}

}

Frank Eno
źródło
0

Dla mnie zmiana kompilacji na implementację to naprawiła

Przed

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'

Po

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'
Jagadesha NH
źródło
-2

Mam nadzieję, że masz wpływ na build.gradle (aplikacja). Jeśli to zrobisz, wykonaj ten krok

Wymienić kompilacji z androidTestImplementation w build.gradle

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

tak prosty ! mam nadzieję, że to rozwiąże

Thiyagu
źródło
-3

W moim przypadku problemem była wtyczka stopniowania usług Google z następującym wierszem w pliku stopni:

zastosuj wtyczkę: „com.google.gms.google-services”

Usunięcie tego rozwiązało problem

Ujjwal Singh
źródło
-7

przejdź do ciebie build.gradle (poziom aplikacji)

Aplikacja modułu build.gradle

i zastąpić słowo „kompilacji” o „realizacji”

będzie działać w 100%

Ayoub
źródło
6
Ta odpowiedź nie jest przydatna. PO stwierdził już, że zostało to zrobione, więc nie może pomóc.
NightOwl888
1
miałem ten sam problem, nie mogłem wygenerować aplikacji APK bcoz tego, że ta odpowiedź rozwiązała mój problem
Ayoub
To nie jest ta sama sytuacja, OP już stwierdził, że to zrobił (jestem też na tej samej łodzi), to z powodu zależności
ElliotM
OP powiedział: „Zastąpiłem każde wystąpienie kompilacji przez implementację”.
mapo