Este aplicativo não será executado a menos que você atualize o Google Play Services (via Bazaar)

100

Estou testando a nova API V2 do Google Maps para Android e recebo esta mensagem quando o aplicativo é iniciado:

MainActivity mostrando mensagem de erro

Ele está sendo executado em um emulador 4.1.

Aqui está meu AndroidManifest.xmlarquivo:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.maptest"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="15" />

    <permission
        android:name="com.example.maptest.permission.MAPS_RECEIVE"
        android:protectionLevel="signature"/>
    <uses-permission android:name="com.example.maptest.permission.MAPS_RECEIVE"/>
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

    <!-- Require OpenGL ES version 2 -->
    <uses-feature
          android:glEsVersion="0x00020000"
          android:required="true"/>

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >

        <activity
            android:name=".MainActivity"
            android:label="@string/title_activity_main" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="##myapikey##"/>

    </application>
</manifest>

Arquivo MainActivity.java:

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}

Arquivo activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <fragment xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        class="com.google.android.gms.maps.MapFragment"/>
</RelativeLayout>

Clicar em "Atualizar" trava o aplicativo com o seguinte rastreamento de pilha:

E/Trace(1034): error opening trace file: No such file or directory (2)
W/GooglePlayServicesUtil(1034): Google Play services out of date.  Requires 2010100 but found 1
W/GooglePlayServicesUtil(1034): Google Play services out of date.  Requires 2010100 but found 1
W/GooglePlayServicesUtil(1034): Google Play services out of date.  Requires 2010100 but found 1
W/GooglePlayServicesUtil(1034): Google Play services out of date.  Requires 2010100 but found 1
W/GooglePlayServicesUtil(1034): Google Play services out of date.  Requires 2010100 but found 1
W/GooglePlayServicesUtil(1034): Google Play services out of date.  Requires 2010100 but found 1
D/gralloc_goldfish(1034): Emulator without GPU emulation detected.
D/AndroidRuntime(1034): Shutting down VM
W/dalvikvm(1034): threadid=1: thread exiting with uncaught exception (group=0x40a13300)

E/AndroidRuntime(1034): FATAL EXCEPTION: main
E/AndroidRuntime(1034): android.content.ActivityNotFoundException: No Activity found to handle Intent
  { act=android.intent.action.VIEW dat=http://play.google.com/store/apps/details? \
  id=com.google.android.apps.bazaar flg=0x80000 pkg=com.android.vending }
E/AndroidRuntime(1034):     at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1545)
E/AndroidRuntime(1034):     at android.app.Instrumentation.execStartActivity(Instrumentation.java:1416)
E/AndroidRuntime(1034):     at android.app.Activity.startActivityForResult(Activity.java:3351)
E/AndroidRuntime(1034):     at android.app.Activity.startActivityForResult(Activity.java:3312)
E/AndroidRuntime(1034):     at android.app.Activity.startActivity(Activity.java:3522)
E/AndroidRuntime(1034):     at android.app.Activity.startActivity(Activity.java:3490)
E/AndroidRuntime(1034):     at com.google.android.gms.internal.c$2.onClick(Unknown Source)
E/AndroidRuntime(1034):     at android.view.View.performClick(View.java:4084)
E/AndroidRuntime(1034):     at android.view.View$PerformClick.run(View.java:16966)
E/AndroidRuntime(1034):     at android.os.Handler.handleCallback(Handler.java:615)
E/AndroidRuntime(1034):     at android.os.Handler.dispatchMessage(Handler.java:92)
E/AndroidRuntime(1034):     at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime(1034):     at android.app.ActivityThread.main(ActivityThread.java:4745)
E/AndroidRuntime(1034):     at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(1034):     at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime(1034):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
E/AndroidRuntime(1034):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
E/AndroidRuntime(1034):     at dalvik.system.NativeStart.main(Native Method)

Também fiz referência ao projeto Google Play Services. O que eu estou fazendo errado aqui?

ATUALIZAR

