Ancora un avviso: la configurazione 'compilazione' è obsoleta ed è stata sostituita con 'implementazione'


332

Ho sostituito tutte le occorrenze di compileda implementationnel mio progetto build.gradle, ma sto ancora ricevendo questo avviso:

inserisci qui la descrizione dell'immagine

Ho provato a cercare "compilazione" in tutto il progetto ma non è stata trovata alcuna corrispondenza. Quindi quale potrebbe essere la causa?


Stai usando una libreria locale che utilizza ancora 'compile'?
Devsil,

@Devsil forse ... ma come posso scoprire quale? Ho provato a trovare un percorso in tutto il progetto ma non sono riuscito a trovare alcun evento di compile..
Rob,

2
Se stai utilizzando una libreria locale, vedrai il suo file gradle.build situato nel visualizzatore di progetti sul lato destro della finestra di Android Studio. In quel file build.gradle può contenere una "compilazione" invece dell'implementazione. Se qualche file build.gradle che vedi lì non lo contiene. Potrebbe essere una libreria che stai utilizzando che non è locale, quindi non ti dà accesso a cambiarlo. Quindi questo avviso può essere ignorato per ora.
Devsil,

1
Gradle dovrebbe indicare il numero di riga in cui si verifica il problema
Yetti99

provalo: stackoverflow.com/questions/48623244/… e per Failed to resolve: android.arch.persistence.room:runtime:1.1.1 Open File Show in Project Structure dialogprovare a cambiare versione in1.0.0
Saeid

Risposte:


496

Ho aggiornato com.google.gms:google-servicesda 3.1.1a 3.2.0e l'avviso ha smesso di apparire.

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
La configurazione "compilazione" è obsoleta ed è stata sostituita con "implementazione". Sarà rimosso alla fine del 2018 Per essere chiari non sto usando alcuna dipendenza del servizio google {classpath 'com.android.tools.build:gradle:3.1.0'}
Amit_android

Ottengo "Impossibile trovare com.google.gms: google-services: 3.2.0." quando provo questo. Aggiornamento: cambiandolo ha attivato manualmente un avviso di lanugine quando l'ho cambiato di nuovo in 3.1.1, quindi Alt + Invio per applicare la correzione automagicamente lo ha cambiato in com.google.gms: google-services: 3.2.0 senza errori di sincronizzazione. Non sono sicuro di quale fosse la differenza, ma è frustrante.
jwehrle,

Bene, credo di capire la differenza. Avevo modificato il percorso di classe gms di Project e Module build.gradle alla versione 3.2.0. È il cambio di modulo che ha causato il problema. Modifica solo la versione del percorso di classe gms di Project build.gradle.
jwehrle,

Mi mancava anche jcenter () repo! Il progetto era molto vecchio e non includeva quel repo!
Yani2000,

Vuoi dire che dovrei semplicemente aggiungere quella riga manualmente al file?
hellogoodnight

125

Ho lo stesso avviso causato a com.google.gms: google-services.

La soluzione è aggiornare classpath com.google.gms: google-services a classpath 'com.google.gms: google-services: 3.2.0' nel file in build.gradle Progetto:

inserisci qui la descrizione dell'immagine

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
}

In Android Studio versione 3.1 dipendenze la parola è sostituita all'implementazione

dipendenze con Warning in 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'
    }

dipendenze OK in 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 generato da Android Studio 3.1 per il nuovo progetto.

Gradel generato da Android Studio 3.1 per il nuovo progetto.

Visita https://docs.gradle.org/current/userguide/dependency_management_for_java_projects.html

Per dettagli https://docs.gradle.org/current/userguide/declaring_dependencies.html


Si noti che "testCompile" cambia in "testImplementation".
AJW

la maggior parte delle risposte, e anche la più popolare, sono tutte incentrate su com.google.gms: google-services ma si tratta di aggiornare il vecchio stile di denominazione in entrambi i file
gradle

32

Ho aggiornato com.google.gms: google-services dalla 3.2.0 alla 3.2.1 e l'avviso ha smesso di apparire.

 buildscript {

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

    }
}

devi solo cambiare la versione come se avessi questo "com.google.gms: google-services: 3.2.0" devi semplicemente sostituire 3.2.0 con 3.2.1.
Prateek218,

Grazie, avevo aggiornato la classe sbagliata, ecco perché ho ricevuto l'errore.
Jhorra,

2
Ho la versione classpath 'com.google.gms:google-services:4.1.0'non più aggiornata ma sì, è maggiore di 3.2.0. Nessuna risoluzione ancora!
sud007,

@ sud007 puoi spiegare un po 'quale problema stai affrontando o pubblicare il tuo build.gradle (livello di progetto)
Prateek218

22

L'utilizzo della versione più recente dei servizi di google gms l'ha risolto per me.

A livello di progetto build.gradle:

buildscript {
    ...
    dependencies {
        classpath 'com.google.gms:google-services:3.2.1'
        ...  
    }
}

18

Apri il tuo file build.gradle che si trova qui:

inserisci qui la descrizione dell'immagine

Questo è il vecchio modo di scrivere le librerie delle dipendenze (per la versione di livello 2 e precedenti):

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

Questo è il nuovo modo (giusto) di importare le dipendenze per la versione 3 di Gradle:

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
Grazie amico! Questa sembra la risposta più aggiornata qui a gennaio 2019
NaturalBornCamper

Questa risposta è utile per coloro che si trovano ad affrontare questo problema per la prima volta. Tuttavia, OP ha una domanda diversa, che dice che anche dopo tali modifiche, viene visualizzato un messaggio di errore.
sud007,

13

Risposta di google: https://issuetracker.google.com/issues/74048134

Ci sarebbe ancora qualche dipendenza che usa ancora la compilazione, controlla attentamente le dipendenze dell'applicazione e le dipendenze transitive.


