Atualização da Biblioteca do Google Play Services e símbolo ausente @ integer / google_play_services_version

186

Ao atualizar meu projeto para a versão mais recente do Google Play Services ( v4.0, lançada no Halloween 2013 ), agora você deve adicionar uma nova tag ao AndroidManifest.xmlarquivo.

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

Infelizmente, quando tento fazer isso, recebo este erro de compilação:

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 navegar até o arquivo em google-play-services_lib/res/values/version.xmle visualizar o número inteiro bruto desse símbolo:

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

E insira-o novamente no meu AndroidManifest.xml:

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

Fazer isso funciona absolutamente bem e, em seguida, posso compilar e executar o projeto e o aplicativo. Mas é definitivamente uma correção indesejável com problemas óbvios de atualização.

Alguma ideia?

Charles Madere
fonte
tem exatamente o mesmo problema agora - mas não conseguiu encontrar o número inteiro.
Björn Hallström

Respostas:

256

Para todos que usam o Eclipse, é assim que você deve fazê-lo.

Eclipse -> importação -> código android existente -> procure -> navegue até a pasta google-play-services_lib (android-sdk / extras / google / google_play_services / libproject).

Então, no seu projeto

controle clique em -> propriedades -> android -> bibliotecas, adicione -> selecione o projeto que você acabou de importar -> ok

PSchuette
fonte
Eu tentei isso (seguindo as instruções dessa outra pergunta para localizar a pasta), mas o Eclipse diz que não pode gravar o .projectarquivo no google-play-services_libdiretório indicado . Obviamente, o motivo imediato é que o Eclipse não pode gravar no diretório Arquivos de Programas, onde o SDK está localizado, mas a questão mais concreta seria por que a modificação do .projectarquivo (que aparentemente pertence ao SDK e, portanto, deve estar "correta") é necessária. em primeiro lugar.
OR Mapper
Eu nunca vi isso antes, então não sei exatamente como corrigi-lo. Isso em mente, a menos que já seja explicitamente modificado, não acho que o erro exista na pasta. É possível que esteja simplesmente desatualizado e precise ser baixado novamente (provavelmente não é o problema também, mas você nunca sabe).
PSchuette
Você sentiu esse erro ao tentar adicionar a biblioteca ou ao importar o projeto?
PSchuette
Obrigado- trabalhou por mim, no Eclipse. Eu pensei que tinha feito certo, mas refiz e corrigi o problema do compilador.
Anna BILLSTRÖM
4
A pasta que você precisa para importação está aqui: extras \ Google \ google_play_services \ libproject
Kamil Szot
78

Observe que essa correção pode ser aplicada apenas aos usuários do IntelliJ !! (Mais informações na parte inferior desta postagem que devem ser aplicadas a todos.)

Corrigido este problema! Eu uso o IntelliJ e acabei de ter configurado mal a maneira como estava incluindo o google-play-services_libmódulo como uma dependência.

Como eu corrigi isso inteiramente através da GUI e não editando nenhum arquivo, aqui estão algumas capturas de tela:

Etapa 1 - Estrutura inicial do projeto Então minha estrutura de projeto começou assim:

Etapa 2 - Biblioteca removida do google-play-services Em seguida, removi a google-play-servicesbiblioteca da minha lista de dependências selecionando-a e clicando no botão menos na parte inferior. Observe o erro na parte inferior da caixa de diálogo, pois meu projeto absolutamente exige essa biblioteca. Mas não se preocupe, iremos adicioná-lo novamente em breve!

Etapa 3 - Adicionado google-play-services como uma dependência do módulo Em seguida, adicionei google-play-services_libcomo uma dependência de módulo em vez de uma dependência de biblioteca. Apertei o botão de seta para cima na parte inferior algumas vezes para mover essa dependência para o topo da lista. Mas observe o erro na parte inferior (ainda não terminamos!)

Etapa 4 - Clique na lâmpada para adicionar a biblioteca do google-play-services como uma dependência Em seguida, cliquei na lâmpada na parte inferior da caixa de diálogo na área de mensagem de erro para exibir esse pequeno pequeno pop-up que oferece duas opções ( Adicionar às dependências ... ou Remover biblioteca ). Clique na opção Adicionar às dependências ... !

Etapa 5 - adicione a biblioteca ao módulo google-play-services_lib Uma nova pequena janela de diálogo deveria aparecer. Isso me deu duas opções, uma para o meu projeto principal (o nome está embaçado) e outra para o google-play-services_libprojeto. O seu pode ter muito mais, dependendo do seu projeto (como você pode ver actionbarsherlock, coisas assim). Selecione google-play-services_libe clique em OK!

E finalmente, você terminou! Espero que isso ajude alguém por aí!

Mais informações

