Android Studio com Google Play Services


95

Estou tentando testar o Google Play Services com o novo Android Studio. Eu tenho um projeto com dependência do google_play_services.jar. Mas quando tento reconstruir o projeto, recebo os seguintes erros:

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

Parece que ele tem dois arquivos BuildConfig e também duas classes R. Como posso resolver o problema?

EDITAR:

Percebi que o compilador compila dois arquivos R.java: o que está na pasta do meu projeto e outro que está localizado na pasta% USERPROFILE% .AndroidStudioPreview Então, tentei excluir esta pasta "Preview" nas configurações do compilador e agora está funcionando. Esse problema ocorre apenas depois que eu comecei a usar as aulas do Google Play Services em meu projeto. Agradeço se alguém puder explicar o motivo desse problema.


Qualquer um pode ajudar no que este compilar 'com.google.android.gms: play-services: 6.5.87' faz enquanto é adicionado à seção de dependências no android studio. Podemos adicionar o jarro também, mas o que a linha acima faz, pois não estamos adicionando jarros.
Android Killer

Respostas:


243

Todas essas respostas estão erradas, desde o lançamento do plugin gradle v0.4.2, a configuração dos serviços do Google Play no android studio é simples. Você não precisa importar nenhum jar ou adicionar qualquer biblioteca de projeto, nem adicionar nenhum novo módulo no android studio. O que você precisa fazer é adicionar as dependências corretas ao arquivo build.gradle. Dê uma olhada nesses links: atualização do plug-in Gradle v0.4.2 , Novo sistema de compilação e este exemplo

A maneira correta de fazer isso é a seguinte:

Em primeiro lugar, você deve iniciar o gerenciador SDK e baixar e instalar os seguintes arquivos localizados em "extras": repositório de suporte do Android , serviços de jogo do Google , repositório do Google .

Reinicie o Android Studio e abra o arquivo gradle de compilação. Você deve modificar seu arquivo build.gradle para ficar assim nas dependências:

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

E, finalmente, sincronize seu projeto (o botão à esquerda do gerenciador de AVD).

Desde a versão 6.5 você pode incluir a biblioteca completa (muito grande) ou apenas os módulos que você precisa (melhor opção). Ou seja, se você só precisa do Google Maps e Analytics, pode substituir o exemplo anterior pelo seguinte:

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

Você pode encontrar a lista completa de dependências aqui

Algumas notas laterais:

  • Use a versão mais recente da biblioteca de serviços do jogo. Se for uma versão antiga, o Android Studio irá destacá-la. A partir de hoje (5 de fevereiro é 6.5.87), mas você pode verificar a versão mais recente no Gradle.
  • Após uma grande atualização do Android Studio, limpe e reconstrua seu projeto seguindo as próximas instruções, conforme sugerido nos comentários de @ user123321

    cd para a pasta de seu projeto
    ./gradlew clean
    ./gradlew build


ei Estornino. Eu vi essa atualização também, mas estava me perguntando como o Android Studio (pelo menos o IDE em si) pega as dependências. você fez funcionar apenas com as configurações do Gradle?
victor n.

sim funcionou para mim. o IDE também é capaz de resolver os novos nomes. obrigado.
victor n.

Desculpe pelo atraso na resposta. Quando você pressiona o botão de sincronização, o ide adiciona as novas dependências automaticamente. É o sistema de construção que rege o comportamento do ide e é desencorajado a fazer alterações no projeto no estilo de idéia "antigo" (quero dizer, alterar os módulos e a configuração do projeto). Fico feliz que esteja funcionando para você.
Imanol

5
Certifique-se de que você ./gradlew limpe e ./gradlew construa antes que o Android Studio 2.x pegue a dependência. Caso contrário, você obtém um erro NoClassDef
user123321

2
A partir de hoje, a última compilação que obtive foi 5.2.08
chrisbjr

114
  1. Vá para Arquivo -> Estrutura do Projeto
  2. Selecione 'Configurações do projeto'
  3. Selecione a guia 'Dependências'
  4. Clique em '+' e selecione '1. Dependências da biblioteca'
  5. Pesquise por: com.google.android.gms: play-services
  6. Selecione a versão mais recente e clique em 'OK'

Voila! Não há necessidade de lutar com Gradle :)


5
Isso funcionou para mim e é muito fácil. Ele já sabe o número da versão mais recente dos serviços de reprodução - basta selecioná-lo em uma lista e o arquivo gradle é modificado para você!
Nick Perkins

Posso usar o mesmo método para importar BaseGameUtils para o placar?
eng.ahmed

Sim, Ahmed. Desta forma, você pode importar qualquer biblioteca Android.
Ivo Stoyanov

Soluções simples e elegantes. Obrigado @IvoStoyanov isso vai economizar muito tempo de iniciantes como eu.
Manikandan S

5

EDITADO: Esse cara realmente trouxe para casa e tem um pequeno tutorial bom http://instantiatorgratification.blogspot.com/2013/05/google-play-services-with-android-studio.html

uma nota lateral: eu tinha brincado tanto que precisava fazer um gradlew cleanpara que funcionasse com sucesso

Se você importou seu projeto ou está trabalhando no aplicativo Sample Maps localizado em \ extras \ google \ google_play_services \ samples \ maps, confira este tutorial.

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

Se você estiver criando um novo projeto do zero, observe os comentários de Xav nessa mesma postagem. Ele descreve que o Android Studio usa um compilador diferente e que você deve modificar o arquivo build.gradle manualmente. Fiz isso com sucesso. eu copiei

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