1
Ho rimosso TUTTE le dipendenze in TUTTI i build.gradles per il mio progetto e continuo a ricevere l'errore
behelit

3
EDIT: è stato causato dal regno, usando la versione precedente
behelit

7

https://issuetracker.google.com/issues/72479188 indica che i plugin a volte possono introdurre dipendenze di "compilazione" e questo è ciò che attiva l'avvertimento. Probabilmente è il modo più semplice per evidenziare quel problema e attendere fino a quando non lo risolvono per indicare quali plugin stanno causando il problema.


6

Non è necessario rimuovere la linea. Come ha scritto Jkrevis, aggiorna com.google.gms: google-services alla 3.2.0 e interrompe gli avvisi.


1
Hai sostituito ogni occorrenza di "compilazione" con "implementazione" in build.gradle del tuo progetto (Modulo: App) e aggiornato com.google.gms: google-services in build.gradle (Progetto) alla 3.2.0?
Tom,

6

Ho riscontrato questo problema senza usare com.google.gms:google-services. La soluzione che risolve questo tipo di problema come di seguito:

  1. controlla i build.gradlefile di tutti i progetti e moduli. O semplicemente la parola chiave di ricerca globale 'compilare' per trovare dove causare questo avviso.
  2. se il metodo sopra riportato non è in grado di risolvere questo avviso, utilizzare il comando CLI, ./gradlew assembleDebug -d > gradle.log
    stampare le informazioni dettagliate di debug su un file denominato gradle.logo su qualsiasi altro, poiché le informazioni sono troppe. Quindi cerca la parola "AVVISO" per trovare la posizione gradle.log, in genere puoi trovare quale dipendenza o plugin causano l'avviso.

2
Penso che questa sia la soluzione generale. Il problema potrebbe essere causato da una o più delle tue dipendenze
Rasmusob,

5

Nel mio caso, è causato dalla libreria Realm, dopo averlo aggiornato all'ultima versione (5.1.0 finora) di Realm, il problema è stato risolto!

Ecco la sceneggiatura funzionante:

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

Il solo aggiornamento della versione del servizio Google non ha funzionato per me.

  • Innanzitutto assicurati che tutte le tue dipendenze compilevengano sostituite implementation.
  • Aggiorna tutte le dipendenze nel tuo progetto. Perché se una delle tue dipendenze sta avendo, il compiletuo progetto mostrerà questo errore. Quindi aggiorna la versione di tutte le dipendenze.

2

vai al tuo file build.gradle a livello di progetto troverai le seguenti righe evidenziate

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

Nel mio caso era una vecchia dipendenza che utilizzava la compilazione per le dipendenze transitive: com.jakewharton.hugo

Dopo averlo rimosso dal mio grado, è stato compilato.


1

La soluzione alternativa per risolvere questo problema è stata per me utilizzare una versione precedente di Gradle, che è disponibile qui :

Ho usato la versione gradle-3.0-rc-1-src, ma anche altri potrebbero funzionare, anche se probabilmente non dovrebbe essere più recente della versione 3.0.

Per prima cosa estrai il file zip dove preferisci.

Quindi vai su File -> Impostazioni -> Build, Execution, Deployment -> Gradle e modifica l'impostazione in Usa distribuzione gradle locale. Successivamente, assicurati che il campo Gradle Home punta alla directory .gradle nella directory che hai appena decompresso.

Ricostruisci il progetto e tutto dovrebbe andare bene.


0

Ho provato a cambiare i servizi di google gms con quelli più recenti com.google.gms:google-services:3.2.1in Android Studio 3.0.1 ma l'avviso persiste ancora.

Come raccomandato dal compilatore, ho cambiato tutte le compiledipendenze implementatione testCompiledi testImplementationcome questo ..

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

E infine l'avviso viene rimosso!


0

Puoi fare queste due opzioni:

  1. Aggiungi il percorso di classe "com.google.gms: google-services: 3.2.0" nel tuo progetto: dipendenze build.gradle e
  2. Sostituisci il tuo modulo: build.gradle in dipendenza dalla compilazione con l'implementazione e non riceverai alcun messaggio di avviso.

0

Aggiungi da build.gradledabuild script

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

e tutte le dipendenze "compile"sostituiscono "implementation".

quello ha funzionato da me.


Nota che se lo stai usando classpathdevi usarlo all'interno di un buildscriptblocco; inoltre, non è possibile utilizzare implementationall'interno di un buildscriptblocco.
ChumiestBucket

0

La versione attuale è 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

Per me cambiando compilare in implementazione risolto

Prima

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'

Dopo

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

Spero che tu sia interessato da build.gradle (app) Se lo fai, segui questo passaggio

Sostituisci la compilazione con androidTestImplementation in build.gradle

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

così semplice ! spero che questo risolva


-3

Nel mio caso il problema era il plugin gradle dei servizi Google con la seguente riga nel file gradle:

applica il plug-in: "com.google.gms.google-services"

La rimozione di questo ha risolto il problema


-7

vai a te build.gradle (a livello di app)

build del modulo build.gradle

e sostituisci la parola "compila" con "implementazione"

funzionerà al 100%


6
Questa risposta non è utile. L'OP ha già dichiarato che ciò è stato fatto, quindi non può essere di aiuto.
NightOwl888,

1
ho avuto lo stesso problema, non sono riuscito a generare la mia app apk bcoz di quello, quella risposta ha risolto il mio problema
Ayoub

Questa non è la stessa situazione, OP ha già dichiarato di averlo fatto (anch'io sono nella stessa barca) a causa delle dipendenze
ElliotM

OP ha detto "Ho sostituito ogni ricorrenza della compilazione con l'implementazione".
mapo,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.