web-dev-qa-db-ja.com

Android com.google.Android.gms play-services 9.2.0を使用するエミュレータ)で「許容されるモジュールが見つかりません」

最近com.google.Android.gms:play-services 9.2.0に更新し、新しいChromecastライブラリとFirebase Analyticsを使用しようとしていますが、「com.google.Android.gms.internal.zzsj $ zza :受け入れ可能なモジュールが見つかりません。ローカルバージョンは0で、リモートバージョンは0です。」 com.google.Android.gms.cast.framework.CastContext。(Unknown Source)のActivity onCreateメソッド内。 Cast機能がエミュレーターと連携していないことが原因であるか、バージョンの問題である場合、何かアイデアはありますか?私がテストしているエミュレータは5.0と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);
}

ありがとう

10
Jaz

エミュレーターのPlay Servicesのバージョンは9.2.0をサポートしていません。現時点では、どのエミュレーターイメージも9.2.0をサポートしているとは思いません。オプションは、9.0.2にダウングレードするか、更新されたエミュレーターイメージがリリースされるまで実際のデバイスで実行することです。

Logcatの出力を注意深く見ると、次のようなメッセージが表示されます。

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

エミュレータが使用しているGPSのバージョン番号を確認するには、[設定/アプリ]に移動し、Google Play開発者サービスを見つけて、タップしてアプリ情報を取得します。

GoogleApiAvalability.GOOGLE_PLAY_SERVICES_VERSION_CODE を呼び出すと、コードからGPSバージョン番号を取得できます。

この回答 には、エミュレータのバージョンに関するいくつかの関連情報が含まれています。

実際のデバイスに関するAdrian Cretuの質問の更新

私の実験では、実際のデバイスで実行されているCastアプリが古いバージョンのPlay Servicesを検出し、解決処理を開始できる可能性があることを示しています。 CastVideos サンプルアプリを試してみました。私のソリューションは最適ではないかもしれませんが、コンセプトを示しています。起動時に実行され、Playサービスの可用性を確認する新しいアクティビティを作成しました。マニフェストを変更して、このアクティビティを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");
                }
            }
        });
    }
}

Play Servicesが存在し、最新で有効になっている場合、可用性を確認するタスクはすぐに完了し、元の起動アクティビティVideoBrowserActivityを開始します。それ以外の場合は、Playサービスをアップグレードする必要があることをユーザーに通知するダイアログが表示され、ユーザーが同意すると、Playストアが開き、ユーザーは最新バージョンのダウンロードを開始できます。

VideoBrowserActivityにクリーンに移行する方法を見つけることができませんでした。アプリを再起動する必要がありました。作業が増えると、古いPlayサービスからの完全な回復が可能になると思います。少なくともアプリのクラッシュよりも良いもの。

11
Bob Snyder

このクラッシュは、GPSがアップデートされていない実際のデバイスでも発生します。 Google Cast SDK v3とGPS 9.2.0を使用しています

Cast v3が機能するためには、デバイスが実際にGPS 9.2.0を必要とするという言及はどこにもありませんでした。起動時にクラッシュしないようにするための回避策または少なくともソリューションは何ですか?

1
Adrian Crețu

エミュレータを削除し、SDKマネージャで、そのエミュレータが構築されたSDKプラットフォームを削除します。

次に、そのSDKプラットフォームを再ダウンロードし、エミュレータを再構築します。

どうして?

上記のSDKプラットフォームをダウンロードしてそのエミュレーターをビルドした後でGoogle Play開発者サービスに更新があった場合、レガシーバージョンのGoogle PlayサービスはまだそのSDKプラットフォームのビルドに含まれています。

これは私の人生の2時間を燃やしました。

0
dell116

google play developer services app を更新したところ、解決できました。

0
Kentaro