7

Sto provando a rilasciare la mia app, ma avendo un problema con google maps. L'app contiene un'attività (MapActivity) che visualizza una mappa. Quando si esegue in modalità di debug, la mappa funziona correttamente. Ho firmato la mia app in modalità di rilascio e ho ottenuto SHA1. Ho creato una nuova chiave Android sulla console di Google come richiesto (SHA1; nomePacchetto). Ottenuto la chiave APIGoogle Maps non mostra su Android in modalità di rilascio

Nella mia app, ho fatto riferimento a una copia di google-play-services-lib come richiesto. Sto 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> 

L'unica cosa strana è che quando uso keytool per ottenere SHA1 ottengo " Nome dell'algoritmo della firma: SHA256 con RSA: può essere questo il problema? Se sì, come posso cambiarlo?

using keytool to get the certificate fingerprints

sono specie di bloccato qui! Grazie per tutto l'aiuto!

+0

questo può aiutare http://stackoverflow.com/questions/13696620/google-maps-android-api-v2-authorization-failure – Waqas

+0

Provare a generare nuovamente la chiave di rilascio: http://chocotech.blogspot.com/2012 /10/get-debug-key-and-release-key-for.html – svlzx

+0

https://stackoverflow.com/a/46418176/2898708 –

risposta

10

nel V2 mappa API, il SOLO cosa che cambia tra una versione e una versione di debug è la chiave che si registra qui https://code.google.com/apis/console/

Se il debug sta lavorando e il rilascio finale non è, è l'unico cambiare necessario.

Quindi ti suggerisco di ricontrollare il codice hash del tuo keystore di rilascio e assicurarti che sia correttamente inserito nella Console API di Google.

+1

può essere che l'algoritmo di firma debba essere SHA1 con RSA piuttosto che SHA256 con RSA? – user1851212

+0

Solo per aggiungere un aspetto a questa risposta molto utile. È possibile creare una chiave API per entrambe le chiavi contemporaneamente, di debug e di rilascio. In questo modo non dovrai preoccuparti delle modifiche apportate al file manifest o gradle config. Basta usare l'unica chiave API che funziona con tutte le chiavi dell'app. –

0

Basta cancellare i dati (Impostazioni-> App-selezionare app-Cancella dati-> disinstallare) e provare. questo ha funzionato per me. Assicurarsi che il nome del pacchetto sia uguale a quello nella console per gli sviluppatori di Google. se si crea il codice SHA1 dal keystore personalizzato, utilizzare lo stesso in modalità di rilascio. o generare apk firmando con quello stesso keystore.

0

1- Creare il file apk utilizzando "Usa l'esportazione guidata" nel file "Android Manifest" del progetto.

2- Dopo aver inserito chiave e prima di terminare, MD5 e SHA1 chiavi sono mostrati come mostrato è questo dato pic

3- Crea nuova chiave API per il progetto Android per nuovo SHA1 che viene recuperata nel punto 2.

4- Utilizzare la chiave API nel file manifest come mostrato di seguito

5- Pulire il progetto e creare nuovamente il file APK.

6- Puoi vedere google maps ora in quell'apk.

10

se avete già provato @Budius risposta ed ancora di fronte a questo errore, potrebbe essere causato dalla seguente situazione:

Quando si aggiunge il vostro MapFragment, Android Studio creare 2 file google_maps_api.xml: uno all'interno della cartella src/debug/res/values ​​e l'altro all'interno di src/release/res/values.

Ma per qualche motivo, solo il file della cartella di debug è visualizzato su Android Studio. Quindi, quando si modifica il valore della chiave API, viene eseguito solo nel file della cartella di debug.

Quindi copia il file google_maps_api.xml per rilasciare la cartella e assicurati che entrambi siano con lo stesso APIKey.

questo ha funzionato per me dopo tutti gli altri tentativi.

+1

Grazie! correggi il mio problema – user3722523

+0

grazie ... ho lavorato 48 ore per risolvere questo problema. no ho la soluzione. –

Problemi correlati