studio programacion name móviles google desarrollo data curso aplicaciones api_key android api google-maps keystore sha1

programacion - Android: Google Map v2 no muestra el mapa para el lanzamiento apk



meta data android name com google android maps v2 api_key (14)

Mi aplicación de mapa de Google funciona bien en el dispositivo con la API de depuración google API KEY, pero cuando creo la aplicación firmada para mi aplicación con la versión de Google Map API KEY, no muestra el mapa. Para generar el modo de publicación google API KEY, estoy usando la huella digital SHA1 con mi almacén de claves. Y también estoy definiendo "tipos de firma y compilación" en la configuración de mi proyecto, tal como lo explica developer.android.com ( http://developer.android.com/tools/publishing/app-signing.html ).

Intenté todas las soluciones posibles (eliminar apk y volver a instalarlo, reiniciar el dispositivo, limpiar el proyecto). nada funcionó. Alguien tiene una buena solución para mi problema por favor ayuda. Para su información, use la plataforma de android studios.



El certificado de depuración es diferente de su certificado de producción. Debe agregar ambos a su entrada de clave de Google Maps en su consola API como una fila separada, cada uno con el mismo ID de paquete, pero con un hash SHA1 naturalmente diferente.

EDITAR

No hay límite de cuántas huellas dactilares de certificados y nombres de paquetes se asignan a una sola clave de Google Maps, de modo que a menos que necesite esta separación, está perfectamente bien tener desarrollos y construcciones de producción con la misma clave. En la consola de google sería así (un sha1 es de un certificado de depuración, que es el mismo para todas las aplicaciones que compila con este IDE, otro es el certificado de producción):

83:10:58:52:EF:3B:59:70:2B:28:9E:AE:4F:5E:1D:F0:7E:19:FB:F1;com.foo.bar AE:4F:5E:1D:F0:7E:19:FB:83:10:58:52:EF:3B:59:70:2B:28:9E:AA;com.foo.bar

o incluso (pero no recomiendo usar la misma clave para diferentes aplicaciones):

83:10:58:52:EF:3B:59:70:2B:28:9E:AE:4F:5E:1D:F0:7E:19:FB:F1;com.foobar.myapp AE:4F:5E:1D:F0:7E:19:FB:83:10:58:52:EF:3B:59:70:2B:28:9E:AA;com.foo.bar EF:3B:59:7E:19:FB:83:10:58:57:AE:4F:5E:1D:F0:2B:28:DE:9E:01;net.something.otherapp


La clave API necesita ser codificada en el Manifiesto de Android, y no funciona si está en un archivo XML de recursos por separado.


no puede usar la misma clave que utilizó para depurar en la versión, tienen diferentes trabajos. para resolver este problema, debe generar una nueva clave de mapa de Google API KEY desde el almacén de claves que está utilizando en su versión copiar ver este video para obtener más información https://www.youtube.com/watch?v=xLJ0jDFdUZ0


Si se creó el código SHA1 desde el almacén de claves personalizado, use lo mismo en el modo de lanzamiento. o genere apk firmando con ese mismo almacén de claves y prueba.

Antes de eso, necesita datos claros de la aplicación (Configuración-> Aplicación de selección de aplicación-Borrar datos-> Desinstalar) e intente. esto funcionó para mí. Asegúrese de que el nombre del paquete sea el mismo que el de la consola del desarrollador de Google.


Tal vez tenga dos archivos google_maps_api.xml, uno en la carpeta app / src / debug / res / values ​​y el otro en la carpeta app / src / release / res / values, pero solo la depuración contiene su clave API.


para refs de futuros --- mi caso --- hay dos archivos google_maps_api.xml donde necesita poner su clave google api. Puedes cometer el error muy fácil de reemplazar YOUR_API_KEY en solo uno de ellos (especialmente si acabas de eliminar la API / aplicación de Google y has creado otras nuevas)


Hay dos cosas para recordar y hacer que esto funcione.

  1. Variante de compilación de depuración

    • Genera una nueva clave de depuración de Android con la herramienta de claves
    • Asociar esta clave (SHA-1) con la clave api del mapa de Android en la consola de Google
    • El modo de depuración tiene un google_maps_api.xml donde se almacena la clave api de los mapas android (src / debug /.../ google_maps_api.xml) como una cadena "google_maps_key"
  2. Release Build Variant

    • Genera una nueva clave de lanzamiento de Android con la herramienta de claves
    • Asóciate a esta clave (SHA-1) con una nueva clave api de mapa de Android en la consola de Google
    • El modo de lanzamiento tiene un google_maps_api.xml donde se almacena la clave api de los mapas android (src / release /.../ google_maps_api.xml) como una cadena "google_maps_key".

En AndroidManifest.xml, agregue la siguiente línea:

<meta-data android:name="com.google.android.geo.API_KEY" android:value="@string/google_maps_key" />

Siga el procedimiento normal de depuración y liberación. Debería funcionar sin problemas.


Tuve este problema y al ejecutar estos pasos creo que de esta manera es perfecto y completo

Para Android Studio:

  1. Build-Generate Signed APK
  2. Copie la ruta del almacén clave.
  3. Ahora abra un símbolo del sistema y vaya a C: / Archivos de programa / Java / jdk1.6.0_39 / bin> (o cualquier versión jdk instalada).
  4. Escriba keytool -list -v -keystore y luego pegue su Key Store Path (por ejemplo, C: / Program Files / Java / jdk1.6.0_39 / bin> keytool -list -v -keystore "E: / My Projects / Android / android studio / apks con signo / Hello World / HelloWorld.jks ").
  5. Ahora pedirá la contraseña de la tienda clave, proporcione la suya y presione Entrar para obtener sus claves de certificado SHA1 y MD5.
  6. Puede ver SHA1 para su certificado de depuración y utilizarlo en Developer Console de Google

En la consola de Google Api, donde hemos creado la API KEY tenemos una opción para agregar múltiples huellas dactilares a la misma clave. Lo que hice fue agregar dos huellas digitales SHA1 para mi almacén de claves de depuración y liberar el almacén de claves y la misma clave API funcionó para mí.

Tenga en cuenta lo siguiente es específicamente para Ubuntu:

  1. Obtenga SHA1 para la depuración usando el siguiente comando

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

  2. Para obtener SHA1 para su lanzamiento, el comando cambia a

    keytool -list -v -keystore /home/atul/Desktop/Learnings/Projects/TestApp/keystore.jks -alias test -storepass password -keypass password

dónde

/home/atul/Desktop/Learnings/Projects/TestApp/keystore.jks es la ruta donde está presente mi archivo de almacén de claves para la aplicación firmada

test es el nombre de alias clave utilizado mientras genrea el almacén de claves firmado

y password es la contraseña utilizada al firmar el apk

Espero que esto ayude. Feliz codificación :)


