2014-06-11 13 views
13

Vor einiger Zeit habe ich ein Beispielprojekt mit Oauth2 client id für die Android-Anwendung in der Google APIs-Konsole erstellt (nennen wir es "Beispielprojekt"). Ich fügte auch hinzu SHA1 fingerprint und Paketname (zum Beispiel com.package.name).Der von Ihnen angegebene Signatur-Fingerabdruck wird bereits von einem anderen Android-OAuth2-Client verwendet

Mein Fehler war, dass eine Anwendung mit demselben Paketnamen bereits existierte. Jetzt muss ich eine Oauth2 client id für Android-Anwendung im "gültigen Projekt" mit Paketname com.package.name und mit SHA1 fingerprint, die ich zuvor hinzugefügt habe, erstellen. Offensichtlich habe ich einen Fehler bekommen, als ich diesen Fingerabdruck hinzufügen wollte.

The signing fingerprint you specified is already used by another Android OAuth2 client. 

Danach habe ich über „Beispielprojekt“ erinnerte und gelöschte client id aus diesem Projekt. Das Problem ist, dass ich diesen Fingerabdruck immer noch nicht für den Paketnamen com.package.name hinzufügen kann. Client id ist gelöscht, aber ich habe immer noch den gleichen Fehler wie oben.

So habe ich eine Möglichkeit, diesen Fingerabdruck für den gleichen Paketnamen in einem anderen Projekt zu verwenden?

+0

Wurde das jemals gelöst? Danke –

+0

Auch der gleiche Fehler aufgetreten. Ich musste die zuvor erstellte clientId mit dem gleichen Paket und dem gleichen Fingerprint entfernen, um die neue clientId zu erstellen. Ich habe diese clientId sogar von einem anderen Google-Konto erstellt – Robert

+0

@Robert auch mit diesem Problem konfrontiert ... Ich habe meine App von einer Google Developer-Konsole gelöscht und erstellen Sie die gleiche App mit dem gleichen SHA1 und pakeje Namen auf einem anderen Google-Dev-Konto. .. Aber google regect mich noch, um Anmeldeinformationen zu speichern ... –

Antwort

12

Dieser Fehler tritt auf, wenn auf Google Developers ein SIGNING CERTIFICATE FINGERPRINT (SHA1) vorhanden ist, der mit einem anderen Konto verknüpft ist.

Lösung ist das Projekt zu löschen, das SHA1 in console.developers.google.com für das alte/falsche Projekt verwendet.

Sie können den SHA1-Fingerabdruck nicht ändern, nachdem er einmal festgelegt wurde. Denken Sie daran, dass das Löschen des Projekts 7 Tage dauert, um es vollständig zu entfernen.

Eine weitere Option ist die debug.keystore und erzeugen ein neues löschen mit:

keytool -genkey -v -keystore debug.keystore -alias androiddebugkey 
-storepass android -keypass android -keyalg RSA -validity 14000 

Erinnern Sie die App deinstallieren müssen Sie sonst die [INSTALL_FAILED_UPDATE_INCOMPATIBLE] Fehler.

+0

also, wenn ich mehr als eine App mit einem Debug-Keystore ausführen möchten, dann ist das nicht möglich? Sollte ich in einer solchen Situation einen Produktionsschlüsselspeicher verwenden? –

+2

Nein, Sie können den 'debug.keystore' für mehrere Apps verwenden – surfer190

+1

Dann haben jede App unterschiedliche debug.keystore? sonst erzeugen alle Apps den gleichen SHA1-Schlüssel, oder? es ist etwas verwirrend für mich. Bitte erläutern Sie –

1

Wenn Sie jedes Firebase-Projekt für jedes env verwenden, wie ich bin, könnte der folgende Ansatz hilfreich sein.

In Build gradle, erstellen für jeden env neue Anwendungs-ID:

productFlavors { 
     dev { 
      applicationId "se.abc.dev" 
     } 
     stag { 
      applicationId "se.abc.stag" 
     } 
     prod 
    } 

An jedem Projekt Feuerbasis, ein neues Projekt mit entsprechender Anwendungs-ID mit dem gleichen Fingerabdruck hinzuzufügen. Denken Sie daran, die neue Google-Dienst-JSON-Datei herunterzuladen, da die Anwendungs-ID geändert wurde. Der Paketname bleibt derselbe, so dass es beim Hochladen in Google Play kein Problem geben würde. Aber natürlich lasse ich den Prod-Flavour leer, so dass der Paketname und die Anwendungs-ID für Prod-Releases identisch sind, um Probleme zu vermeiden.

0

Da jemand die gleiche Anwendung durch zwei oder mehr Firebase-Projekte aus vielen Gründen verwenden könnte und damit diesen Fehler bekomme, gehe ich hier auf dieses spezielle Szenario ein.Die esiest Art und Weise die gleiche Anwendung auf zwei oder mehr verschiedene Feuerbasis Projekte (sagen wir mal die Produktion und Inszenierung) ausgeführt werden soll, um Ihre Modulebene build.gradle Datei eine Build-Variante (sagen wir mal Inszenierung) wie diese hinzu:

apply plugin: 'com.android.application' 
apply plugin: 'com.google.firebase.firebase-perf' 

android { 
    compileSdkVersion 27 
    buildToolsVersion "27.0.3" 
    defaultConfig { 
     applicationId "com.mydomain.myapp" 
     minSdkVersion 19 
     targetSdkVersion 27 
     versionCode 18 
     versionName "2.8" 
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
     multiDexEnabled true 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
     staging { 
      initWith debug 
      applicationIdSuffix ".staging" 
      versionNameSuffix = "-staging" 
     } 
    } 
} 

dependencies { 
    [...] 
} 

// Firebase 
apply plugin: 'com.google.gms.google-services' 

in der Build-Variante staging, was am wichtigsten ist, ist die Zeile:

applicationIdSuffix ".staging" 

das bei der Erstellung ID ein „.staging“ Suffix für Ihre Anwendung injizieren, so dass Sie automatisch

haben
applicationId "com.mydomain.myapp.staging" 

Sie müssen diese Anwendung ("com.mydomain.myapp.staging") dann zu Ihrem Firebase-Staging-Projekt hinzufügen, und Sie können dieser Anwendung denselben "com.mydomain.myapp"SHA1 hinzufügen, da sie eine andere Anwendungs-ID hat.