Acredito que a razão pela qual esse problema estava ocorrendo é porque pensei que havia incluído corretamente todo o google-play-services_libprojeto no meu projeto geral ... mas na verdade não o fiz, e apenas incluíra adequadamente seu arquivo jar ( google-play-services_lib/libs/google-play-services.jar). Esse arquivo jar inclui apenas código, não valores de recursos do Android e, portanto, esse @integer/google_play_services_versionvalor nunca esteve realmente no meu projeto. Mas o código pôde ser usado no meu projeto, e isso fez parecer que estava tudo bem.

E, como observação lateral, a correção desse problema também parece ter corrigido a GooglePlayServicesUtil.getErrorDialog(...).show()falha que eu costumava ter. Mas isso também poderia ter sido corrigido pela atualização, não tendo 100% de certeza.

Charles Madere
fonte
2
Não está trabalhando para mim. Eu não tenho a "lâmpada na parte inferior da caixa de diálogo na área de mensagem de erro para abrir este pop-up pequena pouco que dá duas opções"
Vadorequest
2
No seu caso, talvez eu tente remover completamente o Google Play Services do seu projeto e depois reimportá-lo. Como esse problema de número inteiro ausente ocorre apenas se o Google Play Services for importado incorretamente, pode ser uma boa ideia começar do zero.
Charles Madere
1
@Vadorequest, você também pode selecionar o módulo google-play-services-lib e adicionar o arquivo google-play-services.jar como uma dependência do módulo (! Ao módulo google-play-services-lib!)
Su-Au Hwang
2
Além desta resposta (específica para o IntelliJ), se você estiver planejando realmente usar os métodos / classes das bibliotecas, precisará ir em Arquivo> Estrutura do projeto> selecionar módulo google-play-services_lib> Dependências e verificar "Exportado" para o google-play-services.jar
Su-Au Hwang
2
Resumo: adicionar o diretório libproject como um módulo e torná-lo uma dependência para seu projeto principal para obter o valor inteiro do diretório libproject
John61590
31

Eu enfrentei o mesmo problema e, aparentemente, o Eclipse deixou o version.xmlarquivo em / res / values ​​do google-play-services_libprojeto original ao fazer uma cópia. Peguei o arquivo do projeto original e colei na minha cópia do projeto e o problema foi corrigido.

Atul Goyal
fonte
Essa foi a solução que também me corrigiu; é uma supervisão incrível do Google, se você me perguntar.
Henrique de Sousa
Graças companheiro, este fixo meu problema
Fabii
1
Isso resolveu o meu problema. Por que a importação do eclipse pulou esse arquivo? Qualquer pista?
N
24

No Eclipse, depois de importar a biblioteca do Google Play para a área de trabalho do projeto, copiei o arquivo version.xml de

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

para

MyProjectName/res/values/version.xml
Darragh O'Keeffe
fonte
3
Fazer isso funcionará, mas o problema é que isso torna a atualização para uma versão mais recente da biblioteca do Google Play Services um pouco mais irritante. Você provavelmente precisará substituir o version.xmlarquivo a cada atualização.
Charles Madere
20

Para quem usa o gradle: não inclua a fonte do projeto, faça o download usando o SDK Manager e adicione esta linha às dependências:

compile 'com.google.android.gms:play-services:4.0.30'
Sofi Software LLC
fonte
Só que ele não o encontra: Erro: ocorreu um problema ao configurar o projeto ': app'. > Não foi possível resolver todas as dependências da configuração ': app: _debugCompile'. > Não foi possível encontrar nenhuma versão que corresponda a com.google.android.gms: play-services: 6.1. +. Pesquisado nos seguintes locais: 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 / Documents / programmi / android-estúdio novo / SDK / extras / android / m2repository / com / google / android / gms / play-serviços / Required por: xxxxxxx: app: não especificado
Matteo
O caminho em que procura a biblioteca parece não corresponder ao local onde o gerenciador do sdk realmente o baixou, mas mesmo depois de criar um link simbólico, o problema não foi corrigido. Acho que não consigo descobrir qual arquivo ou pasta exatamente ele precisa encontrar. Qualquer ideia?
Matteo
1
Para ver quais versões você possui: "ls -1 $ ANDROID_HOME / extras / google / m2repository / com / google / android / gms / play-services". Para obter versões mais recentes, execute o gerenciador do SDK e atualize os componentes que você deseja. Não mexa com links simbólicos.
Sofi Software LLC
12
  1. Instale "Google Play Services" e "Google Repository" no Android SDK Manager.
  2. Adicione a linha compile 'com.google.android.gms:play-services:4.1.32@aar'ao seu build.gradle.
  3. Como resultado, o recurso @integer/google_play_services_versionestará disponível.
