我有一个应用程序与 Admob SDK 使用在它,显示间隙广告(全屏广告)。
最近 Google 更新了 SDK,还有很多其他的东西(构建工具、 gradle 插件、 IDE 等等)。.)包括 admob (火焰基地广告)。
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"/>
我说它可能不需要,因为我不能再在教程中看到它了,即使我记得我过去做过:
我试过移除载货清单,还是一样的问题。
我试图强行将主题设置为“@android: style/Theme. Translucent.NoTitleBar. Fullscreen”,但也没有用。
我甚至认为这可能是因为我现在使用的是 Android 8.1,但是当我尝试使用播放商店的应用程序时,我注意到它工作得很好,没有崩溃。
我试图回到11.2.2版本的 admob,并使用 gradle v2.3.3,但它也没有帮助。
在使用 Android 7.0的模拟器上进行测试时,所有东西的最新版本都能正常工作,清除了所有的清单活动标签。
我试图用这个来代替我使用的渐变文件:
编译‘ com.google.android.gms: play-services-ads: 11.4.2’
仍然在我的设备上崩溃(Nexus 5x 和 Android 8.1) ,但是没有在模拟器上崩溃。
最后,我尝试用 Android 8.1在模拟器上运行这个应用程序,结果它像在真正的设备上一样崩溃了。
报告给谷歌 Admob 团队,以及 Android 问题跟踪器。我希望他们会回答我这一点。
造成这个问题的原因是什么?
是因为 Android 8.1吗?如果是这样,为什么旧版本的应用程序运行良好?我试过把很多版本还原成旧的,但还是崩溃了。
最重要的是,我该怎么解决?