Tuve un problema similar y el problema fue que generé la aplicación de Android Studio sin seleccionar primero el sabor correcto. Esto significa que mi manifiesto todavía estaba usando la clave API de Google Maps que creé para el sabor de depuración.

Asegúrate de seleccionar el sabor de la versión en tu Android Studio. Ver captura de pantalla a continuación:


¿Cómo obtengo la huella digital api SHA1?

instale su APK firmado, desde Playstore, o simplemente cópielo en el teléfono.

Conecta el cable USB si es un teléfono real y abre Android Studio.

La primera vez que intenta obtener mapas, una entrada de registro mostrará algo como:

E/Google Maps Android API: In the Google Developer Console (https://console.developers.google.com) Ensure that the "Google Maps Android API v2" is enabled. Ensure that the following Android Key exists: API Key: AIzaS<YOUR KEY YOUR KEY YOUR KEY YOUR KEY> Android Application (<cert_fingerprint>;<package_name>): 56:AF:B2:<THIS IS WHAT YOU ARE LOOKING FOR>;br.com.tinx.<your package>

luego, simplemente siga esas instrucciones y cree una nueva entrada en Developer Console.

  • si aciertas los mapas de tu aplicación antes de ver el registro, es posible que necesites cerrar la aplicación desde la memoria y volver a intentarlo)
  • este procedimiento debería funcionar en un emulador también.

Lo siento por responder tarde. Espero que esto ayude para el futuro. Utilizo esta solución para resolver el mismo problema. Cuando usamos Google Maps mientras desarrollamos, se utiliza una depuración predeterminada .keystore que no tiene contraseña. Cuando construimos un archivo apk para cargarlo en Play Store, se crea una nueva clave SHA-1, por lo que debemos crear una nueva depuración.keystore para eso. Tenemos que crear una nueva clave de API para ese SHA-1. De acuerdo con la solución ¿Cómo obtener la huella digital del certificado de firma (SHA1) para OAuth 2.0 en Android? podemos obtener SHA-1 para el archivo apk exportado.

