Meus passos:
- obteve o código SHA1 de debug.keystore
- criar aplicativo no google apis console
- API de mapa do google v2 habilitada
- input SHA1; my.package.name
- obter chave API
arquivo AndroidManifest criado:
<permission android:name="my.package.name.permission.MAPS_RECEIVE" android:protectionLevel="signature"/> <uses-permission android:name="my.package.name.permission.MAPS_RECEIVE"/> <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15"/> <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"/> <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> <uses-feature android:glEsVersion="0x00020000" android:required="true"/> <application android:label="@string/app_name" android:icon="@drawable/ic_launcher" android:hardwareAccelerated="true"> <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="MY_API_KEY_HERE" /> <activity android:name="MyActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> </application> </manifest>
layout criado
- coloque "google-play-services.jar" em libs
Após a compilação, tenho travamento:
ERROR/AndroidRuntime(10182): FATAL EXCEPTION: main
java.lang.NoClassDefFoundError: com.google.android.gms.R$styleable
at com.google.android.gms.maps.GoogleMapOptions.createFromAttributes(Unknown Source)
at com.google.android.gms.maps.MapFragment.onInflate(Unknown Source)
at android.app.Activity.onCreateView(Activity.java:4716)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:680)
at android.view.LayoutInflater.inflate(LayoutInflater.java:466)
at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:270)
at android.app.Activity.setContentView(Activity.java:1881)
at com.example.gm2.MyActivity.onCreate(MyActivity.java:16)
at android.app.Activity.performCreate(Activity.java:5104)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
at android.app.ActivityThread.access$600(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5039)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
at dalvik.system.NativeStart.main(Native Method)
Depois disso, mudei o layout para:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent" />
e mudou MyActivity para
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
FragmentManager manager = getFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.add(R.id.map, MapFragment.newInstance());
transaction.commit();
Como resultado, o aplicativo foi iniciado, mas não vi o mapa.
Log do console:
ERROR/Google Maps Android API(10369): Authorization failure.
android
google-maps
android-maps
google-maps-android-api-2
Rusfearuth
fonte
fonte
Respostas:
Passos :
android.library.reference.1=google-play-services_lib
YOUR_PROJECT/proguard-project.txt
.
Agora você está pronto para criar seu próprio aplicativo Google Map usando as APIs V2 do Google Map para Android.
Se você criar um aplicativo com min SDK = 8, use a biblioteca de suporte do Android v4 + SupportMapFragment em vez de MapFragment.
fonte
to enable "Google Maps Android API v2"
-a etapa resolveu meu problema.Verifique também esta postagem: O código de amostra do Google Map Android Api V2 não está funcionando , se você tiver certeza de que executou os passos corretos, siga a segunda resposta, a autenticação é armazenada em cache em algum lugar, tente desinstalar o aplicativo manualmente (assim como você faz com um aplicação normal) e "Executar" novamente o projeto
fonte
bin
egen
. Limpe, reconstrua e as credenciais em cache sejam renovadas.Como acabei de perder muito tempo fazendo a API funcionar, tentarei fornecer uma validação passo a passo para a API do mapa v2:
Etapa 1: Inscreva-se para obter sua chave de API
Se você não está familiarizado com o console da API do Google, leia a excelente resposta de Rusfearuth acima.
Etapa 2: verifique seu SHA Hash (neste caso, eu uso a chave de depuração do eclipse):
Em uma máquina Windows, acesse o diretório do usuário em um prompt de comando:
Você obterá algo como:
Em seguida, observe o nome do seu pacote da atividade do mapa, por exemplo, com.example.mypackagename
Você combina isso e verifica com suas configurações no console de API do Google:
onde você obtém sua chave de API:
Etapa 3. Metadados de manifesto
Verifique se os metadados estão presentes e contêm a chave correta. Se você lançar seu aplicativo, precisará de uma chave diferente.
Etapa 4. Recursos do manifesto:
Você precisa desta entrada porque a API do mapa requer algum suporte de grapics:
Não se preocupe, 99,7% dos dispositivos suportam isso.
Etapa 5. Biblioteca de manifesto:
Adicione a biblioteca do Google.
Etapa 6. Permissões de manifesto:
Verifique o nome do pacote duas vezes: com.example.yourpackage
Adicione as seguintes permissões:
As seguintes permissões são opcionais e não necessárias se você apenas mostrar um mapa. Tente não usá-los.
Etapa 7. Inclua o fragmento do mapa em seu layout:
Se o seu lançamento para as versões 2.x do Android, você precisa adicionar suporte em sua atividade:
Para o mapa: entradas para trabalhar incluem
no layout de sua atividade (por exemplo, LinearLayout).
No meu caso, tenho que limpar o projeto toda vez que mudo algo no layout. Parece ser um bug.
Etapa 8: Use Eclipse - Projeto - Limpar.
Aproveitar!
fonte
Você precisa usar o projeto de biblioteca localizado em: ANDROID-SDK-DIRECTORY / extras / google / google_play_services / libproject
Isso resolverá seu primeiro problema.
Não tenho certeza sobre o seu segundo, mas pode ser um efeito colateral do primeiro. Ainda estou tentando fazer o mapa funcionar em meu próprio aplicativo :)
fonte
Hoje enfrentei esse problema. Usei o Android Studio 2.1.3, windows 10. Durante a depuração, ele funciona bem, mas se eu atualizar para o modo de lançamento, ele não funcionará. Limpei todas as condições do Proguard, atualizei, mas essa não era a solução.
A solução está relacionada com a estrutura do projeto. O arquivo google_maps_api.xml era diferente entre app \ src \ debug \ res e app \ src \ release \ res. Eu copiei e colei manualmente do debug para a pasta de lançamento
Agora funciona.
fonte
Eu segui a maioria, senão todas, as sugestões de Gunnar Bernstein mencionadas acima e ainda não funcionou. No entanto, começou a funcionar depois que segui suas sugestões E o seguinte:
Eu criei uma nova MapActivity usando a lista de opções do botão direito do Android Studio: Novo -> Google -> Atividade do Google Maps
Em seguida, abri o arquivo google_maps_api.xml que é gerado automaticamente e usei o link indicado para criar uma nova chave de API. Eu fiz todas as etapas e salvei minha nova chave no projeto atual. Em seguida, removi minha antiga CHAVE API registrada, pois ela não era mais necessária.
No arquivo Manifest, substituí o antigo valor API KEY pelo atalho de string criado por este novo arquivo XML:
android:value="@string/google_maps_key
", em vez de declarar a KEY diretamente.Finalmente, remova a nova MapActivity, mas mantenha o arquivo xml que foi criado nesse processo.
Nota: Ao criar a API KEY desta forma, a coluna Restrictions, em Credentials, agora declarada "Android apps". Anteriormente, quando não funcionava, a coluna dizia "Aplicativos Android, 1 API" ou algo semelhante. Não sei se isso faz diferença ou não.Nota: Não, isso significa apenas que não tenho uma API específica selecionada para esta chave API (Console -> Chave API -> Restrições de chave -> Restrições API).Observação: parece a tag de metadados no arquivo Manifest:
foi substituído por:
Eu acho que ambos podem ser usados, mas é melhor usar o último desde o início.
Nota: O valor declarado, no arquivo build.gradle, em android -> defaultConfig -> applicationId deve corresponder ao texto do nome do pacote na página Credenciais.
fonte
Solved!!!
Basta adicionar isso ao seu arquivo de manifesto:
Por exemplo...
E, por favor, atualize a biblioteca do serviço google play ... Vá para a janela -> gerenciador de SDK do Android-> atualizar serviço google play ... instalei ... apague o antigo e mantenha este. Obtenha isso em ANDROID-SDK-DIRECTORY / extras / google / google_play_services /
Obrigado .. Por favor, vote
fonte
Resolvi esse erro verificando o nome do pacote no manifesto e no aplicativo
build.gradle
.No manifesto:
Estou usando um nome de pacote como:
No app build.gradle:
Depois de alterado para
com.app.triapp
embuild.gradle
, resolvi meu problema.fonte
Estou migrando de V1 para V2 do Google Maps. Eu estava recebendo essa falha ao tentar executar o aplicativo via Eclipse. A causa raiz para mim foi usar meu armazenamento de chaves de certificado de liberação em vez do armazenamento de chaves de depuração do Android, que é o que é usado quando você o executa via Eclipse. O seguinte comando (OSX / Linux) obterá a chave SHA1 do armazenamento de chaves de depuração:
Se você estiver usando o Windows 7 em vez disso, use este comando:
Provavelmente, é melhor desinstalar o aplicativo completamente do dispositivo antes de tentar com uma nova chave, pois o Android armazena em cache as credenciais de segurança.
fonte
"java.lang.NoClassDefFoundError: com.google.android.gms.R $ styleable"
Também houve esse erro, você precisa: Arquivo -> importar -> Código Android existente no espaço de trabalho -> Navegar -> SDK do Android -> extras -> google -> google_play_services -> lib_project -> google_play_services_lib e OK. Verifique o projeto e finalize.
O projeto vai para Package Explorer. Agora vá para o seu projeto (com erro) -> propriedades -> Android e na Biblioteca clique em Adicionar ... o google_play_services_lib deve estar lá! adicione e tente novamente :)
fonte
Eu tive o mesmo problema, mas descobri que era porque eu criei duas chaves de API de mapa diferentes com a mesma impressão digital SHA-1 com nome de pacote quase semelhante
com.bla.bla
e outrocom.bla.bla.something
.fonte
Eu tive exatamente o mesmo problema e só precisei definir o SDK para o projeto de biblioteca do MapsApiV2 para Android 2.3.3 (API lvl 10)
fonte
Eu tive o mesmo problema. Após cerca de duas horas de pesquisa no Google, novas tentativas, regeneração da chave API muitas vezes, etc., descobri que habilitei o serviço errado no console do Google APis. Eu habilitei o serviço Google Maps API v2 , mas para aplicativos Android você tem que usar Google Maps Android API v2 . Depois de habilitar o serviço correto, tudo começou a funcionar.
fonte
SUA ECLIPSE TALVEU CHAVE SHA1, então você deve regenerar sua chave do google com a nova chave SHA1 aqui: https://console.developers.google.com/project/watchful-net-796/apiui/credential Depois disso, copie a nova chave no manifesto e recarregue esta página do google algumas vezes, e sua chave será atualizada, reconstrua seu projeto e funcionará. P / S: Por meu erro, excluí a pasta .android, então eclipse regen SHA1.
fonte
Eu segui a mesma etapa fornecida no Google Doc, mas estava recebendo o mesmo erro. Mais tarde, percebi que estava assinando meu aplicativo com meu app.keystore e a chave SHA que estava usando para gerar a chave de API era a de depuração.
Então, simplesmente removi o arquivo
signingConfig signingConfig.generic
dobuild.gradle
arquivo e meu mapa começou a funcionar bem.Espero que isso ajude alguém.
fonte
Eu enfrentei o mesmo problema.
Se você emitiu uma API para sua versão de lançamento do aplicativo. Então, essa API só funcionará para a versão de lançamento, não para a versão de depuração. Portanto, certifique-se de usar a versão de lançamento em seu telefone ou emulador.
fonte
Para mim, tudo estava funcionando tanto em um emulador quanto em um dispositivo físico.
No entanto, ele parou de funcionar para mim quando configurei uma segunda máquina para depurar o mesmo aplicativo em um emulador com um nível de API mais recente.
Eu não percebi que a impressão digital daquela máquina mudou. Depois de ver o log de erro de falha de autenticação no Log do dispositivo, comparei de perto a impressão digital em meu Google Developer Console com a da mensagem de erro. Foi quando eu vi a diferença. Depois de adicionar a nova impressão digital ao console do desenvolvedor (em combinação com o nome do pacote), meu aplicativo começou a funcionar conforme o esperado no emulador no novo sistema.
Portanto, se você configurar um novo sistema, verifique suas impressões digitais novamente!
fonte
SDK for Android
esteja ativado no console da API.fonte