O bug correspondente no rastreador de problemas do Google ( https://issuetracker.google.com/issues/35822258 ) foi resolvido há algum tempo.

Agora você pode usar a API Android do Google Maps no emulador e criar dispositivos virtuais com o Play Services, conforme descrito nesta resposta:

https://stackoverflow.com/a/46246782/5140781

soren.qvist
fonte
Você está usando o avd com google api ou plain android?
Selvin
Plain Android, embora eu apenas tentei mudar para a API do Google para 4.1 e é o mesmo.
soren.qvist
Estranhamente, estou olhando exatamente para o mesmo problema, exatamente ao mesmo tempo. Presumo até agora que é porque o APK do Google Play Services não está instalado no emulador. O erro é porque o aplicativo está tentando iniciar o Google Play (a loja) para instalar o APK. Provavelmente funcionará bem em um dispositivo.
gazreese

Respostas:

42

De acordo com uma discussão com desenvolvedores Android no Google+, executar a nova API do mapa no emulador não é possível no momento.

(O comentário é de Zhelyazko Atanasov ontem às 23:18, não sei como vincular diretamente a ele)

Além disso, você não vê a parte " (via Bazaar) " ao executar a partir de um dispositivo real e o botão de atualização abre a Play Store. Estou assumindo que o Bazaar se destina a fornecer o Google Play Services no emulador Android, mas ainda não está pronto ...

nicopico
fonte
15
Bem, isso é lamentável
soren.qvist
Tentei copiar o GmsCore.apk mais recente diretamente para o emulador, mas também não está funcionando. Provavelmente funcionaria se eu soubesse exatamente quais APKs copiar do meu dispositivo com acesso root.
James Wald
56

ATUALIZAR

A API v2 do Google maps agora está instalada nas imagens de sistema do Google mais recentes (api: 19 ARM ou x86).
Portanto, seu aplicativo deve funcionar apenas com as novas imagens. Não há necessidade de instalar esses arquivos.

Tenho tentado executar um aplicativo Android Google Maps V2 em um emulador e, quando finalmente coloquei o Google Play Services em execução, atualizei meu SDK para a revisão 4 do Google Play Services e meu emulador não executou mais meu aplicativo.

Agora descobri como atualizar meu emulador no meu tablet transformador. (Você não precisará de um tablet, pois pode baixar os arquivos abaixo).

Eu usei o Titanium Backup para fazer backup do meu Asus Eee Pad Transformer (TF101) e, em seguida, peguei os arquivos APK com.android.vending e com.google.android.gms do backup.

Instalei-os em um emulador configurado com a plataforma: 4.1.2, API Level: 16, CPU Intel / Atom x86) e meu aplicativo Google Maps V2 funciona novamente.

Isso foi tudo ... nenhuma das outras etapas relacionadas a / system / app foi necessária.

Meu aplicativo usa apenas a API do Google Maps, sem dúvida, mais etapas são necessárias se você usar outros serviços do Google Play.

Novos arquivos para os serviços mais recentes do Google Play:

Mesmas instruções de antes: crie um novo emulador com qualquer CPU / ABI , um destino de API que não seja do Google (as versões 10-19 funcionam) e emulação de GPU ativada ou desativada e, em seguida, instale os arquivos:

adb install com.android.vending-20140218.apk
adb install com.google.android.gms-20140218.apk

Se você estiver atualizando um emulador existente, pode ser necessário desinstalar as versões anteriores:

adb uninstall com.android.vending
adb uninstall com.google.android.gms

Isso é tudo.

danbrough
fonte
Não importa se seu emulador é x86 ou ARM. Plataforma: 4.2 também está bom.
Dan Brough
1
De acordo com developer.android.com/google/play-services/index.html . Os requisitos com Android 2.2 (ou seja, API nível 8) devem ser suficientes, desde que os dispositivos também tenham GL ES versão 2.
Jarl
1
Tentei instalar esses arquivos, mas o adb me mostrou uma mensagem de falha de que os arquivos já estavam instalados. Tentei reinstalar, mas ele disse que os certificados são inconsistentes. O que devo fazer então?
Huong
Consegui desinstalar pacotes pré-instalados com adb uninstall com.android.vendinge adb uninstall com.google.android.gms. Depois de instalar os pacotes mencionados acima, meu aplicativo é executado, mas vejo EGL_emulation: eglSurfaceAttrib not implementedmensagens de aviso no log e nenhum mapa é visível no aplicativo. Este é, eu acredito, problema de emulador / GPU. Minha GPU é Radeon HD6870e eu estava executando o Android 4.1.2 sem APIs do Google no emulador.
dvim
Em relação a "EGL_emulation: eglSurfaceAttrib não implementado", talvez tente "Usar GPU Host" nas opções de emulação.
Dan Brough
39

Passei cerca de um dia configurando a nova API gmaps (Google Maps Android API v2) no emulador Android. Nenhum dos métodos que encontrei na Internet estava funcionando corretamente para mim. Mas ainda assim eu fiz. Aqui está como:

  1. Crie um novo emulador com a seguinte configuração:

Insira a descrição da imagem aqui

Nas outras versões não consegui configurar devido a vários erros ao instalar os aplicativos necessários.

