1

Ich habe ein signiertes APK mit Android Studio erstellt und der SHA1-Fingerabdruck und den relativen API-Schlüsseln in meiner App zur Google Developer Console und Facebook-Konsole hinzugefügt. Alles funktioniert gut, wenn ich meine signierte Apk via USB hochlade, nach der Installation der Karten api und facebook api funktioniert gut. Wenn ich die gleiche APK in den Play Store hochlade, wenn ich versuche, mich mit Facebook anzumelden, heißt es "ungültiger Schlüssel-Hash. Der Schlüssel-Hash blablabla passt nicht zu irgendwelchen gespeicherten ..". Also wenn ich ohne Facebook logge, kann ich nicht einmal meine Google Maps bekommen; Das führt mich zu der Annahme, dass die auf dem Play Store geladene Apk seinen Fingerabdruck oder ähnliches ändert. Ich habe all die Sachen auf Android Developers und Stackoverflow überprüft, aber ich kann es nicht funktionieren lassen, weil die signierte Version so gut funktioniert, bis ich sie in den Play Store geladen habe.Veröffentlichte App im Play Store kann nicht mit Google Maps API und Facebook API kommunizieren

+1

Für Facebook benötigen Sie einen Entwicklerschlüssel-Hash und einen Release-Schlüssel-Hash. Sehen Sie sich diesen Link an: https: //developers.facebook.com/docs/android/getting-started # release-key-hash –

+0

gucken meine antwort für google map. Sie müssen SHA-1, das von Google Play generiert wird, ändern, indem Sie das neue SHA-1 in Ihrer Spielekonsole finden und es in Ihre Google Map API hochladen. Es funktioniert wie ein Zauber. –

+0

Verwenden Sie Firebase? – Gopal

Antwort

0

ich endlich gelöst wurde das Problem wahrscheinlich, dass die Datei google_maps_api.xml durch die api bereitgestellt wurde nicht in der Release geladen, so dass ich

ich tat so:

buildTypes { 
    debug { 
     manifestPlaceholders = [mapsKey: "AIzaSyB8o9KzQ5YN8U8AFS************"] 
    } 
    release { 
     minifyEnabled false 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     manifestPlaceholders = [mapsKey: "AIzaSyApLacqgkdIR7uEpcf*****************"] 
    } 
} 

und dann in meinem AndroidManifest

<meta-data 
     android:name="com.google.android.geo.API_KEY" 
     android:value="${mapsKey}" /> 

Referenz: https://stackoverflow.com/a/33917692/3235560

dann registriert i 2 verschiedenen Tasten jeweils mit der rechten SHA1-Fingerabdruck, ein Debug und die andere von Google gegeben Konsole Play (nicht der Upload-Zertifikat, aber die anderen von Google erzeugt ein).

Sehr Sehr danke an Zuhad und Andy Developer für Inspiration.

0

Die Debug- und Release-Build-Typen Ihrer Anwendung sind mit zwei verschiedenen Schlüsseln signiert.

Sie müssen beide Schlüssel in den Google Maps und Facebook registrieren für sie Zugang zu ihren Diensten

+1

Das habe ich gemacht. Ich habe auch das Deployment-Cert von der Play Store-Konsole heruntergeladen und den folgenden Befehl ausgeführt: 'cat deployment_cert.der | openssl sha1 -binary | openssl base64' und es gab mir die API-Taste für Facebook-Login, die jetzt funktioniert, aber ich kann nicht arbeiten Maps. In der Datei unter /app/src/release/res/values/google_maps_api.xml habe ich den Schlüssel aus der Google Maps-Konsole hinzugefügt, in dem ich auch den sha1-Fingerabdruck von meinem eigenen Zertifikat (aus Android Studio) und dem sha1-Fingerabdruck registriert habe aus Play Store-Konsole, aber es funktioniert nicht – exrezzo

+0

Ist Ihr Debug-Build mit einer anderen ApplicationId/Paket als der Release-Build? Abhängig davon, müssen Sie möglicherweise einen anderen Eintrag auf der Google Maps API-Schlüssel Config –

+0

am Generieren Debug-API-Schlüssel seine Arbeit.Wenn ich signedapi Schlüssel für die Veröffentlichung integrieren noch arbeiten bitte helfen Sie mir.nach generieren signes apk und wieder generieren signierten Google maps api key mit signierter Schlüsselspeicherdatei und Alias. – Harsha

0

Ja zu ermöglichen, Offensichtlich ist die Karte nicht in signierten APK laden.

Lösung:

Wenn Sie API-Schlüssel in Google API-Konsole generieren müssen Sie den Schlüssel mit SHA beschränken Schlüssel

aber nach APk Signed Erzeugen müssen Sie Freigabemodus SHA Schlüssel nehmen und in API-Konsole hinzufügen haben sie für die API enter image description here

I Bild angeschlossen haben, einen Blick

hoffe, es hilft.

+0

