"Не найден приемлемый модуль" на эмуляторах Android с использованием com.гуглить.андроид.GMS play-услуги 9.2.0

Я недавно обновился до com.гуглить.андроид.gms: play-services 9.2.0 и я пытаюсь использовать новую библиотеку Chromecast и Firebase Analytics, но получаю ошибку " com.гуглить.андроид.СБМ.внутренний.zzsj$zza: не найден приемлемый модуль. Локальная версия равна 0, а удаленная - 0."в методе onCreate активности на com.гуглить.андроид.СБМ.бросать.рамки.CastContext.(неизвестный источник.) Любые идеи, если это связано с функциональностью 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);
}

спасибо

4 ответов


версия 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 Services, и нажав на него, чтобы получить информацию о приложении.

вы можете получить номер версии GPS из кода, позвонив GoogleApiAvalability.GOOGLE_PLAY_SERVICES_VERSION_CODE.

ответ содержит некоторую связанную информацию о версиях эмулятора.

обновление для вопросов Адриана Крету относительно реальных устройств

мои эксперименты показывают, что для приложения 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 Store открывается, и пользователь может инициировать загрузку последней версии.

Я не смог найти способ, чтобы полностью вернуться к VideoBrowserActivity. Мне пришлось перезапустить приложение. С большей работой, я думаю, что чистое восстановление от устаревших игровых сервисов возможно. По крайней мере что-то лучше, чем сбой приложения.


этот сбой также происходит на реальных устройствах с не обновленным GPS. Я использую Google Cast SDK v3 и GPS 9.2.0

я нигде не видел, что устройство на самом деле требует GPS 9.2.0 для того, чтобы Cast v3 работал. Каков обходной путь или, по крайней мере, решение для приложения не сбой при запуске?


удалите эмулятор и в диспетчере SDK удалите платформу SDK, на которой был построен этот эмулятор.

затем повторно загрузите эту платформу SDK и заново создайте свой эмулятор.

Почему?

Если были обновления для служб Google Play, так как вы загрузили указанную платформу SDK и построили этот эмулятор, устаревшая версия служб Google Play, вероятно, все еще находится в сборке этой платформы SDK.

Это сожгло 2 часа моего жизнь.


когда я обновил google play developer services app, я смог его решить.