繁体   English   中英

谷歌地图没有显示何时从Playstore下载应用程序,但在安装直接签名的apk时显示正常

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM