Android Studioで署名済みAPKを作成し、Google開発者コンソールとFacebookコンソールにSHA1フィンガープリントとアプリの相対APIキーを追加しました。署名済みAPKをUSB、それをインストールした後、マップAPIとFacebook APIはうまく機能します。同じapkをPlayストアにアップロードした場合、Facebookでログインしようとすると、「無効なキーハッシュです。キーハッシュblablablaは保存されているものと一致しません.. "。したがって、Facebookなしでログインすると、Googleマップを取得することさえできません。これにより、PlayストアにロードされたAPKが彼の指紋やそのようなものを変更していると思います。すべてを確認した= Android Developers and Stackoverflow、しかし私はそれを動作させることができません。奇妙なことに、この署名付きリリースAPKはPlayストアにロードするまでうまく機能するということです。
私は最終的に解決しました、問題はおそらくapiによって提供されたファイルgoogle_maps_api.xmlがリリースにロードされなかったため、i
私はそのようにしました:
buildTypes {
debug {
manifestPlaceholders = [mapsKey: "AIzaSyB8o9KzQ5YN8U8AFS************"]
}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
manifestPlaceholders = [mapsKey: "AIzaSyApLacqgkdIR7uEpcf*****************"]
}
}
そして私のAndroidManifestで
<meta-data
Android:name="com.google.Android.geo.API_KEY"
Android:value="${mapsKey}" />
リファレンス: https://stackoverflow.com/a/33917692/323556
次に、2つの異なるキーをそれぞれ適切なsha1フィンガープリントで登録しました。1つはデバッグ用で、もう1つはGoogle Play Consoleから提供されたものです(アップロード証明書ではなく、Googleが生成したもう1つ)。
ZuhadとAndy Developerにインスピレーションを与えてくれて本当にありがとう。
これが、Googleマップが表示されない理由の答えです
最近、Google PlayストアにAPKをアップロードしましたが、Play Consoleを確認した後、同じ問題に直面しました。この問題の解決策が見つかりました。
彼らはあなたの鍵に問題はありませんが、問題はあなたのSHA-1にあります。良好なSHA-1を使用してAPKに署名し、APKも正常にアップロードしました。
ただし、SHA-1を使用してAPKに署名し、APKをアップロードしたときのPlay Consoleの新しい更新では、署名は自分だけでしたが、新しい更新では、セキュリティを強化するためにGoogle Playでも署名されています。 Google Playセクションの一部をご覧ください。
Google Playアプリ署名の場合:アップロードキーを使用してアプリに署名します。次に、Googleはアップロードの鍵署名を検証して削除します。最後に、Googleは提供された元のアプリ署名鍵でアプリに再署名し、アプリをユーザーに配信します。
参照できます ドキュメントはこちら
今、あなたの質問の答えは次のとおりですAPKを正常にアップロードした後、2つのSHA-1のセクションで最初のSHA-1がGoogleによって作成されたことがわかりますそれ自身と2番目のSHA-1はあなたのものです。
したがって、Google SHA-1をコピーして、Google Map APIキーを生成するコンソールに貼り付けます。
@Andy Developerからインスピレーションを得て、アプリがGoogle Playにアップロードされた後に地図を表示できました。これらはステップでした:
Facebookでハッシュキーを生成するには、次のコードを使用します。
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) {
}
ハッシュコードを受け取ったら、それをFacebook開発者コンソールに貼り付けて先に進みます
それが役に立てば幸い:)
アプリケーションのデバッグおよびリリースビルドタイプは、2つの異なるキーで署名されています。
サービスへのアクセスを許可するには、GoogleマップとFacebookの両方のキーを登録する必要があります