no meu diretório lib e adicionei o seguinte ao meu arquivo build.gradle

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

Além disso, se este é um novo projeto, dê uma olhada neste post também.

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


7
O artigo para o qual você está vinculado agora está obsoleto. Esta solução não é recomendada.
RevNoah

4

A maioria dessas respostas aborda apenas dependências de tempo de compilação, mas você encontrará um host de exceções NoClassDef em tempo de execução. Isso porque você precisa de mais do que google-play-services.jar. Ele faz referência a recursos que fazem parte do projeto da biblioteca e que não estão incluídos corretamente se você tiver apenas o jar.

O que funcionou melhor para mim foi primeiro configurar o projeto corretamente no Eclipse. Tenha seu projeto estruturado de forma que inclua seu aplicativo e a biblioteca, conforme descrito aqui: http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Multi-project-setup

Em seguida, exporte seu projeto de aplicativo do eclipse e importe para o Android Studio conforme descrito aqui: http://developer.android.com/sdk/installing/migrate.html . Certifique-se de exportar seu projeto de aplicativo e o projeto de biblioteca de serviços do Google Play. Ao importar irá detectar o projeto da biblioteca e importá-lo como um módulo. Acabei de aceitar todos os padrões durante o processo de importação do projeto.


2
Obrigado, mas não quero usar eclipse!
androidtester

2

Integração de serviços do Google Play no 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.+'
}

Etapa 3:

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

Passo 4:

Sync project file with grandle.
wait for few minute.

Etapa 5:

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

Por favor, coloque um comentário se precisar de ajuda. Boa codificação.


2

Nenhuma das soluções acima funcionou para mim. Não tenho certeza se é específico para minha configuração ou nova versão.

Estou usando o Android Studio Beta 0.8.9 e não estava recebendo nenhum com.google.android.gms: play-service na lista da biblioteca ao seguir esta instrução:

Vá para Arquivo -> Estrutura do Projeto -> Selecionar Configurações do Projeto -> Selecionar Guia 'Dependências' Clique em '+' -> 1. Dependências da Biblioteca -> Selecionar com.google.android.gms: play-services: +

Eu já tinha feito isso:

Em primeiro lugar, você deve iniciar o gerenciador SDK e baixar e instalar os seguintes arquivos localizados em "extras": repositório de suporte do Android, serviços de jogo do Google, repositório do Google.

O que resolveu foi adicionar, a partir do SDK Manager, "Google Play Services para Froyo" e, em seguida, repetir a primeira etapa.

Não entendi o motivo corretamente, mas funcionou.

PS: Acabei de observar que mesmo agora, quando procuro por serviços de reprodução, isso não vem, mas quando eu rolar diretamente e olhar a lista, ela está bem ali.


2

Siga este artigo -> http://developer.android.com/google/play-services/setup.html

Você deve escolher Usando Android Studio

insira a descrição da imagem aqui

Exemplo de arquivo Gradle:

Nota: Abra o arquivo build.gradle dentro do diretório do módulo do aplicativo.

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

Você pode encontrar a versão mais recente do Google Play Services aqui: https://developer.android.com/google/play-services/index.html


1

Fiz isso funcionar depois de fazer o seguinte:

  • Tenha google-play-services-lib como um módulo (observe a diferença entre o módulo e o projeto) e, em seguida, adicione google-play-services.jar ao diretório "libs" de seus modelos.
  • Depois disso, adicione o jar ao caminho de construção criando uma biblioteca ou adicione o jar a outra biblioteca. Geralmente tenho uma única biblioteca IDEA à qual adiciono todos os meus arquivos /libs/*.jar.
  • Adicione a biblioteca ao seu caminho de construção de módulos por meio de Configurações do Módulo (F4).
  • Adicione google-play-services-lib como uma dependência de módulo ao seu projeto.
  • Feito!

Nota: Isso também não me dá as exceções de tempo de execução, funciona.


Recebo os mesmos erros: R.java e BuildConfig.java estão duplicados
androidtester

Você tem o módulo como uma dependência de compilação?
Johan S

Sim! A única solução é a que mencionei antes (exclua a pasta de visualização)
androidtester

0

Abra o arquivo build.gradle do projeto e adicione a linha abaixo no módulo de dependências.

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

A seguir será adicionado Google Analytics e Maps se você não quiser integrar a biblioteca 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

No meu caso google-play-services_lib são integrados como módulo (External Libs) para Google map e GCM no meu projeto.

Agora, esse tempo exige a implementação da API de preenchimento automático do Google Places, mas o problema é que o código é novo e minhas bibliotecas são antigas, então algumas classes não foram encontradas:

seguindo estes passos ...

1> Atualize o serviço Google Play no SDK Manager

2> selecione o novo arquivo .jar do serviço google play ( Sdk / extras / google / google_play_services / libproject / google-play-services_lib / libs ) substitua pelo antigo

consegui sucesso ... !!!


-3

Copiei os arquivos libs de reprodução do google-play-services_lib para o diretório libs do meu projeto:

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

Em seguida, selecione-os e clique com o botão direito em "Adicionar como bibliotecas".


1
Obrigado pela sua resposta, mas não funcionou para mim - é semelhante a algo que eu havia tentado antes.
androidtester

Este conselho vai contra outras informações que li em outro lugar. A resposta vinculada na primeira resposta foi descontinuada porque usa esse método.
RevNoah
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.