Android Studio con Google Play Services


95

Sto provando a testare Google Play Services con il nuovo Android Studio. Ho un progetto con una dipendenza da google_play_services.jar. Ma quando provo a ricostruire il progetto ottengo i seguenti errori:

Information:[TstGP3-TstGP3] Crunching PNG Files in source dir: C:\Users\ans\AndroidStudioProjects\TstGP3\TstGP3\src\main\res
Information:[TstGP3-TstGP3] To destination dir: C:\Users\ans\AndroidStudioProjects\TstGP3\build\classes\res-cache\TstGP3-TstGP3
Information:Compilation completed with 2 errors and 0 warnings in 2 sec
Information:2 errors
Information:0 warnings
C:\Users\ans\.AndroidStudioPreview\system\compiler\tstgp3.3f17bd41\.generated\Android_BuildConfig_Generator\TstGP3-TstGP3.74fc5b25\production\com\example\tstgp3\BuildConfig.java
    Error:Error:line (4)error: duplicate class: com.example.tstgp3.BuildConfig
C:\Users\ans\.AndroidStudioPreview\system\compiler\tstgp3.3f17bd41\.generated\aapt\TstGP3-TstGP3.74fc5b25\production\com\example\tstgp3\R.java
    Error:Error:line (10)error: duplicate class: com.example.tstgp3.R

Sembra che abbia due file BuildConfig e anche due classi R. Come posso risolvere il problema?

MODIFICARE:

Ho notato che il compilatore compila due file R.java: quello che si trova nella cartella del mio progetto e un altro che si trova nella cartella% USERPROFILE% .AndroidStudioPreview Quindi, ho provato ad escludere questa cartella "Anteprima" nelle impostazioni del compilatore e ora funziona. Questo problema si verifica solo dopo aver iniziato a utilizzare le classi di Google Play Services nel mio progetto. Apprezzerò se qualcuno può spiegare il motivo di questo problema.


Chiunque può aiutare ciò che fa questa compilazione "com.google.android.gms: play-services: 6.5.87" aggiunta alla sezione delle dipendenze in Android Studio. Possiamo anche aggiungere il barattolo, ma ciò che fa la riga sopra poiché non stiamo aggiungendo barattoli.
Android Killer

Risposte:


243

Tutte queste risposte sono sbagliate, dal momento che il rilascio del plug-in gradle v0.4.2 la configurazione dei servizi di Google Play in Android Studio è semplice. Non è necessario importare alcun jar o aggiungere alcuna libreria di progetto né aggiungere alcun nuovo modulo in Android Studio. Quello che devi fare è aggiungere le dipendenze corrette nel file build.gradle. Dai un'occhiata a questi link: aggiornamento del plugin Gradle v0.4.2 , New Build System e questo esempio

Il corretto modo per farlo è il seguente:

Prima di tutto devi avviare il gestore sdk e scaricare e installare i seguenti file che si trovano sotto "extra": repository di supporto Android , Google Play Services , repository Google .

Riavvia Android Studio e apri il file build gradle. Devi modificare il tuo file build.gradle in questo modo sotto le dipendenze:

dependencies {
    compile 'com.google.android.gms:play-services:6.5.87' 
 }

E infine sincronizza il tuo progetto (il pulsante a sinistra del gestore AVD).

Dalla versione 6.5 puoi includere la libreria completa (molto grande) o solo i moduli di cui hai bisogno (opzione migliore). Cioè se hai solo bisogno di Google Maps e Analytics puoi sostituire l'esempio precedente con il seguente:

dependencies {  
    compile 'com.google.android.gms:play-services-base:6.5.87'    
    compile 'com.google.android.gms:play-services-maps:6.5.87'  
}

Puoi trovare l'elenco completo delle dipendenze qui

Alcune note a margine:

  • Usa l'ultima versione della libreria dei servizi di riproduzione. Se è una vecchia versione, Android Studio la evidenzierà. Ad oggi (il 5 febbraio è 6.5.87) ma puoi controllare l'ultima versione su Gradle Please
  • Dopo un importante aggiornamento di Android Studio, pulisci e ricostruisci il tuo progetto seguendo le istruzioni successive come suggerito nei commenti di @ user123321

    cd nella cartella del progetto
    ./gradlew clean
    ./gradlew build


