web-dev-qa-db-fra.com

La carte Google ne s'affiche pas lorsque l'application est téléchargée à partir du PlayStore, mais affiche très bien lorsqu'elle est installée directement signée apk

Je suis confronté à un problème dans google map. La carte google ne s'affiche pas lorsque je télécharge l'apk à partir de Google Play Store, mais elle fonctionne correctement lorsque j'installe manuellement (en transférant sur l'appareil) le même apk qui a été chargé sur Play Store.

J'ai revérifié mes clés de débogage et de libération qui sont présentes ici

S'il vous plaît trouver la permission dans le fichier manifeste:

<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" />

Et dans le nœud d'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" />

et mon fichier Java dit:

@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);
    }

}
8
Rohit Sharma

J'ai récemment téléchargé l'APK sur le Google Play Store et j'ai rencontré le même problème après avoir vérifié la console de lecture. J'ai trouvé la solution à ce problème.

Il n’ya pas de problème avec votre clé mais le problème vient de votre SHA-1. Vous avez signé votre APK avec votre SHA-1, c'est très bien, puis vous téléchargez l'APK.

Mais selon la nouvelle mise à jour de Play Console, lorsque vous avez signé votre APK avec SHA-1 et que vous l'avez téléchargé, il est uniquement signé par vous, mais selon la nouvelle mise à jour, il est également signé par Google Play pour plus de sécurité. Jetez un coup d'œil ici à une partie de la section Google Play:

Avec la signature de l'application Google Play: vous signez votre application avec votre clé de téléchargement. Ensuite, Google vérifie et supprime la signature de la clé de téléchargement. Enfin, Google re-signe l'application avec la clé de signature d'origine que vous avez fournie et transmet votre application à l'utilisateur.

Vous pouvez consulter Documentation ici.

Maintenant, la réponse de votre question est: Après avoir téléchargé avec succès l'APK, vous pouvez voir que dans la section avec deux SHA-1, le 1er SHA-1 est créé par Google son propre et 2e SHA-1 c'est à vous .

Il vous suffit donc de copier Google SHA-1 et de le coller sur votre console, où vous générez la clé API Google Map.

21
Andy Developer

Après de longues recherches sur la fonctionnalité de signature d'application, je suis arrivé à la solution de la fonctionnalité de signature d'application ajoutée par Google pour la publication d'applications sur Google Play. Cette fonctionnalité a été ajoutée en raison d’un problème d’incompatibilité/perte de fichier de clés rencontré par tous les clients/développeurs.

En règle générale, dans la nouvelle mise à jour de la console développeur Google Play lorsque nous importons un fichier apk via Google Developer, le service de signature d'application par Google-Play a été perdu par défaut. Le développement/la libération du magasin de clés a été perdu.

Clé de signature de l'application : La clé utilisée pour signer le fichier APK se trouvant sur le périphérique de l'utilisateur. Vous détenez actuellement la clé de signature de l'application et vous l'utilisez pour signer vos fichiers APK. Lorsque vous aurez terminé le processus d’inscription au programme, vous téléchargerez cette clé sur Google.

Clé de téléchargement : Une nouvelle clé générée lors de votre inscription au programme. Vous utiliserez la clé de téléchargement pour signer tous les futurs APK avant de les télécharger sur la Play Console.

Par conséquent, si vous acceptez la fonctionnalité de signature d'application lors de la publication d'application, vous devez fournir sur Google Console la clé SHA-1 de la clé de signature d'application de Google au lieu de la clé Votre certificat téléchargé. Il suffit donc de le changer avec App Signing SHA-1 Certificate.

Vous pouvez trouver le certificat de signature d’application SHA-1 clé dans les onglets ci-dessous.

Console de développement Google Play> Tableau de bord> Gestion des versions> Signature de l’application .

6
Krrish

C’est le problème de la clé SHA1. Vérifiez votre empreinte digitale de la console Google SHA1 qui est dans release.

Un certificat de débogage : Les outils du SDK Android génèrent ce certificat automatiquement lorsque vous créez un débogage. Utilisez ce certificat uniquement avec les applications que vous testez. Ne tentez pas de publier une application signée avec un certificat de débogage. Le certificat de débogage est décrit plus en détail dans la section Signature en mode débogage de la documentation pour les développeurs Android.

Un certificat de version: Les outils du SDK Android génèrent ce certificat lorsque vous créez une version. Vous pouvez également générer ce certificat à l'aide du programme keytool. Utilisez ce certificat lorsque vous êtes prêt à lancer votre application dans le monde.

Pour plus de détails, reportez-vous à Obtenir la clé API et l'empreinte SHA-1 de l'application

0
sasikumar