2) Inicie o emulador e instale os seguintes aplicativos:

  • GoogleLoginService.apk
  • GoogleServicesFramework.apk
  • Phonesky.apk

Você pode fazer isso com os seguintes comandos:

2.1) adb shell mount -o remount,rw -t yaffs2 /dev/block/mtdblock0 /system
2.2) adb shell chmod 777 /system/app
2.3-2.5)adb push Each_of_the_3_apk_files.apk /system/app/

Links para baixar arquivos APK . Eu os copiei do meu dispositivo Android com root.

3) Instale o Google Play Services e o Google Maps no emulador. Eu tenho um erro 491, se eu instalá-los da Google Play Store. Eu carreguei os aplicativos para o emulador e executei a instalação localmente. (Você pode usar adbpara instalar isso). Links para os aplicativos:

4) Executei com êxito um exemplo de demonstração no emulador após essas etapas. Aqui está uma captura de tela:

Google Maps

Paha
fonte
Acho que esse método tem alguns passos desnecessários. Tente meu método de uma das outras respostas com apenas dois apks para instalar ...
Nemanja Kovacevic
Eu tentei seu método, mas ao carregar aplicativos no diretório do sistema / aplicativo, o adb gerou um erro dizendo que não há espaço livre suficiente. Criar um novo emulador com uma grande quantidade de memória não ajudou. Em outras versões do emulador, seu método não funcionou.
Paha
1
Na etapa 3), o comando de instalação é adb install com.google.android.apps.maps-1.apke adb install com.google.android.gms-2.apk.
sulai
E certifique-se de obter uma versão do serviço Google Play que atenda às suas necessidades. Você pode baixá-los em papktop.com/tag/google-play-services-apk .
sulai
Apenas certifique-se de que você está sempre instalando a versão mais recente do APK do Google Play, porque no momento, o Google Play v2, não permite que você instale a atualização (dando o erro 491 desagradável) e esta atualização é necessária para executar os aplicativos do Google Maps.
Serhiy
29

Estou respondendo a esta pergunta pela segunda vez, porque a solução que tentei que não funcionou no início agora funciona, e posso recriar as etapas para fazê-la funcionar :)

Também tive a sensação de que a falta da Google Play Store é a culpada aqui, então tentei instalar a Google Play Store no emulador por meio deste link e deste link combinado. Tive algumas dificuldades, mas no final consegui instalar o Google Play Store e testei baixando algum aplicativo aleatório. Mas a atividade de mapas continuou exibindo a mensagem com o botão "Atualizar". Esse botão me levava para a loja, mas lá recebia uma mensagem sobre "item não encontrado" e os mapas ainda não funcionavam. Nesse ponto, desisti.

Ontem, ativei o mesmo aplicativo de teste por acidente e funcionou! Eu estava muito confuso, mas rapidamente fiz uma comparação do emulador onde ele está funcionando e um novo e limpo e determinei dois aplicativos no que estava funcionando no diretório / data / app /: com.android.vending-1. apk e com.google.android.gms-1.apk. Isso é estranho, pois, quando estava instalando o Google Play Store por instruções desses sites, estava enviando Phonesky.apk, GoogleServicesFramework.apk e GoogleLoginService.apk e para uma pasta / sistema / aplicativo diferente.

De qualquer forma, agora o Android Google Maps API v2 está funcionando no meu emulador. Estas são as etapas para fazer isso:


Crie um novo emulador

  • Para o dispositivo , escolha "5.1 '' WVGA (480 x 800: mdpi)"
  • Para o destino , escolha "Android 4.1.2 - API de nível 16"
  • Para "CPU / ABI", escolha "ARM"
  • Deixe o resto com os padrões

Estas são as configurações que estão funcionando para mim. Eu não sei por diferentes.


Inicie o emulador


instale com.android.vending-1.apk e com.google.android.gms-1.apk através do comando de instalação ADB


O Google Maps deve funcionar agora em seu emulador.

Nemanja Kovacevic
fonte
Aqui está o link para o meu blog com a descrição do que tentei fazer funcionar nemanjakovacevic.net/blog/2012/12/…
Nemanja Kovacevic
Infelizmente, a revisão 4 dos serviços do Google Play apresenta um novo erro: Serviços do Google Play desatualizados. Requer 2012100, mas encontrado 2010110
Ilja S.
3
Ok, se você tiver a 4ª revisão do Play Services, olhe a resposta de @danbrough e baixe os apks especificados no comentário: link
Ilja S.
1
note que isso funciona com x86 também, tornando o emulador muito mais ágil!
cafeína
3

