2014-06-11 14 views
13

Jakiś czas temu stworzyłem przykładowy projekt (nazwijmy go "przykładowy projekt") z Oauth2 client id dla aplikacji na Androida w konsoli Google API. Dodałem także SHA1 fingerprint i nazwę pakietu (na przykład com.package.name).Podany przez ciebie odcisk palca podpisu jest już używany przez innego klienta OAuth2 z Androidem.

Mój błąd polegał na tym, że aplikacja o tej samej nazwie pakietu już istniała. Teraz muszę utworzyć Oauth2 client id dla aplikacji dla systemu Android w "poprawnym projekcie" o nazwie pakietu com.package.name oraz z SHA1 fingerprint, którą dodałem wcześniej. Oczywiście, gdy próbowałem dodać ten odcisk palca, dostałem błąd.

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

Potem przypomniałem sobie o „przykład projektu” i usunięte client id z tego projektu. Problem polega na tym, że nadal nie mogę dodać tego odcisku palca do nazwy pakietu com.package.name. Client id został usunięty, ale nadal mam ten sam błąd, co powyżej.

Czy mam również możliwość korzystania z tego odcisku palca dla tej samej nazwy pakietu w innym projekcie?

+0

Czy to się kiedykolwiek udało? Dzięki –

+0

Wystąpił również ten sam błąd. Musiał usunąć wcześniej utworzony identyfikator klienta z tym samym pakietem i odciskami palca, aby móc zarządzać tworzeniem nowego ID klienta. Stworzyłem ten identyfikator klienta nawet z innego konta Google – Robert

+0

@Robert również spotkałem się z tym problemem ... Usunąłem moją aplikację z jednej Google Developer Console i utworzyłem tę samą aplikację o tej samej nazwie SHA1 i pakeje na innym koncie dev Google. .. Ale google wciąż odzyskać mnie, aby zapisać poświadczenia ... –

Odpowiedz

12

Ten błąd występuje, gdy istniejący SIGNING CERTIFICATE FINGERPRINT (SHA1) w Google Developers jest powiązany z innym kontem.

Rozwiązaniem jest usunięcie projektu, który używa tego SHA1 w console.developers.google.com dla starego/niepoprawnego projektu.

Nie można zmienić odcisku palca SHA1 po jego ustawieniu. Pamiętaj, że usunięcie projektu zajmuje 7 dni, aby go całkowicie usunąć.

Inną opcją jest usunięcie debug.keystore i wygenerować nowe z:

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

Pamiętaj trzeba odinstalować aplikację w przeciwnym razie pojawia się błąd [INSTALL_FAILED_UPDATE_INCOMPATIBLE].

+0

, więc jeśli chcę uruchomić więcej niż jedną aplikację z debugowania pliku kluczy, to nie jest to możliwe? Czy w takiej sytuacji powinienem użyć magazynu kluczy produkcyjnych? –

+2

Nie, możesz użyć 'debug.keystore' dla wielu aplikacji. – surfer190

+1

Następnie każda aplikacja ma inny plik debug.keystore? w przeciwnym razie wszystkie aplikacje będą produkować ten sam klucz SHA1, prawda? to trochę mylące dla mnie. proszę wytłumaczyć –

1

Jeśli używasz każdego projektu bazy ogniowej dla każdego środowiska, tak jak ja, pomocne może być poniższe podejście.

W swojej kompilacji Gradle utworzyć nowy identyfikator aplikacji dla każdego env:

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

Na każdym projekcie Firebase, dodać nowy projekt z odpowiednim identyfikatorem aplikacji z tym samym nadrukiem palca. Pamiętaj, aby pobrać nowy plik json serwisu Google, ponieważ zmienił się identyfikator aplikacji. Nazwa pakietu pozostaje taka sama, więc nie byłoby problemu przy przesyłaniu do Google Play. Ale na pewno pozostawiam pusty prod, pusty, więc nazwa pakietu i identyfikator aplikacji będą takie same dla wersji prod, aby uniknąć kłopotów.

0

Jako że ktoś może chcieć użyć tej samej aplikacji przez dwa lub więcej projektów firebase z wielu powodów, więc otrzymaj ten błąd. Zajmuję się tym konkretnym scenariuszem.Esiest sposób na uruchomienie tej samej aplikacji na dwóch lub więcej różnych projektów Firebase (powiedzmy produkcja i inscenizacja) jest dodanie do swojego poziomu build.gradle plików wariant budowy moduł (powiedzmy inscenizacja) jak ten:

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' 

w wariancie budowy staging co najważniejsze jest linia:

applicationIdSuffix ".staging" 

Ten wstrzyknie w czasie zbudować „.staging” przyrostek do identyfikatora aplikacji tak, że będziesz automatycznie

applicationId "com.mydomain.myapp.staging" 

Należy dodać tę aplikację(), aby dodać ten wniosek ("com.mydomain.myapp.staging") do projektu pomostu w bazie Firebase, dzięki czemu będzie można dodać tę samą aplikację do tej aplikacji, ponieważ ma ona inny identyfikator aplikacji.

Powiązane problemy