Andrey Grebnev
fonte
1
Adicionei esta compilação 'com.google.android.gms: play-services: 4.4.52'
powder366
isso fez isso por mim. Ninguém publicou que o resultado final da seção de dependências em build.gradle parecia ... que teria sido útil
snowking16
10

Fora do manguito, parece que seu projeto está conectado a uma versão mais antiga do projeto de biblioteca do Play Services. A abordagem recomendada pelo Google é encontrar o projeto da biblioteca no SDK e fazer uma cópia local. No entanto, isso significa que sempre que você atualizar o projeto da biblioteca do Play Services por meio do SDK Manager, também será necessário substituir sua cópia por uma nova.

CommonsWare
fonte
Sim, integrei a biblioteca ao meu projeto colocando uma cópia dos arquivos baixados com o Android SDK Manager no meu diretório de trabalho. Também atualizei a biblioteca para esta nova versão fazendo a mesma coisa (copiei os arquivos do diretório Android SDK e substitui os existentes no meu projeto).
Charles Madere #
7

após a atualização para a última versão, tive esse problema com todos os meus projetos, mas foi resolvido apenas adicionando novamente a referência da biblioteca:

se você não possui a biblioteca em sua área de trabalho no Eclipse, pode adicioná-la com: File-> Import-> Existing Android Code Into Workspace-> navegar e navegar para o google-play-services_libprojeto lib, ( android-sdk/extras/google/google_play_services/libproject).

insira a descrição da imagem aqui

excluindo /bine /genpastas do meu projeto (algo semelhante à opção limpa) e construindo meu projeto novamente.

Jorgesys
fonte
mas isso torna o apk 5mb mais pesado #
Siddharth
6

Resolvido para Eclipse

Siga as etapas subseqüentes:

  1. Importe a pasta google-play-services_lib como projeto, usando import-> Código Android existente no espaço de trabalho
  2. Nas propriedades do projeto, selecione a seção Android, na parte inferior. Na seção Biblioteca, clique em Adicionar e selecione google-play-services_lib e Aplicar. Siga o link http://i.stack.imgur.com/opSeJ.png para ver a captura de tela
Riccardo Pittiglio
fonte
Meu google-play-services_libestava emF:\Android\sdk\extras\google\google_play_services\libproject\google-play-services_lib
Daniel Bonetti
5

O site de desenvolvedor Android do Google tem instruções sobre como "Adicionar o Google Play Services ao seu projeto" e também são relevantes para atualizar a versão do Play Services. Existe até um menu suspenso para visualizar as instruções do Eclipse, Android Studio ou "Algo mais". Esse seria o melhor lugar para ver as instruções caso elas mudem. A página está aqui:

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

Mas como a maioria das respostas aqui é para Eclipse, aqui está um breve resumo para atualizar o Play Services com o Android Studio

  1. Abra o arquivo build.gradle dentro do diretório do módulo do aplicativo. Nota: Os projetos do Android Studio contêm um arquivo build.gradle de nível superior e um arquivo build.gradle para cada módulo. Certifique-se de editar o arquivo para o seu módulo de aplicativo.
  2. Atualize a regra de construção em "dependências" para consultar a versão do play-services que você baixou em sua máquina de desenvolvimento.

Você pode encontrar o número da versão da play-services que você baixou na sua máquina de desenvolvimento, procurando na pasta \ sdk \ extras \ google \ m2repository \ com \ google \ android \ gms \ play-services, conforme explicado aqui : Como faço para combinar uma revisão do Google Play Services com uma versão de instalação?

Eric Barr
fonte
Finalmente, uma resposta boa e clara para iniciantes no Android. Esta resposta deve ser colocada mais alta.
Jelle
4

Para o Eclipse, acabei de adicionar referência de projeto ao google-play-services_lib em:

Propriedades-Android No painel Biblioteca (painel inferior), verifique se o google-play-services_lib está listado. Caso contrário, clique no botão Adicionar .. e selecione google-play-services_lib.

hNdroid
fonte
3

Eu tive o mesmo problema, o arquivo version.xml não estava no google-play-services_lib. Basta iniciar seu gerenciador sdk e aceitar a atualização, especialmente as coisas relacionadas a "extras".

user2167877
fonte
2

Ao importar o google-play-services_lib, verifique o código da versão definido em AndroidManifest.xml e version.xml. Eu havia encontrado a diferença no código da versão e alterado para 4242000 . Depois de fazer a alteração, não há mais erro de compilação em @ integer / google_play_services_version .insira a descrição da imagem aqui

Shanki Bansal
fonte
2
Esta não é uma boa maneira de fazê-lo. Você precisará atualizar manualmente sempre que atualizar o Google Play Services.
PSchuette
2

