少し前に、Google APIコンソールでAndroidアプリケーション用の_Oauth2 client id
_を使用してサンプルプロジェクト(「サンプルプロジェクト」と呼ぶことにします)を作成しました。 _SHA1 fingerprint
_とパッケージ名(com.package.nameなど)も追加しました。
私の間違いは、同じパッケージ名のアプリケーションがすでに存在していたことでした。次に、パッケージ名_Oauth2 client id
_および前に追加した_com.package.name
_を使用して、「有効なプロジェクト」に_SHA1 fingerprint
_ for Androidアプリケーションを作成する必要があります。明らかに、この指紋を追加しようとすると、エラーが発生しました。
_The signing fingerprint you specified is already used by another Android OAuth2 client.
_
その後、「サンプルプロジェクト」について思い出し、このプロジェクトから_client id
_を削除しました。問題は、パッケージ名_com.package.name
_にこのフィンガープリントを追加できないことです。 _Client id
_は削除されましたが、それでも上記と同じエラーが発生します。
別のプロジェクトで同じパッケージ名にこのフィンガープリントを使用する可能性はありますか?
このエラーは、別のアカウントにリンクされているGoogle Developersに既存のSIGNING CERTIFICATE FINGERPRINT (SHA1)
がある場合に発生します。
解決策は、古い/正しくないプロジェクトのSHA1
でconsole.developers.google.com
を使用しているプロジェクトを削除することです。
SHA1フィンガープリントは、一度設定すると変更できません。プロジェクトを削除すると、完全に削除されるまで7日かかることに注意してください。
もう1つのオプションは、debug.keystore
を削除して、次のもので新しいものを生成することです。
keytool -genkey -v -keystore debug.keystore -alias androiddebugkey
-storepass Android -keypass Android -keyalg RSA -validity 14000
アプリをアンインストールする必要があります。そうしないと、[INSTALL_FAILED_UPDATE_INCOMPATIBLE]
エラーが発生します。
私と同じように、各環境の各Firebaseプロジェクトを使用している場合は、以下の方法が役立つ場合があります。
ビルドグラドルで、環境ごとに新しいアプリケーションIDを作成します。
productFlavors {
dev {
applicationId "se.abc.dev"
}
stag {
applicationId "se.abc.stag"
}
prod
}
各firebaseプロジェクトで、同じフィンガープリントを使用して、対応するアプリケーションIDを持つ新しいプロジェクトを追加します。アプリケーションIDが変更されたので、新しいgoogle service jsonファイルをダウンロードしてください。パッケージ名は同じままなので、Google Playにアップロードするときに問題にはなりません。しかし、確かに、prodフレーバーは空のままにしているので、トラブルを回避するために、パッケージ名とアプリケーションIDはprodリリースと同じになります。
誰かが多くの理由で2つ以上のfirebaseプロジェクトで同じアプリケーションを使用する可能性があるため、このエラーが発生するので、この特定のシナリオに対処します。同じアプリケーションを2つ以上の異なるFirebaseプロジェクト(プロダクションとステージングなど)で実行する最も簡単な方法は、次のようなビルドバリアント(ステージングなど)をモジュールレベルのbuild.gradle
ファイルに追加することです。
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'
ビルドバリアントstaging
では、次の行が最も重要です。
applicationIdSuffix ".staging"
これにより、ビルド時に「.staging」サフィックスがアプリケーションIDに挿入され、自動的に
applicationId "com.mydomain.myapp.staging"
このアプリケーション("com.mydomain.myapp.staging"
)をfirebaseステージングプロジェクトに追加する必要があるため、同じ"com.mydomain.myapp"
SHA1をこのアプリケーションに追加できます。別のアプリケーションID。
今日この問題に遭遇しました。プロジェクトが完全に削除されるまでには時間がかかるため、最も簡単な方法は、ローカルdebug.keystoreを削除するだけで新しいSHA1を作成することです。削除後にアプリを実行すると、自動生成されます。これは、Android docs here に記載されています。
遅いですが価値があります。私は同じ間違いをしました。間違ったアカウントでFirebaseにプロジェクトを追加してから、削除して別のFirebaseアカウントに追加しようとしましたが、エラーがプロジェクトがすでに登録されていることを示しているため、実行できませんでした。そのため、完全に削除するには約5〜7日かかるので時間がかかります。
次に、別のsha1を生成するために実行した手順を示します。
- 見つけた私のPCで.Androidに移動します。 C:\ Users\shahz.Android。
- debug.keystoreを削除します。
- 再構築Androidプロジェクト。
署名レポートをクリックします(右側のバーのクリックグラドル、app/task/Android/siginingReport)
新しいsha1で新しいデバッグキーを取得します。
アプリを登録します。
アプリがPlayストアに掲載されている場合、パッケージ名を変更したり、プロダクションキーを置き換えたりしたくない場合があります(新しいものを作成する必要があるため)リスト)。
現在アクティブなプロジェクトが現在のパッケージ名/フィンガープリントのペアを使用していないことが確実である場合は、最後に試すことの1つ:完全に新しい認証情報を作成します。アプリケーションの認証情報ファイルを置き換える必要があります。
これが役立つとは思っていませんでしたが、役に立ちました。たぶんグーグルはどういうわけかルックアップをキャッシュしていますか? 「このパッケージ名/フィンガープリント/クライアントIDルックアップは重複しているので、再度ルックアップする必要はありません。」
私は同じ問題に直面しました、その解決策は非常に簡単です
Console.developerに移動すると、このパッケージで作成された自動生成キーが表示されます。そのパッケージを削除し、再度shaキーを追加します。あなたが成功することを願っています。このリンクをたどってください https://console.developers.google.com/apis/credentials ?