Googleマップを使用するAndroidアプリがあります。突然、リリースモードで動作しなくなりました。マップビューでは、Google Playサービスが更新されていますエミュレーターおよび実際のデバイスで。ネット上で検索すると、誰もがAPIキーファイルについて話しますが、これは私の問題ではありません。
リリース設定のあらゆる異なる組み合わせを試しましたが、見つけましたビルド構成でdebuggable = false
を設定すると問題が発生します(debuggable = true
で動作します)。もちろん、APKはデバッグできないため、マップが機能しない理由を理解できません。また、最新(10.2.0
)であっても、Google Playサービスの複数のバージョンを試しました。変わりはない。
私に何ができる?このバグを修正するまで、Playストアで新しいリリースをリリースすることはできません。
「debuggableをfalseに設定すると、機能しなくなります」
これは、APIアクセスがデバッグモードに制限されていることを示しています。デバッグ用とリリース用に別々のAPIキーがないことを考慮すると、キーはデバッグ証明書に関連付けられているように見えます。
ドキュメント で「APIキーの制限の詳細」を引用するには:
オプションで制限を追加できます。 Androidアプリの場合、キーをアプリのSHA-1フィンガープリントに制限します
このような制限がある場合、リリース証明書の指紋が異なると、APIアクセスが切断されます。
正しい(リリース)証明書のフィンガープリントを取得するには、上記のリンクされたドキュメントの「証明書情報を自分で取得する」セクションをご覧ください。
私は同じ問題を抱えていましたが、なんとかそれを修正しました。この問題は、minifyEnabledオプションがtrueに設定されている場合に発生します(falseの場合、問題は発生しません)。
要するに、私がしたことは次の行を追加することでした:
-keep class com.google.** {*; }
googleプレイサービスの依存関係が難読化されないようにするために、proguardルールファイル(proguard-rules.pro)に追加します。少なくとも私の場合、このルールを追加しても、結果のAPKはそれほど大きくないようです。
マップコンポーネントの使用が別のモジュール(たとえば、共有ライブラリ)から行われたときに問題が発生すると思いますが、私はそれを確認しませんでした。
残念ながら、最新のGoogle Play Servicesには欠陥があり、埋め込みマップはほぼすべてのHuawei/Meizuの携帯電話WORLDWIDEで機能しなくなります。キャッシュをクリアして修正する方法はありません。次回の再起動時に12.6.73 Google Play Servicesが自動的に更新され、数時間以内に再び動作しなくなるためです。唯一の方法はグーグルのホットフィックスを待つことです。
これは、この問題に関するGoogle公式の欠陥追跡チケットです。
同じ「エラー」があった場合は、次の手順を使用して解決できます。
https://productforums.google.com/forum/#!topic/play/ey7qIRBYj-o
「Google Play Servicesが停止しました」というメッセージを常に受け取ったときの気持ちを知っています。この問題を解決するには、Google Play Services([設定]> [アプリ]または[アプリケーションマネージャ]> [Google Play Services]> [キャッシュをクリア]> [OK])およびGoogle Playストアのキャッシュをクリアすることをお勧めします。キャッシュをクリアしたら、デバイスを再起動して機能しているかどうかを確認します。
同じ問題があった。 Google Playサービスをgradleから更新してから確認してください。役立つかもしれません。もう1つ、最新のgradleバージョンを使用し、ターゲットを17以上に設定してください。