the - google maps api key android
Error de autorizaciĆ³n de Google Maps Android API v2 (16)
Mis pasos:
- obtuvo el código SHA1 de debug.keystore
- crear la aplicación en la consola google apis
- habilitado google map api v2
- entrada SHA1; my.package.name
- obtener la clave de API
archivo creado de AndroidManifest:
<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
- poner "google-play-services.jar" a libs
Después de la compilación, tengo un bloqueo:
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, cambié 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.
"java.lang.NoClassDefFoundError: com.google.android.gms.R $ styleable"
A también tuvo este error, necesita: Archivo -> importar -> Código de Android existente en el espacio de trabajo -> Examinar -> SDK de Android -> extras -> google -> servicios_aplicación_google -> proyecto_libro -> google_play_services_lib y OK. Verifica el proyecto y termina.
El proyecto va a Package Explorer. Ahora ve a tu proyecto (con error) -> propiedades -> Android y en Biblioteca, haz clic en Agregar ... ¡google_play_services_lib debería estar allí! agregar e intentar nuevamente :)
Como perdí mucho tiempo trabajando en la API, intentaré dar una validación paso a paso para Map API v2:
Paso 1: solicita tu clave de API
Si no está familiarizado con la consola API de Google, lea la muy buena respuesta de Rusfearuth anterior.
Paso 2: Comprueba tu SHA Hash (en este caso utilizo la clave de depuración de eclipse):
En una máquina con Windows llegó a su directorio de usuario en un símbolo del sistema:
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 de tu paquete de la actividad del mapa, por ejemplo, com.example.mypackagename
Usted combina esto y lo verifica con su configuración en la consola 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 clave API:
AZzaSyDhkhNotUseFullKey49ylKD2bw1HM
Paso 3. Manifiesto metadatos
Compruebe si los metadatos están presentes y contienen la clave correcta. Si publica su aplicación, necesita una clave diferente.
<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 de manifiesto:
Necesitas esta entrada ya que la API del mapa requiere soporte grapics:
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />
No te preocupes, el 99.7% de los dispositivos lo admiten.
Paso 5. Biblioteca de manifiesto:
Agrega 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.example.yourpackage
<permission
android:name="com.example.yourpackage.permission.MAPS_RECEIVE"
android:protectionLevel="signature" />
<uses-permission android:name="com.example.yourpackage.permission.MAPS_RECEIVE" />
Agregue los siguientes 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 obligatorios si solo muestra un mapa. Intenta 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 lanzamiento a las versiones de Android 2.x necesita agregar soporte en su 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 su actividad (por ejemplo, LinearLayout).
En mi caso, tengo que limpiar el proyecto cada vez que cambio algo en el diseño. Parece ser un error.
Paso 8: Utiliza Eclipse - Proyecto - Limpiar.
¡Disfrutar!
Enfrenté el 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 estar utilizando la versión de lanzamiento en su teléfono o emulador.
Estoy migrando de V1 a V2 de Google Maps. Estaba obteniendo este error al intentar ejecutar la aplicación a través de Eclipse. La causa principal para mí fue usar el almacén de claves de mi certificado de liberación en lugar del almacén de claves de depuración de Android, que es lo que se usa cuando lo ejecutas a través de Eclipse. El siguiente comando (OSX / Linux) le proporcionará 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, usaría este comando:
keytool -list -v -keystore "%USERPROFILE%/.android/debug.keystore" -alias androiddebugkey -storepass android -keypass android
Probablemente sea mejor desinstalar completamente tu aplicación de tu dispositivo antes de intentar con una nueva clave, ya que Android almacena en caché las credenciales de seguridad.
Hoy me enfrenté con este problema. Utilicé Android Studio 2.1.3, Windows 10. Al depurar, funciona bien, pero si actualizo a modo de lanzamiento, no funciona. Borré todas las condiciones de defensa, actualizadas, pero esta no fue la solución.
La solución está relacionada con la estructura del proyecto. El archivo google_maps_api.xml era diferente entre la aplicación / src / debug / res y la aplicación / src / release / res. Hice copiar manualmente pegar de la depuración a la carpeta de lanzamiento.
Ahora funciona.
Necesita utilizar el proyecto de biblioteca ubicado en: ANDROID-SDK-DIRECTORY / extras / google / google_play_services / libproject
Esto arreglará tu primer problema.
No estoy seguro acerca de su segundo, pero puede ser un efecto secundario del primero. Todavía estoy intentando que el mapa funcione en mi propia aplicación :)
Resolví este error al verificar el nombre del paquete en manifest y en la aplicación build.gradle
.
En manifiesto:
Estoy usando un nombre de paquete como:
com.app.triapp
En la aplicación build.gradle:
defaultConfig {
applicationId "com.app.live"
}
Después de cambiar a com.app.triapp
en build.gradle
, resolví mi problema.
SU ECLIPSE PUEDE CAMBIAR SHA1 KEY, por lo que debe volver a generar su clave de Google con la nueva clave SHA1 aquí: https://console.developers.google.com/project/watchful-net-796/apiui/credential Después de eso, copie la nueva clave en manifiesto y vuelva a cargar esta página de google algunas veces, y su clave se actualizará, reconstruya su proyecto, funcionará. P / S: para mi error, eliminé la carpeta .android para eclipse regen SHA1.
Seguí el mismo paso provisto en el documento de Google Docs, pero recibía el mismo error. Más tarde me di cuenta de que estaba firmando mi aplicación con mi app.keystore y que la clave SHA que estaba usando para generar la clave API era la de depuración.
Así que simplemente signingConfig signingConfig.generic
el signingConfig signingConfig.generic
del archivo build.gradle
y mi mapa comenzó a funcionar bien.
Espero que esto ayude a alguien.
Seguí la mayoría, si no todas, las sugerencias de Gunnar Bernstein mencionadas anteriormente y aún así no funcionó. Sin embargo, comenzó a funcionar después de que seguí sus sugerencias Y lo siguiente:
Creé una nueva MapActivity usando la lista de opciones del botón derecho de Android Studio: Nueva -> Google -> Actividad de Google Maps
Luego abrí el archivo google_maps_api.xml que se genera automáticamente y usé el enlace indicado para crear una nueva API KEY. Hice todos los pasos y guardé mi nueva clave en mi proyecto actual. Luego eliminé mi antigua API API registrada, ya que ya no era necesaria.
Debajo del archivo Manifest reemplacé el antiguo valor de API KEY con el atajo de cadena creado por este nuevo archivo XML:
android:value="@string/google_maps_key
", en lugar de indicar la clave directamente.Finalmente, elimine la nueva MapActivity, pero conserve el archivo xml que se creó en ese proceso.
Nota: Al crear la API KEY de esta manera, la columna Restricciones, bajo Credenciales, ahora indica "Aplicaciones de Android". Anteriormente, cuando no funcionaba, la columna decía "Aplicaciones de Android, 1 API" o algo similar. No sé si esto hace la diferencia o no.
Nota: se parece a la etiqueta de metadatos del archivo Manifiesto:
android:name="com.google.android.maps.v2.API_KEY
ha sido reemplazado por:
android:name="com.google.android.geo.API_KEY"
Supongo que ambos pueden usarse, pero es mejor desde el principio usar el último.
Nota: El valor indicado, en el archivo build.gradle, en android -> defaultConfig -> applicationId tiene que coincidir con el texto del nombre del paquete en la página Credenciales.
Simplemente agregue esto en 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 actualice su lib de servicio de google play ... Vaya a Ventana -> Administrador de SDK de Android -> actualice el servicio de google play ... lo instaló ... elimine el anterior y conserve este. Toma esto de ANDROID-SDK-DIRECTORY / extras / google / google_play_services /
Gracias ... Vote por favor
También verifique esta publicación: Google Map Código de ejemplo Android Api V2 no funciona , si está completamente seguro de haber hecho los pasos correctos, luego siga la segunda respuesta, la autenticación se almacena en caché en algún lugar, intente desinstalar la aplicación manualmente (tal como lo hace con un aplicación normal) luego "Ejecutar" nuevamente el proyecto
Tenía exactamente el mismo problema y solo necesitaba configurar el SDK para el proyecto de biblioteca de MapsApiV2 a Android 2.3.3 (API lvl 10)
Tuve el mismo problema, pero resultó que fue porque creé dos claves API de mapa diferentes con la misma huella digital SHA-1 con el nombre de paquete casi similar com.bla.bla
y el otro com.bla.bla.something
.
Tuve el mismo problema. Después de aproximadamente dos horas de búsqueda de Google, reintentos, regeneración de clave de API muchas veces, etc. descubrí que habilité el servicio incorrecto en la consola de Google APis. He habilitado el servicio Google Maps API v2 , pero para las aplicaciones Android debes usar Google Maps Android API v2 . Después de habilitar el servicio correcto, todo comenzó a funcionar.
Pasos :
- para asegurarse de que el dispositivo tenga los servicios Google Play APK
- para instalar el servicio de Google Play rev. Más de 2
- para crear un proyecto en https://code.google.com/apis/console/
- para habilitar "Google Maps Android API v2"
- para registrar SHA1 en el proyecto ( AHORA, NECESITA ESCRIBIR SHA1; your.app.package.name ) en la consola de la API y obtener la clave API
- para copiar el directorio ANDROID_SDK_DIR / extras / google / google_play_services / libproject / google-play-services_lib a la raíz de su proyecto
- para agregar la siguiente línea al YOUR_PROJECT / project.properties
android.library.reference.1=google-play-services_lib
- para agregar las siguientes líneas al
YOUR_PROJECT/proguard-project.txt
.
-keep class * extends java.util.ListResourceBundle {
protected Object[][] getContents();
}
Ahora está listo para crear su propia aplicación Google Map con el uso de Google Map APIs V2 para Android.
Si crea una aplicación con mínimo SDK = 8, utilice la biblioteca de soporte android v4 + SupportMapFragment en lugar de MapFragment.