Error de autorización de la API v2 de Google Maps Android


Mis pasos:

  • obtuve el código SHA1 de debug.keystore
  • crear aplicación en Google apis console
  • habilitado google map api v2
  • entrada SHA1;my.package.name
  • obtener la clave API
  • Archivo AndroidManifest creado:

        <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>
    
  • Diseño Creado

  • ponga "google-play-services.jar " para libs

Después de la compilación tengo crash:

  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)

Después de eso he cambiado el diseño a:

<?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" />

Y cambió MyActivity a

  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, la aplicación se inició, pero no vi el mapa.

Registro de consola:

ERROR/Google Maps Android API(10369): Authorization failure.
Author: Adinia, 2012-12-04

16 answers

Pasos:

  • para asegurarse de que el dispositivo tiene Google Play services APK
  • para instalar Google Play Service rev. más de 2

introduzca la descripción de la imagen aquí

  • para crear un proyecto en https://code.google.com/apis/console/
  • para habilitar " Google Maps Android API v2" introduzca la descripción de la imagen aquí
  • para registrar SHA1 en el proyecto ( AHORA, NECESITA ESCRIBIR SHA1;your.app.package.name ) en la consola de API y obtener la CLAVE de API
  • para copiar el directorio ANDROID_SDK_DIR / extras / google/google_play_services/libproject / google-play-services_lib a raíz de su proyecto
  • para añadir la siguiente línea al proyecto YOUR_PROJECT/.propiedades

android.library.reference.1=google-play-services_lib

  • para añadir las siguientes líneas a la YOUR_PROJECT/proguard-project.txt

.

-keep class * extends java.util.ListResourceBundle {

   protected Object[][] getContents();

}

Ahora está listo para crear su propia aplicación de Google Map con el uso de Google Map APIs V2 para Android.

Si crea una aplicación con min SDK = 8, utilice la biblioteca de soporte de Android v4 + SupportMapFragment en lugar de MapFragment.

 99
Author: Rusfearuth,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-17 11:46:46

También compruebe esta publicación: Google Map Android Api V2 Código de ejemplo no funciona, si está completamente seguro de que hizo los pasos correctos, siga la segunda respuesta, la autenticación se almacena en caché en algún lugar, intente desinstalar la aplicación manualmente (al igual que lo hace con una aplicación normal) y luego "Ejecute" nuevamente el proyecto

 34
Author: adelriosantiago,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:17:57

Dado que acabo de perder mucho tiempo haciendo que la API funcione, intentaré dar una validación paso a paso para la Map API v2:

Paso 1: Solicite su clave API

Si no está familiarizado con la consola de la API de Google, lea la muy buena respuesta de Rusfearuth anterior.

Paso 2: Compruebe que SHA Hash (en este caso utilizo la clave de depuración de eclipse):

En una máquina Windows llegó a su directorio de usuario con un comando prompt:

C:\Users\you>keytool -list -alias androiddebugkey -keystore .android\debug.keyst
ore -storepass android -keypass android

Obtendrás algo como:

androiddebugkey, 15.10.2012, PrivateKeyEntry,
Zertifikat-Fingerprint (SHA1): 66:XX:47:XX:1E:XX:FE:XX:DE:XX:EF:XX:98:XX:83:XX:9A:XX:23:A6

Luego mira el nombre del paquete de la actividad del mapa, p. ej. com.ejemplo.mypackagename

Combinas esto y lo compruebas con tu configuración en la consola de la API de Google:

66:XX:47:XX:1E:XX:FE:XX:DE:XX:EF:XX:98:XX:83:XX:9A:XX:23:A6;com.example.mypackagename

Donde obtienes tu API-key:

AZzaSyDhkhNotUseFullKey49ylKD2bw1HM

Paso 3. Manifiesto de metadatos

Compruebe si los metadatos están presentes y contienen la clave correcta. Si lanzas tu aplicación, necesitas una aplicación diferente clave.

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

Paso 4. Características del manifiesto:

Necesita esta entrada ya que la API de mapas requiere soporte grapics:

<uses-feature
    android:glEsVersion="0x00020000"
    android:required="true" />

No te preocupes, el 99.7% de los dispositivos soportan esto.

Paso 5. Biblioteca de manifiestos:

Añadir la biblioteca de Google.

    <uses-library
        android:name="com.google.android.maps"
        android:required="false" /> // This is required if you want your app to start in the emulator. I set it to false also if map is not an essential part of the application.

Paso 6. Permisos de manifiesto:

Compruebe el nombre del paquete dos veces: com.ejemplo.su paquete

<permission
    android:name="com.example.yourpackage.permission.MAPS_RECEIVE"
    android:protectionLevel="signature" />
<uses-permission android:name="com.example.yourpackage.permission.MAPS_RECEIVE" />

Añádase lo siguiente permisos:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />

Los siguientes permisos son opcionales y no son necesarios si solo muestra un mapa. Trata de no usarlos.

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

Paso 7. Incluye el fragmento del mapa en tu diseño:

<fragment
    android:id="@+id/map"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    class="com.google.android.gms.maps.SupportMapFragment"
    map:cameraTargetLat="47.621120"
    map:cameraTargetLng="-122.349594"
    map:cameraZoom="15" />

Si su liberación a 2.x Versiones de Android necesitas agregar soporte en tu actividad:

import android.support.v4.app.FragmentActivity;

Para el mapa: las entradas para trabajar incluyen

xmlns:map="http://schemas.android.com/apk/res-auto"

En el diseño de tu actividad (por ejemplo, LinearLayout).

En mi caso tengo que limpiar el proyecto cada vez que cambio algo en el diseño. Parece ser un bicho.

Paso 8: Utilice Eclipse-Project-Clean.

Disfrute!

 18
Author: Gunnar Bernstein,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-11-20 01:14:12

Necesita usar el proyecto de biblioteca ubicado en: ANDROID-SDK-DIRECTORY/extras/google/google_play_services / libproject

Esto solucionará tu primer problema.

No estoy seguro acerca de su segundo, pero puede ser un efecto secundario de la primera. Todavía estoy tratando de conseguir el mapa de trabajo en mi propia aplicación:)

 16
Author: Scott Kennedy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-12-04 06:15:40

Hoy me enfrenté a este problema. He utilizado Android Studio 2.1.3, Windows 10. Mientras que la depuración funciona bien, pero si actualizo al modo de liberación no funciona. He aclarado todas las condiciones de proguard, actualizado, pero esto no era la solución.

La solución está relacionada con la estructura del proyecto. El google_maps_api.el archivo xml era diferente entre app \ src \ debug \ res y app \ src \ release \ res. Hice copiar y pegar manualmente desde la carpeta debug to release.

Ahora funciona.

 5
Author: Yaya,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-17 15:37:22

Resolví este error comprobando el nombre del paquete en manifest y app build.gradle.

En manifiesto:

Estoy usando un nombre de paquete como:

com.app.triapp

En app build.gradle:

 defaultConfig {

        applicationId "com.app.live"
    }

Después de cambiar a com.app.triapp en build.gradle, resuelto mi problema.

 3
Author: Luffy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-27 09:57:34

Estoy migrando de V1 a V2 de Google Maps. Estaba recibiendo este fallo tratando de ejecutar la aplicación a través de Eclipse. La causa raíz para mí fue usar mi almacén de claves de certificado de publicación en lugar del almacén de claves de depuración de Android, que es lo que se usa cuando se ejecuta a través de Eclipse. El siguiente comando (OSX / Linux) te dará la clave SHA1 del almacén de claves de depuración:

keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android

Si está utilizando Windows 7 en su lugar, utilizaría este comando:

keytool -list -v -keystore "%USERPROFILE%\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android

Probablemente sea mejor desinstalar su aplicación completamente desde su dispositivo antes de probar con una nueva clave, ya que Android almacena en caché las credenciales de seguridad.

 2
Author: Chris Knight,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-21 23:44:05

Simplemente Agregue esto a su archivo de manifiesto:

**<uses-library android:name="com.google.android.maps" />**

Por Ejemplo...

<application
    android:icon="@drawable/icon"
    android:label="@string/app_name" >
    <uses-library android:name="com.google.android.maps" />

    <activity
        android:name=".California"
        android:label="@string/app_name"
        android:screenOrientation="portrait" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

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

Y por favor actualice su lib de servicio de Google play...Vaya a Ventana - > Android sdk manager- > actualizar el servicio google play...lo instalé..borra el viejo y quédate con éste. Tome esto de ANDROID-SDK-DIRECTORY / extras / google/google_play_services /

Gracias..Por favor vote arriba

 2
Author: Mitul Goti,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-28 12:41:37