Corrigido adicionando o Google Play Services ao meu módulo: arquivo de criação do aplicativo gradle. A documentação também diz para atualizar a versão quando você atualiza o GMS.

dependencies {

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

} 
Hugh Brady
fonte
1

Abaixo estão as principais ações que evitarão muitos erros ao usar o serviço Google play Lib:

  1. Certifique-se de copiar o projeto lib para a área de trabalho de projetos Eclipse.
  2. O SDK de destino para o projeto lib de serviço do Google Play deve ser "Google
  3. API "3- Os metadados devem ser adicionados ao arquivo de manifesto.
  4. O SDK de destino do projeto deve ser 17, a menos que você tenha atualizado completamente para 19, porque em alguns casos 19 não está funcionando bem.
Ayman Al-Absi
fonte
1

Eu tive o mesmo problema com um projeto usando Maven e IntelliJ. Os serviços do Google Play são adicionados como dependência dependente. A construção do maven funcionou bem na linha de comando, mas o IntelliJ reclamou desse símbolo ausente@integer/google_play_services_version

No meu caso, forcei uma atualização dos arquivos POM maven e isso resolveu o problema.

Pierre Henry
fonte
1

No meu caso, eu precisava copiar a pasta google-play-services_lib na mesma UNIDADE dos códigos-fonte dos meus aplicativos

  • F: \ Products \ Android \ APP * .java <- Meus aplicativos estão aqui, então copiei para a pasta abaixo
  • F: \ Produtos \ Android \ libs \ google-play-services_lib
fedmich
fonte
1

Quando não estiver usando um IDE, mas usando compilações de linha de comando (usando ant e ndk-build), é assim que resolvê-lo:

Instale todas as peças solicitadas com o comando 'android'. Depois, tenha uma cópia do google-play-service_lib / na raiz do seu projeto. Edite project.properties para incluir esta linha:

android.library.reference.1=./google-play-services_lib
Bram
fonte
Mas você precisa android update project -p . -t android-22em google-play-services_libprimeiro lugar. Equivalentemente, adicione <property name="android.library.reference.1" value="./google-play-services_lib"/>ao seu build.xml(eu minimizei o meu build.xmle larguei o .properties).
Ciro Santilli escreveu:
0

Eu tive o mesmo problema. O problema era que o "google-play-services.jar" não foi importado corretamente para o meu projeto, mesmo que fosse parte do projeto google_play_service_lib. Se você estiver usando o Eclipse, verifique e veja se consegue ver o arquivo jar dos serviços de reprodução na seção Bibliotecas Privadas do Android e se ele é exportado pela biblioteca.

Estou usando as ferramentas da plataforma Android SDK versão 17 (não 19) e a versão 22.0.1 das ferramentas do Android SDK

Punit Raizada
fonte
0

Acabei de atualizar os serviços do Google Play na pasta Extras do Android SDK Manager

KarenAnne
fonte
0

O problema para mim era que o projeto da biblioteca e o projeto usando serviços de reprodução estavam em diretórios diferentes. Então apenas:

  • 1. Adicione os arquivos ao mesmo espaço de trabalho e remova a biblioteca.
  • Reinicie o eclipse
  • 3.Adicione o projeto da biblioteca novamente
  • 4.Clear
makkasi
fonte
0

O Google sugere que você não crie um projeto diretamente do diretório SDK. É melhor copiar o projeto lib para o local em que seu aplicativo está e depois importá-lo de lá. Caso contrário, na próxima vez que você importar o projeto para outro aplicativo, ele já estará em uso.

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

Nota: Você deve fazer referência a uma cópia da biblioteca que copiou para sua área de trabalho de desenvolvimento - não deve fazer referência à biblioteca diretamente do diretório do Android SDK.

Shygar
fonte
0

Qualquer pessoa que esteja procurando em 2017, a versão 10.0.1 dos serviços play requer importação play-services-basement(use para estar play-services-base).

goobliata
fonte
Poderia explicar um pouco mais? Como vejo as dependências atuais e como adicionar mais?
Hassan Gulzar
Fiz tudo manualmente e por tentativa e erro quando escrevi esta resposta. O uso do gradle tornou as coisas muito mais fáceis.
goobliata
0

Android Studio 3.3.2 no Windows 10

Arquivo -> invalidar caches / reiniciar e escolha o invalidate and Restartbotão na caixa de diálogo exibida.

está ausente
fonte
0

Eu tive o mesmo problema, adicione esta linha 2 no seu build.gradle, o problema será resolvido provavelmente. ;)

dependencies {  
  implementation 'com.google.android.gms:play-services:12.0.1'  
  implementation 'com.google.android.gms:play-services-vision:10.0.0'    
}
Amin Najafloo
fonte