我在谷歌地图中遇到一个问题。当我从谷歌游戏商店下载apk时,谷歌地图没有显示,但是当我手动安装(通过转移到设备)相同的apk上传到游戏商店时,它工作正常。< / p>
我已经重新检查了我的调试和释放密钥here
请在清单文件中找到权限:
<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" />
在应用程序节点中:
<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);
}
}
答案 0 :(得分:24)
我最近在Google Play商店上传了APK,在查看Play控制台后我遇到了同样的问题我找到了解决此问题的方法。
他们的密钥没问题,但问题出在你的SHA-1上。您使用SHA-1对APK进行了签名,然后上传APK也很好。
但是,根据Play控制台的新更新,当您使用SHA-1签署APK并上传APK时,它仅由您签名,但根据新的更新,它也会由Google Play签名以获得更高的安全性。在这里查看Google Play部分的一部分:
使用Google Play应用程序签名:您使用上传密钥对应用进行签名。 然后,Google会验证并删除上传密钥签名。最后, Google会使用您提供的原始应用签名密钥重新签名该应用 并将您的应用程序交付给用户。
您可以参考Documentation here.
现在,您的问题的答案是成功上传APK后,您可以看到在带有两个SHA-1的部分中,第一个SHA-1是Google创建的是自己的第二个SHA-1是你的。
因此,只需复制Google SHA-1并将其粘贴到生成Google Map API密钥的控制台即可。
答案 1 :(得分:7)
经过对App Signing功能的长期研究后,我找到了Google添加应用程序签名功能的解决方案,用于通过Google Play发布应用程序。 由于所有客户端/开发人员面临密钥库不匹配/丢失问题,因此添加了此功能。
通常,在Google Play开发者控制台的新更新中,当我们通过Google Developer上传任何apk文件时,默认情况下会提供Google-Play自定义应用程序签名的服务。开发/发布密钥库已丢失用户可以使用新版本更新应用程序证书。
应用程序签名密钥:用于在用户设备上对APK进行签名的密钥。您目前持有应用签名密钥并使用它来为您的APK签名。完成计划注册流程后,您会将此密钥上传到Google。
上传密钥:您在注册该计划期间生成的新密钥。在将所有APK上传到Play控制台之前,您将使用上传密钥对所有未来的APK进行签名。
因此,如果您在应用发布期间接受应用签名功能,那么在Google控制台上,您必须提供Google的应用签名密钥SHA-1密钥,而不是您上传的证书密钥。所以只需使用App Signing SHA-1 Certificate更改它。
您可以从标签下方查找应用签名证书SHA-1 键。
Google Play开发者控制台&gt;仪表板&gt;发布管理&gt;应用程序签名。
答案 2 :(得分:0)
这是SHA1密钥问题。检查你的谷歌控制台指纹 SHA1 即发布。如果你的调试密钥在playstore App中不起作用。
调试证书:执行调试版本时,Android SDK工具会自动生成此证书。仅将此证书与您正在测试的应用一起使用。请勿尝试发布使用调试证书签名的应用程序。调试证书在Android Developer Documentation中的Signing in Debug Mode中有更详细的描述。
发布证书:Android SDK工具会在您执行发布版本时生成此证书。您还可以使用keytool程序生成此证书。当您准备将应用程序发布到全世界时,请使用此证书。