[英]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.