Фон
У меня есть приложение с SDK Admob, используемое в нем, чтобы показывать объявления межстраничного объявления (полноэкранные объявления).
Недавно Google обновил SDK вместе со многими другими вещами (инструменты сборки, плагин gradle, IDE и т.д.), включая admob (объявления firebase).
compile 'com.google.firebase:firebase-ads:11.4.2'
Проблема
После обновления я заметил, что всякий раз, когда приложение пытается показать объявление Interstitial, оно сбой.
Журнал сбоев таков:
10-28 14:01:01.394 4523-4523/... I/Ads: Ad opening.
10-28 14:01:01.400 1606-2154/? E/ActivityManager: Activity Manager Crash. UID:10080 PID:4523 TRANS:63
java.lang.IllegalStateException: Only fullscreen activities can request orientation
at com.android.server.am.ActivityRecord.setRequestedOrientation(ActivityRecord.java:2189)
at com.android.server.am.ActivityManagerService.setRequestedOrientation(ActivityManagerService.java:4975)
at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:1101)
at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2927)
at android.os.Binder.execTransact(Binder.java:697)
10-28 14:01:01.403 4523-4523/... D/AndroidRuntime: Shutting down VM
10-28 14:01:01.406 4523-4523/... E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{.../com.google.android.gms.ads.AdActivity}: java.lang.IllegalStateException: Only fullscreen activities can request orientation
Дело в том, что он работал отлично. Теперь я не уверен, что заставляет это произойти.
Поиск в Интернете, я не видел ничего, что говорит о том, что "Только полноэкранные действия могут запрашивать ориентацию".
То, что у меня было в манифесте, немного устарело, это может быть не нужно больше:
<activity
android:name="com.google.android.gms.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
android:theme="@android:style/Theme.Translucent"/>
Я говорю, что это, вероятно, не нужно, потому что я больше не вижу его в учебниках, хотя я помню, что делал это в прошлом:
- https://developers.google.com/admob/android/quick-start
- https://developers.google.com/admob/android/interstitial
Что я пробовал
-
Я попытался удалить запись манифеста. Еще одна проблема.
-
Я попытался установить тему "@android: style/Theme.Translucent.NoTitleBar.Fullscreen" с помощью силы, но она также не помогла.
-
Я даже подумал, что это может быть потому, что у меня в настоящее время есть Android 8.1, но когда я попытался использовать приложение из магазина воспроизведения, я заметил, что он работает нормально, без сбоев.
-
Я попытался вернуться к версии 11.2.2 admob и использовать gradle v 2.3.3, но это также не помогло.
-
При попытке эмулятора с Android 7.0 он отлично работал с последними версиями всего и удалением всего тега активности манифеста.
-
Я попытался использовать это в файле gradle вместо того, что я использовал:
compile 'com.google.android.gms: play-services-ads: 11.4.2'
Все еще разбился на моем устройстве (Nexus 5x с Android 8.1), но не сработал на эмуляторе.
-
Наконец, я попытался запустить приложение на эмуляторе с Android 8.1, и он разбился так же, как на реальном устройстве.
-
Сообщается об этом команде Google Admob, а также отслеживание проблем Android. Надеюсь, они ответят мне об этом.
Вопросы
Что может быть причиной этой проблемы?
Это из-за Android 8.1? Если да, то как пожилая версия приложения работает нормально? Я попытался вернуть туда много версий старым, но все равно разбился.
И, самое главное, как я могу его решить?