Seguí la mayoría, si no todas, las sugerencias de Gunnar Bernstein mencionadas anteriormente y todavía no funcionó. Sin embargo, comenzó a funcionar después de que seguí sus sugerencias Y lo siguiente:

  1. Creé una nueva MapActivity usando el clic derecho de Android Studio lista de opciones: Nuevo -> Google - > Actividad de Google Maps

  2. Luego abrí el google_maps_api.archivo xml que automáticamente se genera y se utiliza el enlace indicado para crear una nueva API CLAVE. Me hice todos los pasos y guardé mi nueva clave en mi proyecto actual. Me luego eliminé mi antigua CLAVE API registrada, ya que ya no era necesaria.

  3. Bajo el archivo de manifiesto reemplazé el valor de la clave API anterior con el acceso directo de cadena creado por este nuevo archivo XML: android:value="@string/google_maps_key", en lugar de indicar la CLAVE directamente.

  4. Por último, elimine la nueva MapActivity, pero conserve el archivo xml creado en ese proceso.

Nota: Creando la CLAVE API en este forma en que la columna de restricciones, bajo Credenciales, ahora se indica "aplicaciones de Android". Anteriormente, cuando no funcionaba la columna decía "Aplicaciones Android, 1 API" o algo similar. No sé si esto hace una diferencia o no.

Nota: Se parece a la etiqueta meta-data bajo el archivo de manifiesto:

android:name="com.google.android.maps.v2.API_KEY

Se ha sustituido por:

android:name="com.google.android.geo.API_KEY"

Supongo que ambos se pueden usar, pero es mejor desde el principio usar este último.

Nota: El valor indicado, en la compilación.archivo gradle, bajo android -> defaultConfig -> applicationId tiene que coincidir con el texto Nombre del paquete debajo de la página de credenciales.

 2
Author: goldenmaza,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-17 16:43:36

"java.lang.NoClassDefFoundError: com.Google.androide.gms.R sty styleable "

A también tuvo este error, necesita: Archivo - > importar - > Código Android existente en Workspace -> Examinar -> sdk Android -> extras -> google -> google_play_services -> lib_project - > google_play_services_lib y ACEPTAR. Revisa el proyecto y Termina.

El proyecto va al Explorador de paquetes. Ahora vaya a su proyecto (con error) - > propiedades - > Android y en Biblioteca haga clic en Agregar... el google_play_services_lib debería estar allí! añadir e intentar de nuevo:)

 1
Author: edwell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-04-15 01:52:24

Tuve el mismo problema, pero resultó que fue porque creé dos claves API de mapa diferentes con la misma huella digital SHA-1 con un nombre de paquete casi similar com.bla.bla y el otro com.bla.bla.something.

 1
Author: Zamrony P. Juhara,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-23 07:49:22

Tuve exactamente el mismo problema y solo necesitaba configurar el SDK para el proyecto de biblioteca de MapsApiV2 para Android 2.3.3 (API lvl 10)

 0
Author: Informatic0re,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-03 08:43:59

Tuve el mismo problema. Después de unas dos horas de googlear, reintentos, regenerar la clave API muchas veces, etc. descubrí que habilité el servicio incorrecto en la consola de API de Google. Habilité Google Maps API v2 Service , pero para las aplicaciones Android tienes que usar Google Maps Android API v2 . Después de habilitar el servicio correcto, todo comenzó a funcionar.

 0
Author: Nino Stella,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-03 16:27:07

SU ECLIPSE TAL VEZ CAMBIÓ LA CLAVE SHA1, por lo que debe recuperar su clave de Google con una nueva clave SHA1 aquí: https://console.developers.google.com/project/watchful-net-796/apiui/credential Después de eso, copie la nueva clave en el manifiesto y vuelva a cargar esta página de Google algunas veces, y su clave se actualizará, reconstruirá su proyecto, funcionará. P/S: Por mi error, borré .android folder so eclipse regen SHA1.

 0
Author: nobjta_9x_tq,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-25 09:15:20

Seguí el mismo paso proporcionado en el documento de Google, pero estaba recibiendo el mismo error. Más tarde me di cuenta de que estaba firmando mi aplicación con mi aplicación.keystore y la clave SHA que estaba usando para generar la clave API era la de depuración.

Así que simplemente eliminé el archivo signingConfig signingConfig.generic de by build.gradle y mi mapa comenzó a funcionar bien.

Espero que esto ayude a alguien.

 0
Author: SKP,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-02 06:16:24

Me enfrenté al mismo problema.

Si emitió una api para su versión de lanzamiento de la aplicación. Entonces esa api solo funcionará para la versión de lanzamiento, no para la versión de depuración. Así que asegúrese de que está utilizando la versión de lanzamiento en su teléfono o emulador .

 0
Author: Salman Saleh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-05 20:12:45