Después de eso, usa esa nueva clave de API en el Manifiesto de Android como la anterior y listo.

EDITAR 1-
Pasos para hacer esto
1) Cree un archivo apk usando "Usar el Asistente de exportación" en el archivo "Manifiesto de Android" de su proyecto.
2) Después de insertar la tecla y antes de finalizar, las teclas MD5 y SHA1 se muestran como se muestra en esta imagen ( http://i.stack.imgur.com/SldEv.png )
3) Crear una nueva clave API para el proyecto de Android en https://console.developers.google.com para el nuevo SHA1 que se recupera en el punto 2).
4) Use esa clave API en el archivo de manifiesto como se muestra a continuación

5) Limpia tu proyecto y crea el archivo APK de nuevo según el punto 1).
6) Puedes ver los mapas de Google ahora en esa aplicación.


Tuve un problema similar: después de crear un par de versiones nuevas de versiones con el mismo tipo ("versión") pero algunos nuevos sabores ("gratis" y "premium"), el fragmento de Google Maps ya no mostraba los mapas y apareció la pantalla totalmente en blanco. En el logcat solo pude ver el siguiente mensaje de error "Código de respuesta inesperado 400 para https://clients4.google.com/glm/mmap/api " que probablemente indicaba algún problema con el acceso a la API de Google Maps.

Por supuesto, revisé nuevamente todo el proceso de la API de Google Cloud para comprobar si faltaba algo en mis credenciales de clave API, pero no encontré nada incorrecto. De hecho, para las nuevas APK, se indica que añadan la información de las construcciones (nombre + huella digital) a las Credenciales del proyecto existentes para heredar la misma clave de la API que sigue siendo válida.

Las instrucciones que podemos leer son muy claras: "Agregue el nombre de su paquete y la huella digital del certificado de firma SHA-1 para restringir el uso de sus aplicaciones de Android. Obtenga el nombre del paquete de su archivo AndroidManifest.xml. Luego use el siguiente comando para obtener el huella digital: keytool -list -v -keystore mystore.keystore ".

El problema en mi caso era que mis nuevas variantes, "nombres de paquete", no eran las que existían en el nombre del paquete Manifiesto ("com.example.app_name.release"). De hecho, debido a mis nuevos sabores, tenía el mismo nombre de manifiesto PERO dos nuevos nombres de paquete "reales": "com.example.app_name.free.release" y "com.example.app_name.premium.release". Esos nombres no aparecen escritos en el archivo Manifiesto, ya que corresponden a la configuración de Gradle donde se definen los sabores (en mi caso con el atributo "applicationIdSuffix"). Esto es bastante confuso para mí, ya que la "id. De aplicación" de Gradle no debe solaparse con el "nombre del paquete" del manifiesto. Pero cuando leemos con atención toda la documentación de Android, podemos leer "si el nombre del paquete de manifiesto es diferente al de la aplicación API de Gradle, compilación copiará la ID de la aplicación en el archivo de manifiesto final". Por supuesto, ambas variantes tienen la misma huella digital, ya que ambas siguen siendo del mismo tipo ("lanzamiento").

Entonces la solución fue agregar en las mismas credenciales de proyecto las dos nuevas entradas variantes para heredar la misma clave API:

  • entrada original (no es necesario que la elimine): nombre del paquete = "com.example.app_name.release" - SHA-1 certificate fingerprint = "xxxxx"

  • nueva entrada 1: Nombre del paquete = "com.example.app_name.free.release" - Huella del certificado SHA-1 = "xxxxx" sin cambios, el mismo que se usó hasta ahora

  • nueva entrada 2: nombre del paquete = "com.example.app_name.premium.release" - huella digital del certificado SHA-1 = "xxxxx" sin cambios, el mismo que se usó hasta ahora

Finalmente, puede ser necesario limpiar su compilación para asegurarse de que realmente está viendo el comportamiento correcto actualizado en el fragmento o actividad de su mapa.

Sobre el resto de recomendaciones, en mi caso no tuve que aplicarlas: - no es necesario codificar la clave API en el Manifiesto - no es necesario crear una nueva clave API para las nuevas variantes APK - no es necesario usar google_maps_api. archivos xml