die Sache ist, dass die API-Schlüssel für Debug- und Release unterschiedlich sind, in der Tat ich in der gradle Datei geschrieben 'buildTypes { Debug { manifestPlaceholders = [google_map_key: "AIzaSyB8o9KzQ5YN8U8AFSxbTJLheFiubF ****"] } Mitteilung { minifyEnabled falsch proguardFiles getDefaultProguardFile ('proguard-android.txt'), 'proguard-rules.pro' manifestPlaceholders = [google_map_key: "AIzaSyApLacqgkdIR7uEpcf7EDuGvsQlgh *****"] signingConfig signingConfigs.config } ' – exrezzo

+0

auch wenn ich hinzufügen, wie Sie haben gesagt, für jeden Schlüssel sowohl debug sha1 und release sha1 es funktioniert nicht – exrezzo

+0

Besser erstellen Sie einen neuen API-Schlüssel und versuchen zu implementieren, Nur der API-Schlüssel ist die Lösung, die ich hoffe – Zuhad

0

Für Facebook-Hash-Schlüssel zu erzeugen, um den folgenden Code verwenden:

try { 
     PackageInfo info = getPackageManager().getPackageInfo(
       "YOUR PACKAGE NAME", 
       PackageManager.GET_SIGNATURES); 
     for (Signature signature : info.signatures) { 
      MessageDigest md = MessageDigest.getInstance("SHA"); 
      md.update(signature.toByteArray()); 
      Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT)); 
     } 
    } catch (PackageManager.NameNotFoundException e) { 

    } catch (NoSuchAlgorithmException e) { 

    } 

Sobald Sie den Hash-Code erhalten, setzen Sie das gleiche in Facebook Entwickler-Konsole einfügen und vor

bewegen hoffen, es hilft :)

18

Hier ist die Antwort, warum Sie die Google Map nicht sehen können.

Ich habe vor kurzem Upload der APK im Google Play Store und ich konfrontiert das gleiche Problem nach der Überprüfung der Play Console fand ich die Lösung für dieses Problem.

Sie sind kein Problem mit Ihrem Schlüssel, aber das Problem ist mit Ihrem SHA-1. Du hast dein APK mit deinem SHA-1 unterschrieben, das ist in Ordnung und dann lädst du das APK auch in Ordnung.

Aber nach dem neuen Update für Play Console, als Sie Ihr APK mit SHA-1 signiert und das APK hochgeladen haben, wurde es nur von Ihnen signiert, aber gemäß dem neuen Update wird es auch von Google Play für mehr Sicherheit signiert. Hier ein Teil des Google Play-Bereichs:

Mit Google Play App Signing: Sie signieren Ihre App mit Ihrem Upload-Schlüssel. Dann überprüft Google die Signatur des Upload-Schlüssels und entfernt sie. Endlich, Google signiert die App mit dem ursprünglichen App-Signaturschlüssel, den Sie zur Verfügung gestellt haben und sendet Ihre App an den Nutzer.

Sie verweisen Documentation here.

Nun ist die Antwort auf Ihre Frage Nach einer erfolgreich verlaufenen APK hochladen können Sie die im Abschnitt sehen mit zwei SHA-1 der 1. SHA-1 ist Google erstellt seine eigene und 2. SHA-1 ist seine Ihre.

Kopieren Sie einfach den Google SHA-1 und fügen Sie ihn in Ihre Konsole ein, wo Sie den Google Map API Key generieren.

+3

Danke Mann! Ich habe mir 3 Tage lang den Kopf gebrochen, um das herauszufinden. Obwohl es eine Menge Antworten gab, die den Schlüssel sha1 änderten, war dies klar und klar und auf den Punkt. Danke für Ihre Hilfe. – user669444

+0

@ user669444 willkommen sir :) –

+1

@AndyDeveloper Danke Mann ... wirklich hast du mich gerettet. Ich habe mein Projekt buchstäblich aus Firebase und Google Console gelöscht und es neu erstellt und konfiguriert, aber das macht keinen Unterschied. Heats Off auf Ihre Antwort. –

5

Inspiriert von @Andy Developer konnte ich die Karte anzeigen, nachdem meine App auf Google Play hochgeladen wurde. Dies waren die Schritte:

  1. Laden Sie Ihre App bei Google Play (signierte APK-Datei)
  2. Nachdem die App eingereicht wurde und genehmigt, wählen Sie Ihre App von Google Play Console
  3. Zum Entwicklungstools ->Release Management ->App Unterzeichnung

App Signing in Google Play Console

  1. Kopieren Sie das erste SHA-1-Zertifikat, das Google Play nach dem Hochladen der App erstellt hat.
  2. Gehen Sie zu Google Console und wählen Sie Ihr Projekt.
  3. Wählen Sie Ihren API-Schlüssel, beschränken Sie Ihren Schlüssel und fügen Sie den SHA-1 nach dem Paketnamen ein.

Paste SHA-1 into Google Console

  1. Press Speichern, ein paar Minuten warten. und deine App sollte Google Maps anzeigen.
Verwandte Themen