Eu criei uma descrição (em alemão) de como fazê-lo funcionar . Você basicamente precisa de um emulador com pelo menos API de nível 9 e sem APIs do Google. Em seguida, você terá que obter os APKs de um dispositivo com acesso root :

adb -d pull /data/app/com.android.vending-2.apk
adb -d pull /data/app/com.google.android.gms-2.apk

e instale-os no emulador:

adb -e install com.android.vending-2.apk
adb -e install com.google.android.gms-2.apk

Você pode até mesmo executar o aplicativo nativo do Google Maps, se tiver um emulador com pelo menos API de nível 14 e instalar adicionalmente com.google.android.apps.maps-1.apk

Diverta-se.

Kurt Huwig
fonte
2

Tenho tentado executar um Google Maps v2 Android em um emulador e descobri muitas maneiras de fazer isso, mas nenhuma delas funcionou para mim. Sempre tenho esse aviso no Logcat Google Play services out of date. Requires 3025100 but found 2010110e quando quero atualizar o Google Play Services no emulador nada acontece. O problema era que o APK com.google.android.gms não era compatível com a versão da biblioteca em meu Android SDK.

Instalei esses arquivos "com.google.android.gms.apk", "com.android.vending.apk" no meu emulador e meu aplicativo Google Maps v2 funcionou bem. Nenhuma das outras etapas relacionadas a / system / app foi necessária.

Adil
fonte
1
esses são os arquivos para instalar: vending.apk e gms.apk
Adil
2

Este aplicativo não será executado a menos que você atualize o Google Play Services. Eu tentei por muito tempo, mas ainda não consegui pegar o mapa ... Apenas uma tela em branco está aparecendo, mesmo que eu modifiquei meu serviço Google Play fornecido pelo comentário abaixo ..


Verifique o arquivo de manifesto do Play Services e o código da versão do arquivo APK com.google.android.gms. Abaixo, é "3136110". Baixe esses arquivos APK e instale a partir de um prompt do DOS, mas antes da instalação, execute o emulador de destino.

package="com.google.android.gms"
android:versionCode="3136110"
android:versionName="3.1.36 (673201-10)

Peguei esses arquivos APK neste link .

do utilizador
fonte
2

Resolvi esse problema executando as seguintes etapas:

  • No emulador:

    Você deve usar a API mais recente Google APIs(Google Inc.)-API Level 19.

    Faça o resto das coisas colocadas na própria captura de tela.

    insira a descrição da imagem aqui

  • Chave API:

    Crie uma nova chave de API e verifique cuidadosamente sobre a chave de API do Google Map e a chave SHA.

  • Serviços do Google Play:

    Você deve baixar a última versão do Google Play Services com.android.vending-4.8.20.apk . Nesse site, se os serviços do Google Play não estiverem funcionando, significa que você pode encontrar muitos sites na internet chamadoscom.android.vending 4.8.20.apk .

    você pode executar o Google Play Services usando o Prompt de Comando adb install com.android.vending 4.8.20.apk.

    Nota: Você deve baixar os serviços mais recentes do Google Play porque a versão mais recente ano a ano será atualizada na Internet.

    saída :

    insira a descrição da imagem aqui

Steve
fonte
1
@JJD Estou editado, confira. Vai funcionar. Obrigado por apontar.
Steve
0

Após a atualização para o ADT 22.0.1, devido às bibliotecas privadas Android, o serviço Google Maps estava apresentando algum erro e o aplicativo travou. Então, finalmente encontrei a solução e funcionou para mim.

Basta instalar a biblioteca de serviços do Google Play e ir para google-play-service/libproject/google-play-services_libde https://www.dropbox.com/sh/2ok76ep7lmav0qf/9XVlv61D2b. Importe isso para o seu espaço de trabalho. Limpe seu projeto onde deseja usar gogole-play-services-lib e, em seguida, crie-o novamente e vá para Projeto -> Propriedades -> Java BuildPath -> selecione "Bibliotecas privadas do Android, dependências do Android, google-play-service"

Em Propriedades, vá para Android e escolha qualquer uma das versões e, em seguida, escolha adicionar e selecione google-play-service-lib e pressione aplicar e, finalmente, OK.

Por fim, vá para Projeto -> Ferramentas Android -> Bibliotecas de suporte Android. Aceite a licença e após a instalação execute seu projeto.

Vai funcionar bem.

Honey Shah
fonte
0

No Android SDK Manager, instale: Extras: Google Play Services

Franck
fonte
0
 just change it to 

compile 'com.google.android.gms:play-services-maps:9.6.0'
compile 'com.google.android.gms:play-services-location:9.6.0'

isso funciona para mim, a versão atual é 10.0.1

Jagapathi
fonte