hey Estornino. Ho visto anche questo aggiornamento, ma mi chiedevo come Android Studio (almeno l'IDE stesso) raccolga le dipendenze? hai fatto funzionare solo con le impostazioni Gradle?
vincitore n.

sì, ha funzionato per me. l'IDE è anche in grado di risolvere i nuovi nomi. Grazie.
vincitore n.

Scusa per il ritardo della risposta. Quando si preme il pulsante di sincronizzazione, l'ide aggiunge automaticamente le nuove dipendenze. È il sistema di compilazione che governa il comportamento dell'ide ed è scoraggiato apportare modifiche al progetto nel "vecchio" stile di idea (intendo cambiare i moduli e la configurazione del progetto). Sono contento che funzioni per te.
Imanol

5
Assicurati di ./gradlew clean quindi ./gradlew build prima che android studio 2.x raccolga la dipendenza. In caso contrario, viene visualizzato un errore
NoClassDef

2
Ad oggi, l'ultima build che ho ricevuto era 5.2.08
chrisbjr

114
  1. Vai a File -> Struttura del progetto
  2. Seleziona "Impostazioni progetto"
  3. Seleziona la scheda "Dipendenze"
  4. Fare clic su "+" e selezionare "1.Dipendenze libreria"
  5. Cerca: com.google.android.gms: play-services
  6. Seleziona l'ultima versione e fai clic su "OK"

Ecco! Non c'è bisogno di combattere con Gradle :)


5
Questo ha funzionato per me ed è molto facile. Conosce già l'ultimo numero di versione dei servizi di riproduzione: basta selezionarlo da un elenco e il file gradle viene modificato per te!
Nick Perkins

Posso usare lo stesso metodo per importare BaseGameUtils per la classifica?
ita

Sì, Ahmed. In questo modo puoi importare qualsiasi libreria Android.
Ivo Stoyanov

Soluzioni semplici ed eleganti. Grazie @IvoStoyanov farà risparmiare molto tempo ai principianti come me.
Manikandan S

5

MODIFICATO: Questo ragazzo l'ha davvero portato a casa e ha un buon piccolo tutorial http://instantiatorgratification.blogspot.com/2013/05/google-play-services-with-android-studio.html

una nota a margine: avevo giocato così tanto che avevo bisogno di fare un gradlew cleanper farlo funzionare con successo

Se hai importato il tuo progetto o stai lavorando dall'applicazione Sample Maps situata in \ extras \ google \ google_play_services \ samples \ maps, dai un'occhiata a questo tutorial.

https://stackoverflow.com/a/16598478/2414698

Se stai creando un nuovo progetto da zero, prendi nota dei commenti di Xav sullo stesso post. Descrive che Android Studio utilizza un compilatore diverso e che devi modificare manualmente il file build.gradle. L'ho fatto con successo. ho copiato

  • google-play-services.jar
  • google-play-services.jar.properties

nella mia directory lib e ho aggiunto quanto segue al mio file build.gradle

dependencies {
    compile files('libs/android-support-v4.jar')
    compile files('libs/google-play-services.jar')
}

Inoltre, se si tratta di un nuovo progetto, dai un'occhiata anche a questo post.

https://stackoverflow.com/a/16671865/2414698


7
L'articolo a cui ti colleghi è ora deprecato. Questa soluzione non è consigliata.
RevNoah

4

La maggior parte di queste risposte riguarda solo le dipendenze in fase di compilazione, ma troverai una serie di eccezioni NoClassDef in fase di esecuzione. Questo perché hai bisogno di qualcosa di più di google-play-services.jar. Fa riferimento a risorse che fanno parte del progetto di libreria e quelle non sono incluse correttamente se hai solo il jar.

Ciò che ha funzionato meglio per me è stato innanzitutto ottenere la configurazione del progetto correttamente in eclipse. Organizza il tuo progetto in modo che includa sia la tua app che la libreria, come descritto qui: http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Multi-project-setup

Quindi esporta il progetto dell'app da eclipse e importalo in Android Studio come descritto qui: http://developer.android.com/sdk/installing/migrate.html . Assicurati di esportare sia il progetto dell'app che il progetto della libreria di Google Play Services. Durante l'importazione, rileverà il progetto della libreria e lo importerà come modulo. Ho appena accettato tutte le impostazioni predefinite durante il processo di importazione del progetto.


2
Grazie, ma non voglio usare eclipse!
androidtester

2

Integrazione dei servizi di Google Play in Android Studio.

Passo 1:

SDK manager->Tools Update this

1.Google play services
2.Android Support Repository

Passo 2:

chance in build.gradle 
defaultConfig {
        minSdkVersion 8
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
    }
    dependencies {
    compile 'com.android.support:appcompat-v7:+'
    compile 'com.google.android.gms:play-services:4.0.+'
}

Passaggio 3:

 android.manifest.xml
<uses-sdk
        android:minSdkVersion="8" />

Passaggio 4:

Sync project file with grandle.
wait for few minute.

Passaggio 5:

File->Project Structure find error with red bulb images,click on go to add dependencies select your app module.
Save

Si prega di inserire un commento se hai bisogno di aiuto. Buona codifica.


2

Nessuna delle soluzioni di cui sopra ha funzionato per me. Non sono sicuro che sia specifico per la mia configurazione o per la nuova versione.

Sto utilizzando Android Studio Beta 0.8.9 e non ho ricevuto alcun com.google.android.gms: play-service nell'elenco della libreria seguendo questa istruzione:

Vai a File -> Struttura progetto -> Seleziona impostazioni progetto -> Seleziona la scheda "Dipendenze" Fai clic su "+" -> 1.Dipendenze libreria -> Seleziona com.google.android.gms: play-services: +

L'avevo già fatto:

Prima di tutto devi avviare il gestore sdk e scaricare e installare i seguenti file che si trovano sotto "extra": repository di supporto Android, Google Play Services, repository Google.

Ciò che ha risolto è stato aggiungere da SDK Manager, "Google Play Services for Froyo", quindi ripetere il primo passaggio.

Non ho capito bene il motivo ma ha funzionato.

PS: Ho appena notato che anche adesso quando cerco servizi di gioco questo non viene fornito, ma quando scorro e guardo direttamente l'elenco è proprio lì.


2

Segui questo articolo -> http://developer.android.com/google/play-services/setup.html

Dovresti scegliere Utilizza Android Studio

inserisci qui la descrizione dell'immagine

File Gradle di esempio:

Nota: apri il file build.gradle nella directory del modulo dell'applicazione.

apply plugin: 'com.android.application'

android {
    compileSdkVersion 20
    buildToolsVersion "20.0.0"

    defaultConfig {
        applicationId "{applicationId}"
        minSdkVersion 14
        targetSdkVersion 20
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:20.+'
    compile 'com.google.android.gms:play-services:6.1.+'
}

Puoi trovare l'ultima versione di Google Play Services qui: https://developer.android.com/google/play-services/index.html


1

Ho funzionato dopo aver fatto quanto segue:

  • Avere google-play-services-lib come modulo (notare la differenza tra modulo e progetto), quindi aggiungere google-play-services.jar alla directory "libs" dei modelli.
  • Dopodiché aggiungi il jar al tuo percorso di compilazione creando una libreria o aggiungi il jar a un'altra libreria. Generalmente ho una singola libreria IDEA a cui aggiungo tutti i miei file /libs/*.jar.
  • Aggiungi la libreria al percorso di compilazione dei moduli tramite Impostazioni modulo (F4).
  • Aggiungi google-play-services-lib come dipendenza del modulo al tuo progetto.
  • Fatto!

Nota: questo non mi dà nemmeno le eccezioni di runtime, funziona.


Ottengo gli stessi errori: R.java e BuildConfig.java sono duplicati
androidtester

Hai il modulo come dipendenza di compilazione?
Johan S

Sì! L'unica soluzione è quella che ho menzionato prima (esclude la cartella Anteprima)
androidtester

0

Apri il file build.gradle del progetto e aggiungi sotto la riga nel modulo delle dipendenze.

dependencies {
    compile 'com.google.android.gms:play-services:7.0.0'
}

Di seguito verranno aggiunti Google Analytics e Maps se non si desidera integrare la libreria completa

dependencies {
    compile 'com.google.android.gms:play-services-analytics:7.0.0'
    compile 'com.google.android.gms:play-services-maps:7.0.0'
}

0

Nel mio caso google-play-services_lib sono integrati come modulo (External Libs) per Google map e GCM nel mio progetto.

Ora, questi tempi richiedono l'implementazione dell'API di completamento automatico di Google Places, ma il problema è che il codice è nuovo e le mie librerie sono vecchie, quindi alcune classi non sono state trovate:

seguendo questi passaggi ...

1> Aggiorna Google Play Service in SDK Manager

2> seleziona il nuovo file .jar del servizio Google Play ( Sdk / extras / google / google_play_services / libproject / google-play-services_lib / libs ) sostituisci con quello vecchio

ho avuto successo ... !!!


-3

Ho copiato i file libs di riproduzione da google-play-services_lib alla directory libs del mio progetto:

  • google-play-services.jar
  • google-play-services.jar.properties.

Quindi selezionali, fai clic con il pulsante destro del mouse su "Aggiungi come librerie".


1
Grazie per la tua risposta, ma non ha funzionato per me - è simile a qualcosa che avevo provato prima.
androidtester

Questo consiglio va contro altre informazioni che ho letto altrove. La risposta collegata alla prima risposta è stata deprecata perché utilizza questo metodo.
RevNoah
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.