Google Maps no se muestra en android en modo de publicación
Estoy intentando liberar mi aplicación, pero teniendo un problema con google maps. La aplicación contiene una actividad (MapActivity) que muestra un mapa. Cuando se ejecuta en modo de depuración, el mapa funciona bien. Firmé mi aplicación en modo de liberación, y tengo SHA1. He creado una nueva llave de androide en consola de Google según lo requerido (SHA1; packageName). Tengo la clave de la API
En mi aplicación, he hecho referencia a una copia de google-play-services-lib según sea necesario. Estoy usando ADT.
- Java Keystore contraseña sin sentido?
- el ensamblaje del gradleRelease utiliza la llave / el certificado incorrectos
- La carpeta ".android" y el archivo "debug.keystore" faltan
- Cacerts.bks no existe
- Openssl no se reconoce como un comando interno o externo
Map.xml
<?xml version="1.0" encoding="utf-8"?> <fragment xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" android:name="com.google.android.gms.maps.SupportMapFragment" />
MapActivity.java
public class MapActivity extends FragmentActivity { private GoogleMap map; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.map); map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)) .getMap(); }
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.rentalcar" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="16" /> <uses-permission android:name="android.permission.INTERNET"></uses-permission> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-feature android:glEsVersion="0x00020000" android:required="true"/> <permission android:name="com.example.rentalcar.permission.MAPS_RECEIVE" android:protectionLevel="signature"/> <uses-permission android:name="com.example.rentalcar.permission.MAPS_RECEIVE"/> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.rentalcar.MainActivity" 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> <activity android:name="com.example.rentalcar.MapActivity" android:label="@string/title_activity_map" android:screenOrientation="portrait" > </activity> <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="My_Key"/> </application> </manifest>
Lo único extraño es que cuando uso keytool para obtener SHA1 me sale "Nombre de Algoritmo de Firma: SHA256withRSA. ¿Puede ser este el problema? Si es así, ¿cómo puedo cambiarlo?
Estoy un poco atascado aquí! ¡Gracias por cualquier ayuda!
- Nunca he definido ninguna contraseña a mi almacén de claves y alias, así que ¿cómo se crean?
- ¿Cómo desarrollar una aplicación de Android con google maps API en varios equipos?
- Keytool Alias no tiene clave
- Android - el apk debe estar firmado con los mismos certificados que la versión anterior
- Problema al ejecutar mi keystore firmado y liberado en Eclipse
- Firma de solicitud con varios certificados
- Hash clave para Facebook Android SDK
- Keytool Signing Problem: Keystore fue manipulado, o la contraseña fue incorrecta
En el mapa API V2, la ÚNICA cosa que cambia entre una versión de lanzamiento y una versión de depuración es la clave que se registra aquí https://code.google.com/apis/console/
Si la depuración está funcionando y la versión final no es, es el único cambio necesario.
Por lo tanto, le sugiero que revise el código hash de su almacén de claves de liberación y asegúrese de que ingrese correctamente en la Consola de API de Google.
Si ya ha intentado responder @Budius y aún enfrenta este error, puede ser causado por la siguiente situación:
Cuando agregas tu MapFragment, Android Studio crea 2 archivos google_maps_api.xml: uno dentro de la carpeta src / debug / res / values y el otro dentro src / release / res / values.
Pero por alguna razón sólo se muestra el archivo de la carpeta de lanzamiento en Android Studio. Por lo tanto, cuando cambia el valor APIkey, se realiza sólo en el archivo de la carpeta de depuración.
Así que simplemente copie el archivo google_maps_api.xml para liberar la carpeta y asegúrese de que ambos están con la misma APIKey.
Esto funcionó para mí después de todos los otros intentos.
Simplemente borre los datos (Configuración-> Aplicación-seleccione la aplicación-Borrar datos-> desinstale) y pruebe. Esto funcionó para mí. Asegúrese de que el nombre del paquete es el mismo que en la consola de desarrolladores de google. Si se crea el código SHA1 desde el almacén de claves personalizado, use lo mismo en el modo de liberación. O generar apk mediante la firma con ese mismo almacén de claves.
1- Crear un archivo apk utilizando "Utilizar el Asistente de exportación" en el archivo "Manifiesto de Android" de su proyecto.
2- Después de introducir la llave y antes de terminar, las teclas MD5 y SHA1 se muestran como se muestra
3- Cree una nueva Clave API para el proyecto Android para el nuevo SHA1 que se recupera en el punto 2.
4- Utilice esa clave de API en el archivo de manifiesto como se muestra a continuación
5- Limpie su proyecto y construya el archivo APK de nuevo.
6- Puedes ver google maps ahora en ese apk.
- GCM ¿Cómo puedo detectar si la aplicación está abierta y, de ser así, aparece un cuadro de alerta en lugar del flujo normal de notificaciones?
- Android: Problemas con ListViews y CheckBoxes