背景
我有一个使用了Admob SDK的应用,可以显示插页式广告(全屏广告)。
最近,Google已更新了SDK,以及许多其他东西(构建工具,gradle插件,IDE等),包括admob(firebase广告)。
compile 'com.google.firebase:firebase-ads:11.4.2'
问题
更新后,我注意到,只要该应用尝试展示插页式广告,它就会崩溃。
崩溃日志如下:
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,但是当我尝试从Play商店使用该应用程序时,我发现它运行良好,没有崩溃。
我尝试回到admob的11.2.2版本并使用gradle v 2.3.3,但这也没有帮助。
当尝试使用Android 7.0进行模拟器时,它可以与最新版本的一切正常工作,并且可以删除整个清单活动标签。
我试图在gradle文件中使用它,而不是我使用的:
编译'com.google.android.gms:play-services-ads:11.4.2'
仍然在我的设备(装有Android 8.1的Nexus 5x)上崩溃了,但在模拟器上却没有崩溃。
最终,我尝试在具有Android 8.1的模拟器上运行该应用程序,并且该应用程序崩溃了,就像在真实设备上一样。
向Google Admob小组以及Android问题跟踪器报告了此问题。我希望他们能就此回答我。
问题
造成此问题的原因可能是什么?
是因为Android 8.1吗?如果是这样,那么较旧版本的应用程序如何正常运行?我试图将许多版本恢复为旧版本,但仍然崩溃。
而且,最重要的是,我该如何解决?