[英]Google map not showing when app is downloaded from playstore but showing fine when installed directly signed apk
我在谷歌地圖面臨一個問題。當我從谷歌游戲商店下載apk時,谷歌地圖沒有顯示,但是當我手動安裝(通過轉移到設備)相同的apk上傳到游戲商店時,它工作正常。
我有我的復查調試和發布密鑰,其目前在這里
請在清單文件中找到權限:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.USE_FINGERPRINT" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />
在Application節點中:
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="@string/google_maps_key" />
我的java文件說:
@Override
public void onMapReady(GoogleMap googleMap) {
try {
map = googleMap;
// it will hide navigation and gps pointer buttons on map
map.getUiSettings().setMapToolbarEnabled(false);
// map.getUiSettings().setZoomControlsEnabled(false);
if (TextUtils.isEmpty(companyDetailModel.getSupplierCompanyDetailsRS().getResponseDetail().getCompanyDetail().getLatitude())) {
if (!PermissionUtil.checkPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION)) {
PermissionUtil.requestPermission(getActivity(), android.Manifest.permission.ACCESS_FINE_LOCATION, LOCATION_PERMISSION_CODE);
} else {
map.setMyLocationEnabled(true);
GoogleMap.OnMyLocationChangeListener myLocationChangeListener = new GoogleMap.OnMyLocationChangeListener() {
@Override
public void onMyLocationChange(Location location) {
LatLng loc = new LatLng(location.getLatitude(), location.getLongitude());
map.animateCamera(CameraUpdateFactory.newLatLngZoom(loc, 16.0f));
}
};
map.setOnMyLocationChangeListener(myLocationChangeListener);
}
} else {
LatLng latLng = new LatLng(Double.parseDouble(companyDetailModel.getSupplierCompanyDetailsRS().getResponseDetail().getCompanyDetail().getLatitude()), Double.parseDouble(companyDetailModel.getSupplierCompanyDetailsRS().getResponseDetail().getCompanyDetail().getLongitude()));
map.addMarker(new MarkerOptions().position(latLng)/*.title("" + companyDetailModel.getSupplierCompanyDetailsRS().getResponseDetail().getCompanyDetail().getAddress())/*.icon(BitmapDescriptorFactory.fromResource(R.drawable.icon_launcher))*/);
map.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 14.0f));
}
map.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
@Override
public void onMapClick(LatLng latLng) {
showFullScreenMap();
}
});
} catch (Exception e) {
Log.i("LatLng exception", "" + e);
Utils.showToast(getActivity(), "" + e);
}
}
我最近在Google Play商店上傳了APK,在查看Play控制台后我遇到了同樣的問題我找到了解決此問題的方法。
他們的鑰匙沒問題,但問題在於你的SHA-1。 你用你的SHA-1簽署你的APK很好,然后上傳APK也沒關系。
但是,根據Play控制台的最新更新,當您使用SHA-1簽署APK並上傳APK時,它僅由您簽名,但根據新的更新,它也會由Google Play簽名以獲得更高的安全性。 看一下Google Play部分的部分內容:
使用Google Play應用程序簽名:您使用上傳密鑰對應用進行簽名。 然后,Google會驗證並刪除上傳密鑰簽名。 最后,Google會使用您提供的原始應用簽名密鑰重新簽名應用,並將您的應用交付給用戶。
現在,您的問題的答案是在成功上傳APK之后,您可以看到在第2個SHA-1部分中, 第一個SHA-1是Google自己創建的, 第二個SHA-1是您自己的 。
因此,只需復制Google SHA-1並將其粘貼到生成Google Map API密鑰的控制台即可。
在對App Signing功能進行了長時間的研究之后,我找到了Google添加應用程序簽名功能的解決方案,用於通過Google Play發布應用程序。 由於所有客戶端/開發人員面臨密鑰庫不匹配/丟失問題,因此添加了此功能。
通常,在Google Play開發者控制台的新更新中,當我們通過Google Developer上傳任何apk文件時,默認情況下會提供Google-Play自定義應用程序簽名服務istead開發/發布密鑰庫已丟失用戶可以使用新證書更新應用程序。
應用程序簽名密鑰 :用於對用戶設備上的APK進行簽名的密鑰。 您目前持有應用簽名密鑰並使用它來為您的APK簽名。 完成程序注冊流程后,您將把此密鑰上傳到Google。
上傳密鑰 :您在注冊該計划期間生成的新密鑰。 在將所有APK上傳到Play控制台之前,您將使用上傳密鑰對所有未來的APK進行簽名。
因此,如果您在應用發布期間接受應用簽名功能,那么在Google控制台上,您必須提供Google的應用簽名密鑰SHA-1密鑰,而不是您上傳的證書密鑰。 所以只需使用App Signing SHA-1證書進行更改即可。
您可以從下面的選項卡中找到應用程序簽名證書SHA-1密鑰。
Google Play開發者控制台>信息中心>版本管理>應用程序簽名 。
這是SHA1密鑰問題。檢查你的google控制台指紋SHA1即發布。如果你的調試密鑰在playstore App中不起作用。
調試證書 :Android SDK工具在您進行調試構建時自動生成此證書。 僅將此證書與您正在測試的應用程序一起使用。 請勿嘗試發布使用調試證書簽名的應用程序。 調試證書在Android Developer Documentation中的Signing in Debug Mode中有更詳細的描述。
發布證書: Android SDK工具在您執行發布版本時生成此證書。 您還可以使用keytool程序生成此證書。 准備好向全世界發布應用程序時使用此證書。
有關詳細信息,請參閱獲取API密鑰和應用程序的SHA-1指紋
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.