web-dev-qa-db-fra.com

"Aucun module acceptable trouvé" sur les émulateurs Android utilisant com.google.Android.gms play-services 9.2.0

J'ai récemment mis à jour la version com.google.Android.gms: play-services 9.2.0 et je tente d'utiliser la nouvelle bibliothèque Chromecast et Firebase Analytics, mais je reçois le message d'erreur "com.google.Android.gms.internal.zzsj $ zza : Aucun module acceptable trouvé. La version locale est 0 et la version distante est 0. " dans la méthode Activity onCreate à l'adresse com.google.Android.gms.cast.framework.CastContext. (Source inconnue). Des idées si cela est dû à la fonctionnalité Cast ne fonctionne pas avec les émulateurs ou s'il s'agit d'un problème de version? Les émulateurs avec lesquels je teste fonctionnent sous 5.0 et 5.1. 

    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    FirebaseAnalytics mFirebaseAnalytics = FirebaseAnalytics.getInstance(this);
    setupCastListener();
    mCastContext = CastContext.getSharedInstance(this);
    mCastSession = mCastContext.getSessionManager().getCurrentCastSession();
    mCastContext.getSessionManager().addSessionManagerListener(mSessionManagerListener, CastSession.class);
    mFirebaseAnalytics = FirebaseAnalytics.getInstance(this);
}

Merci

8
Jaz

La version de Play Services sur votre émulateur ne prend pas en charge la version 9.2.0. Pour le moment, je ne pense pas que les images d'émulateur prennent en charge la version 9.2.0. Vos options sont de passer à la version 9.0.2 ou de s'exécuter sur un périphérique réel jusqu'à la publication d'une image d'émulateur mise à jour.

Si vous regardez attentivement la sortie de votre logcat, vous devriez voir un message comme celui-ci:

W/GooglePlayServicesUtil: Google Play services out of date.  Requires 9256000 but found 9080030

Pour connaître le numéro de version du GPS utilisé par l'émulateur, accédez à Paramètres/Applications, recherchez Services Google Play, puis appuyez dessus pour obtenir les informations sur l'application.

Vous pouvez obtenir le numéro de version GPS à partir du code en appelant GoogleApiAvalability.GOOGLE_PLAY_SERVICES_VERSION_CODE .

Cette réponse contient des informations connexes sur les versions de l'émulateur.

Mise à jour des questions d'Adrian Cretu sur les appareils réels

Mes expériences indiquent qu’il est possible pour une application Cast exécutée sur un périphérique réel de détecter une version antérieure de Play Services et d’initier le traitement de la résolution. J'ai expérimenté avec CastVideos exemple d'application. Ma solution peut ne pas être la meilleure, mais démontre le concept. J'ai créé une nouvelle activité qui s'exécute au lancement et vérifie la disponibilité des services de lecture. J'ai modifié le manifeste pour faire de cette activité l'activité de lanceur au lieu de VideoBrowserActivity:

public class InitActivity extends AppCompatActivity {
    private static final String TAG = "InitActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        GoogleApiAvailability googAvail = GoogleApiAvailability.getInstance();

        int status = googAvail.isGooglePlayServicesAvailable(this);
        Log.i(TAG, "onCreate: Status= " + googAvail.getErrorString(status));

        googAvail.makeGooglePlayServicesAvailable(this)
                .addOnCompleteListener(new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                Log.i(TAG, "onComplete: Done");
                if (task.isSuccessful()) {
                    Log.i(TAG, "onComplete: Starting VideoBrowser");
                    startActivity(new Intent(InitActivity.this, VideoBrowserActivity.class));
                    finish();
                } else {
                    Log.e(TAG, "onComplete: RESOLUTION FAILED");
                }
            }
        });
    }
}

Si Play Services est présent, à jour et activé, la tâche qui vérifie la disponibilité se termine immédiatement et démarre VideoBrowserActivity, l'activité de lancement d'origine. Sinon, une boîte de dialogue s'affiche pour indiquer à l'utilisateur que Play Services doit être mis à niveau. Après l'acceptation de l'utilisateur, le Play Store est ouvert et l'utilisateur peut lancer un téléchargement de la version la plus récente.

Je suis incapable de trouver un moyen de revenir proprement à la VideoBrowserActivity. Je devais redémarrer l'application. Avec plus de travail, je pense qu’une récupération nette de services de jeu obsolètes est possible. Au moins quelque chose de mieux qu'un crash d'application.

9
Bob Snyder

Cet accident se produit également sur de vrais appareils avec un GPS non mis à jour. J'utilise Google Cast SDK v3 et GPS 9.2.0

Je n'ai vu nulle part ailleurs que l'appareil nécessite le GPS 9.2.0 pour que Cast v3 fonctionne. Quelle est la solution de contournement ou au moins une solution pour que l'application ne se bloque pas au démarrage?

1
Adrian Crețu

Supprimez l'émulateur et, dans le gestionnaire de SDK, supprimez la plate-forme SDK sur laquelle cet émulateur a été construit.

Ensuite, téléchargez à nouveau cette plate-forme SDK et reconstruisez votre émulateur.

Pourquoi?

Si des mises à jour des services Google Play ont été mises à jour depuis que vous avez téléchargé ladite plate-forme SDK et construit cet émulateur, l'ancienne version de Google Play Services se trouve probablement toujours dans la version de cette plate-forme.

Cela a brûlé 2 heures de ma vie.

0
dell116

Lorsque j'ai mis à jour l'application Google Play Developer Services , j'ai pu la résoudre.

0
Kentaro