Aggiornamento della libreria di Google Play Services e simbolo mancante @ integer / google_play_services_version


186

Quando aggiorno il mio progetto all'ultima versione di Google Play Services ( v4.0, rilasciata ad Halloween 2013 ), ora dovresti aggiungere un nuovo tag nel AndroidManifest.xmlfile.

<meta-data
    android:name="com.google.android.gms.version"
    android:value="@integer/google_play_services_version" />

Sfortunatamente, quando provo a farlo, ottengo questo errore di compilazione:

android-apt-compiler: /blahblah/AndroidManifest.xml:409: error: Error: No resource found that matches the given name (at 'value' with value '@integer/google_play_services_version').

Posso quindi accedere al file in google-play-services_lib/res/values/version.xmle visualizzare il numero intero non elaborato per quel simbolo:

<integer name="google_play_services_version">4030500</integer>

E quindi reinserirlo nel mio AndroidManifest.xml:

<meta-data
    android:name="com.google.android.gms.version"
    android:value="4030500" />

In questo modo funziona perfettamente e quindi posso compilare ed eseguire il progetto e l'app bene. Ma è sicuramente una soluzione indesiderata con ovvi problemi di aggiornabilità.

Qualche idea?


ha esattamente lo stesso problema in questo momento - ma non è stato possibile trovare l'intero.
Björn Hallström,

Risposte:


256

Per tutti coloro che usano Eclipse, ecco come dovresti farlo.

Eclipse -> importa -> codice Android esistente -> sfoglia -> vai a FOLDER google-play-services_lib (android-sdk / extra / google / google_play_services / libproject).

Quindi, sul tuo progetto

control click -> properties -> android -> librerie, aggiungi -> seleziona il progetto che hai appena importato -> ok


