Arrière-plan
J'ai une application avec SDK Admob utilisé pour afficher des annonces Interstitielles (publicités en plein écran).
Reccently Google a mis à jour le SDK, ainsi que beaucoup d'autres choses (outils de construction, plugin gradle, IDE, etc...), y compris admob (firebase annonces).
compile 'com.google.firebase:firebase-ads:11.4.2'
Le problème
Après la mise à jour, j'ai remarqué qu'à chaque fois que l'application tente de montrer un Interstitiel, il se bloque.
Le crash est comme suit:
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
C'est que ça marchait bien avant. Maintenant, je ne suis pas sûr de ce qu'il provoque à se produire.
La recherche sur le web, je ne vois rien qui parle de "Seulement fullscreen activités peuvent demander de l'orientation" .
Ce que j'avais dans le manifeste, est quelque chose d'un peu vieux, qui ne pourrait pas être plus nécessaire:
<activity
android:name="com.google.android.gms.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
android:theme="@android:style/Theme.Translucent"/>
Je dis que c'est probablement pas nécessaire, parce que je ne peux plus la voir dans les tutos, même si je m'en souviens je l'ai fait dans le passé:
- https://developers.google.com/admob/android/quick-start
- https://developers.google.com/admob/android/interstitial
Ce que j'ai essayé
J'ai essayé de supprimer l'entrée du manifeste. Toujours même problème.
J'ai essayé de définir le thème "@android:style/Thème.Translucide.NoTitleBar.Fullscreen" par la force, mais il n'a pas aidé.
J'ai même pensé qu'il pourrait être parce que j'ai actuellement Android 8.1, mais quand j'ai essayé d'utiliser l'application depuis le play store, j'ai remarqué qu'il a très bien fonctionné, sans se bloque.
J'ai essayé de retourner jusqu'à la version 11.2.2 de admob et l'utilisation gradle v 2.3.3 , mais il n'a pas aidé.
En essayant sur un émulateur Android avec la version 7.0 , il a bien fonctionné avec les dernières versions de tout, et le retrait de l'ensemble du manifeste de l'activité de la balise.
-
J'ai essayé de l'utiliser dans gradle fichier, au lieu de ce que j'ai utilisé :
compiler 'com.google.android.gms:jouer-services-petites annonces:11.4.2'
Encore s'est écrasé sur mon téléphone (Nexus 5 fois avec Android 8.1), mais de ne pas planter sur émulateur.
Enfin, j'ai essayé d'exécuter l'application sur l'émulateur Android avec 8.1, et il s'est écrasé juste que sur le périphérique réel.
Rapporté au sujet de ce à Google Admob de l'équipe, ainsi que Android bug tracker. J'espère qu'ils vont me répondre à ce sujet.
Les questions
Ce qui pourrait être la cause de ce problème?
C'est à cause de Android 8.1 ? Si oui, comment se fait l'ancienne version de l'application a bien fonctionné? J'ai essayé de revenir, il y a beaucoup de versions plus anciennes, mais encore, il s'est écrasé.
Et, plus important encore, comment puis-je le résoudre?