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.

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?

Usando keytool para obtener las huellas digitales del certificado

Estoy un poco atascado aquí! ¡Gracias por cualquier ayuda!

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.

  • ERROR: 'keytool' no se reconoce como un comando interno o externo, un programa operativo o un archivo por lotes
  • No puedo encontrar el keytool de Android
  • Cambio de contraseña de keystore de Android
  • No se encontró cadena de certificados, cómo arreglar y publicar en Google Play Store?
  • Compruebe el keypass keystore de android para ver si es correcto
  • ¿Cómo puedo encontrar y ejecutar el keytool
  • Publicado Android apk da error "El archivo de paquete no estaba firmado correctamente"
  • ¿Por qué la huella digital es diferente en mi apk recién firmado?
  • No se puede usar keytool y OpenSSL para Facebook Instalación de Android SDK
  • ¿Qué debo usar para "Distinguished Name" en nuestro Keystore para Android Market
  • Usando una contraseña de keystore vacía solía ser posible?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.