Ho provato questo (seguendo le istruzioni di quell'altra domanda per individuare la cartella), ma Eclipse dice che non è possibile scrivere il .projectfile nella google-play-services_libdirectory indicata . Ovviamente, la ragione immediata è che Eclipse non può scrivere nella directory dei Programmi, dove si trova l'SDK, ma la domanda più concreta sarebbe perché modificare il .projectfile (che apparentemente appartiene all'SDK e quindi dovrebbe essere "corretto") è necessario innanzitutto.
OR Mapper,

Non l'ho mai visto prima, quindi non so esattamente come risolverlo. Ciò in mente, a meno che non sia già stato esplicitamente modificato, non credo che l'errore esista nella cartella. È possibile che sia semplicemente obsoleto e debba essere scaricato nuovamente (è improbabile che sia anche il problema, ma non si sa mai).
PSchuette,

Hai riscontrato questo errore durante il tentativo di aggiungere la libreria o durante l'importazione del progetto?
PSchuette,

Grazie, ha lavorato per me, su Eclipse. Ho pensato di averlo fatto bene, ma l'ho fatto di nuovo e questo ha risolto il problema del compilatore.
Anna Billstrom,

4
La CARTELLA che devi importare è qui: extra \ google \ google_play_services \ libproject
Kamil Szot

78

Questa correzione può essere applicata solo agli utenti IntelliJ !! (Ulteriori informazioni nella parte inferiore di questo post che dovrebbero applicarsi a tutti.)

Risolto questo problema! Uso IntelliJ e risulta che avevo appena configurato male il modo in cui includevo il google-play-services_libmodulo come dipendenza.

Dato che l'ho risolto interamente tramite la GUI e non modificando affatto alcun file, ecco un paio di schermate:

Step 1 - Struttura iniziale del progetto Quindi la mia struttura del progetto è iniziata così:

Passaggio 2: libreria go-play-services rimossa Quindi ho rimosso la google-play-serviceslibreria dal mio elenco di dipendenze selezionandola e facendo clic sul pulsante meno in fondo. Notare l'errore nella parte inferiore della finestra di dialogo, poiché il mio progetto richiede assolutamente questa libreria. Non preoccuparti, lo aggiungeremo presto!

Passaggio 3: aggiunti google-play-services come dipendenza del modulo Successivamente ho aggiunto google-play-services_libuna dipendenza del modulo anziché una dipendenza della libreria. Quindi ho premuto il pulsante freccia su in basso un paio di volte per spostare questa dipendenza in cima all'elenco. Ma noti l'errore in fondo (non abbiamo ancora finito!)

Passaggio 4: fai clic sulla lampadina per aggiungere la libreria google-play-services come dipendenza Ho quindi fatto clic sulla lampadina nella parte inferiore della finestra di dialogo nell'area dei messaggi di errore per visualizzare questo piccolo popup che offre due opzioni ( Aggiungi alle dipendenze ... o Rimuovi libreria ). Fai clic sull'opzione Aggiungi alle dipendenze ... !

Passaggio 5: aggiungi la libreria al modulo google-play-services_lib Una nuova finestra di dialogo dovrebbe essere spuntata. Mi ha dato due scelte, una per il mio progetto principale (il suo nome è sfocato) e poi un'altra per il google-play-services_libprogetto. Il tuo potrebbe avere un sacco di più a seconda del tuo progetto (come puoi vedere actionbarsherlock, cose del genere). Seleziona google-play-services_libe fai clic su OK!

E finalmente hai finito! Spero che questo aiuti qualcun altro là fuori!

Ulteriori informazioni

Credo che la ragione per cui questo problema stava cominciando è perché pensavo di aver incluso correttamente l'intero google-play-services_libprogetto nel mio progetto generale ... ma in realtà non l'avevo fatto, e invece avevo incluso correttamente solo il suo file jar ( google-play-services_lib/libs/google-play-services.jar). Questo file jar include solo il codice, non i valori delle risorse di Android, e quindi come tale il @integer/google_play_services_versionvalore non è mai stato veramente nel mio progetto. Ma il codice è stato in grado di essere utilizzato nel mio progetto, e questo ha fatto sembrare che tutto andasse bene.

E come nota a margine, anche la risoluzione di questo problema sembra aver risolto il GooglePlayServicesUtil.getErrorDialog(...).show()crash che avevo. Ma questo potrebbe anche essere stato risolto dall'aggiornamento, non proprio sicuro al 100% lì.


2
Non funziona per me. Non ho la "lampadina nella parte inferiore della finestra di dialogo nell'area dei messaggi di errore per far apparire questo piccolo popup che offre due opzioni"
Vadorequest,

2
Nel tuo caso, forse proverei a rimuovere completamente Google Play Services dal tuo progetto e quindi a reimportarli. Poiché questo problema di numero intero mancante si verifica solo se Google Play Services viene importato in modo errato in primo luogo, potrebbe essere una buona idea iniziare da zero.
Charles Madere,

1
@Vadorequest puoi anche selezionare il modulo google-play-services-lib e aggiungere il file google-play-services.jar come dipendenza del modulo (! Al modulo google-play-services-lib!)
Su-Au Hwang

2
Oltre a questa risposta (specifica IntelliJ) se si sta pianificando di utilizzare effettivamente i metodi / le classi delle librerie, è necessario accedere a File> Struttura del progetto> selezionare il modulo google-play-services_lib> Dipendenze e selezionare "Esportato" per the google-play-services.jar
Su-Au Hwang,

2
Riepilogo: aggiungi la directory libproject come modulo e rendila dipendente dal tuo progetto principale per ottenere il valore intero dalla directory
libproject

31

Ho affrontato lo stesso problema e apparentemente Eclipse in qualche modo ha lasciato il version.xmlfile in / res / valori dal google-play-services_libprogetto originale mentre ne facevo una copia. Ho estratto il file dal progetto originale e l'ho incollato nella mia copia del progetto e il problema è stato risolto.


Questa è stata la soluzione che mi ha anche risolto, è una supervisione incredibile da parte di Google se me lo chiedi.
Henrique de Sousa,

Grazie amico, questo ha risolto il mio problema
Fabii,

1
Questo ha risolto il mio problema. Perché l'importazione eclipse ha ignorato questo file? Qualche idea?
nizam.sp,

24

Su Eclipse, dopo aver importato la libreria di Google Play nell'area di lavoro del progetto, ho appena copiato il file version.xml da

google-play-services_lib/res/values/version.xml

per

MyProjectName/res/values/version.xml

3
In questo modo funzionerà, ma il problema è che rende un po 'più fastidioso l'aggiornamento a una versione più recente della libreria di Google Play Services. Probabilmente dovrai sostituire il version.xmlfile con ogni aggiornamento.
Charles Madere,

20

Per chiunque utilizzi il gradle: non includere l'origine del progetto, ma invece scaricalo utilizzando SDK Manager e aggiungi questa riga alle dipendenze:

compile 'com.google.android.gms:play-services:4.0.30'

Solo che non lo trova: Errore: si è verificato un problema durante la configurazione del progetto ': app'. > Impossibile risolvere tutte le dipendenze per la configurazione ': app: _debugCompile'. > Impossibile trovare una versione corrispondente a com.google.android.gms: play-services: 6.1. +. Ricerca nelle seguenti posizioni: jcenter.bintray.com/com/google/android/gms/play-services/… jcenter.bintray.com/com/google/android/gms/play-services
matteo

file: /home/teo/Documents/programmi/android-studio-new/sdk/extras/android/m2repository/com/google/android/gms/play-services/maven-metadata.xml file: / home / teo / Documenti / programmi / android-studio-new / sdk / extra / android / m2repository / com / google / android / gms / play-services / Richiesto da: xxxxxxx: app: non specificato
matteo

Il percorso in cui cerca la libreria sembra non corrispondere alla posizione in cui il gestore sdk l'ha effettivamente scaricato, ma anche dopo aver creato un collegamento simbolico, il problema non viene risolto. Immagino di non riuscire a capire quale file o cartella debba trovare esattamente. Qualche idea?
matteo,

1
Per vedere quali versioni hai: "ls -1 $ ANDROID_HOME / extra / google / m2repository / com / google / android / gms / play-services". Per ottenere versioni più recenti, esegui il gestore SDK e aggiorna i componenti desiderati. Non scherzare con i collegamenti simbolici.
Sofi Software LLC,

12
  1. Installa "Google Play Services" e "Google Repository" da Android SDK Manager.
  2. Aggiungi la linea compile 'com.google.android.gms:play-services:4.1.32@aar'alla tua build.gradle.
  3. Di conseguenza la risorsa @integer/google_play_services_versionsarà disponibile.

1
Ho aggiunto questa compilazione "com.google.android.gms: play-services: 4.4.52"
powder366

questo ha fatto per me. Nessuno ha pubblicato quale fosse il risultato finale della sezione delle dipendenze in build.gradle ... sarebbe stato utile
snowking16

10

Al di fuori del bracciale, sembra che il tuo progetto sia collegato a una versione precedente del progetto della libreria Play Services. L'approccio consigliato da Google è di trovare il progetto di libreria nell'SDK e fare una copia locale. Ciò significa, tuttavia, che ogni volta che aggiorni il progetto della libreria Play Services tramite SDK Manager, devi anche sostituire la tua copia con una nuova copia.


Sì, ho integrato la libreria nel mio progetto inserendo una copia dei file scaricati con Android SDK Manager nella mia directory di lavoro. Inoltre ho aggiornato la libreria a questa nuova versione facendo la stessa cosa (copiato i file dalla directory SDK di Android e sovrascrivendo quelli esistenti nel mio progetto).
Charles Madere,


7

dopo l'aggiornamento all'ultima versione ho riscontrato questo problema con tutti i miei progetti, ma è stato risolto aggiungendo nuovamente il riferimento alla libreria:

se non hai la libreria nel tuo spazio di lavoro in Eclipse puoi aggiungerla con: File-> Import-> Existing Android Code Into Workspace-> sfoglia e naviga nel google-play-services_libproject lib, ( android-sdk/extras/google/google_play_services/libproject).

inserisci qui la descrizione dell'immagine

quindi l'eliminazione /bine le /gencartelle del mio progetto (qualcosa di simile all'opzione clean) e la ricostruzione del mio progetto.


ma questo rende l'apk 5mb più pesante
Siddharth il

6

Risolto per Eclipse

Seguire i passaggi seguenti:

  1. Importa la cartella google-play-services_lib come progetto, usando import-> Codice Android esistente nell'area di lavoro
  2. Dalle proprietà del progetto seleziona la sezione Android, in basso Nella sezione Libreria fai clic su Aggiungi e seleziona google-play-services_lib e Applica Segui il link http://i.stack.imgur.com/opSeJ.png per vedere lo screenshot

Ero google-play-services_libdentroF:\Android\sdk\extras\google\google_play_services\libproject\google-play-services_lib
Daniel Bonetti il

5

Il sito per sviluppatori Android di Google contiene istruzioni su "Aggiungi servizi Google Play al tuo progetto" e sono anche rilevanti per aggiornare la versione di Servizi Play. C'è anche un menu a discesa per visualizzare le istruzioni per Eclipse, Android Studio o "Qualcos'altro". Sarebbe il posto migliore per visualizzare le istruzioni nel caso in cui cambino. La pagina è qui:

http://developer.android.com/google/play-services/setup.html

Ma poiché la maggior parte delle risposte qui sono per Eclipse, ecco un breve riepilogo per l'aggiornamento di Play Services con Android Studio

  1. Apri il file build.gradle nella directory del modulo dell'applicazione. Nota: i progetti Android Studio contengono un file build.gradle di livello superiore e un file build.gradle per ciascun modulo. Assicurati di modificare il file per il modulo dell'applicazione.
  2. Aggiorna la regola di compilazione in "dipendenze" per fare riferimento alla versione dei servizi di gioco che hai scaricato sul tuo computer di sviluppo.

Puoi trovare il numero di versione per la versione dei servizi di gioco che hai scaricato sul tuo computer di sviluppo guardando nella cartella \ sdk \ extras \ google \ m2repository \ com \ google \ android \ gms \ play-services, come spiegato qui : Come posso abbinare una revisione di Google Play Services a una versione di installazione?


Finalmente una buona risposta chiara per i principianti di Android. Questa risposta dovrebbe essere posta più in alto.
Jelle

4

Per Eclipse, ho appena aggiunto il riferimento al progetto google-play-services_lib in:

Proprietà-Android Nel riquadro Libreria (riquadro inferiore), assicurarsi che sia elencato google-play-services_lib. In caso contrario, fai clic sul pulsante Aggiungi .. e seleziona google-play-services_lib.


3

Ho avuto lo stesso problema, il file version.xml non era in google-play-services_lib. Basta avviare sdk manager e accettare l'aggiornamento, in particolare le cose relative agli "extra".


2

Durante l'importazione di google-play-services_lib, controlla il codice della versione definito in AndroidManifest.xml e version.xml. Avevo trovato la differenza nel codice versione e l'ho modificato in 4242000 . Dopo aver apportato la modifica non c'è più errore di compilazione in @ integer / google_play_services_version .inserisci qui la descrizione dell'immagine


2
Questo non è un buon modo di farlo. Dovrai aggiornare manualmente ogni volta che aggiorni Google Play Services.
PSchuette,

2

Risolto aggiungendo Google Play Services al mio modulo: file di build gradle app. La documentazione dice anche di aggiornare la versione quando si aggiorna GMS.

dependencies {

compile 'com.google.android.gms:play-services:9.6.1'

} 

1

Di seguito sono riportate le azioni principali che eviteranno molti errori durante l'utilizzo del servizio di riproduzione di Google Lib:

  1. Assicurati di copiare il progetto lib nell'area di lavoro dei progetti Eclipse.
  2. SDK di destinazione per il progetto lib di Google Play Service dovrebbe essere "Google
  3. API "3- I metadati devono essere aggiunti al file manifest.
  4. L'SDK di destinazione del progetto dovrebbe essere 17 a meno che non sia stato completamente aggiornato a 19, perché in alcuni casi 19 non funziona bene.

1

Ho avuto lo stesso problema con un progetto usando Maven e IntelliJ. I servizi di Google Play vengono aggiunti come dipendenza Maven. La build maven ha funzionato bene dalla riga di comando, ma IntelliJ si è lamentato di questo simbolo mancante@integer/google_play_services_version

Nel mio caso ho forzato un aggiornamento dei file POM maven e ho risolto il problema.


1

Nel mio caso, dovevo copiare FOLDER google-play-services_lib nello stesso DRIVE dei codici sorgente delle mie app

  • F: \ Products \ Android \ APP * .java <- Le mie app sono qui, quindi ho copiato nella cartella qui sotto
  • F: \ Prodotti \ Android \ libs \ google-play-services_lib

1

Quando non si utilizza un IDE, ma si usano build da riga di comando (usando ant e ndk-build), ecco come risolverlo:

Installa tutte le parti richieste con il comando 'android'. Quindi avere una copia di google-play-service_lib / nella radice del progetto. Modifica project.properties per includere questa riga:

android.library.reference.1=./google-play-services_lib

Ma è necessario android update project -p . -t android-22in google-play-services_libprimo luogo. Equivalentemente, aggiungi <property name="android.library.reference.1" value="./google-play-services_lib"/>al tuo build.xml(ho minimizzato il mio build.xmle ho abbandonato il .properties).
Ciro Santilli 14 冠状 病 六四 事件 法轮功

0

Ho avuto lo stesso problema. Il problema era che "google-play-services.jar" non era stato correttamente importato nel mio progetto anche se faceva parte del progetto google_play_service_lib. Se stai usando Eclipse, controlla e vedi se riesci a vedere il file jar dei servizi di riproduzione nella sezione Librerie private di Android e se questo viene esportato dalla libreria.

Sto utilizzando gli strumenti della piattaforma Android SDK versione 17 (non 19) e gli strumenti Android SDK versione 22.0.1


0

Ho appena aggiornato i servizi di Google Play nella cartella Extras in Android SDK Manager


0

Il problema per me era che il progetto della biblioteca e il progetto usando i servizi di gioco erano in diverse directory. Quindi:

  • 1.Aggiungere i file nello stesso spazio di lavoro, quindi rimuovere la libreria.
  • 2. Riavvia l'eclissi
  • 3. Aggiungere nuovamente il progetto della biblioteca
  • 4.Clear

0

Google suggerisce di non creare un progetto direttamente dalla directory SDK. È meglio copiare il progetto lib nella posizione in cui si trova l'app, quindi importarlo da lì. Altrimenti la prossima volta che andrai a importare il progetto per un'altra app, sarà già in uso.

https://developer.android.com/google/play-services/setup.html

Nota: si dovrebbe fare riferimento a una copia della libreria copiata nell'area di lavoro di sviluppo, non si dovrebbe fare riferimento alla libreria direttamente dalla directory dell'SDK di Android.


0

Chiunque cerchi nel 2017, la versione 10.0.1 dei servizi di gioco richiede l'importazione play-services-basement(usare per essere in play-services-base).


Potresti spiegare un po 'di più? Come vedo le dipendenze correnti e come aggiungerne altre?
Hassan Gulzar,

Ho fatto tutto manualmente e per tentativi ed errori quando ho scritto questa risposta. L'uso della pendenza ha reso le cose molto più facili.
goobliata,

0

Android Studio 3.3.2 in Windows 10

File -> Cache non valide / Riavvia e scegli il invalidate and Restartpulsante nella finestra di dialogo visualizzata.


0

Ho avuto lo stesso problema, aggiungi questa 2 riga nel tuo build.gradle il problema sarà probabilmente risolto. ;)

dependencies {  
  implementation 'com.google.android.gms:play-services:12.0.1'  
  implementation 'com.google.android.gms:play-services-vision:10.0.0'    
}
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.