簡體   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