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ą?


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

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


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'

    }
}

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'
        ...  
    }
}

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.+'
}

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


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.


6

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


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.

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

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.

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
}

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.


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.


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!


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.

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.


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

}


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'

-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


-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


-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%


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.