Android 12-Begrüßungsbildschirmsymbol wird nicht angezeigt
Lesezeit: 9 Minuten
Ich sehe ein seltsames Problem mit einer neuen App, die ich starte. Ich verwende die neue Android 12-Begrüßungsbildschirm-API, um meinen Begrüßungsbildschirm zu erstellen, und folgte der Anleitung von Google dazu. Ich habe Core-Splashscreen in mein Projekt aufgenommen, um die Kompatibilität mit älteren Versionen des Android-Betriebssystems zu gewährleisten. Wenn ich die App ausführe, sehe ich den Begrüßungsbildschirm wie erwartet auf älteren Betriebssystemversionen wie API 30, aber wenn ich sie auf API 31 ausführe, wird das von mir bereitgestellte Begrüßungsbildschirmsymbol nicht angezeigt. Die von mir angegebene Hintergrundfarbe wird angezeigt, aber das Symbol ist überhaupt nicht vorhanden. Ich habe dies mit einem Drawable-Asset sowie einer Mipmap versucht und nichts funktioniert. Ich bin ratlos, da jedes Tutorial, das ich finde, die gleichen Schritte zeigt, denen ich gefolgt bin, und Screenshots ihrer funktionierenden Begrüßungsbildschirme, aber ich habe kein Glück.
Als Kontext hier meine Splash-Screen-Style-Definition für v31:
Ich habe einen identischen Stil für alle anderen Betriebssystemversionen, außer dass ich “windowSplashScreenAnimatedIcon” anstelle von “android:windowSplashScreenAnimatedIcon” verwende. Ich habe v31 mit und ohne “android:” vor den Artikelnamen ausprobiert und beides funktioniert nicht. Hier ist meine MainActivity.kt:
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
installSplashScreen()
setContent {
MyVeevaTheme {
Login()
}
}
}
Ich setze auch die Eigenschaft „android:theme“ auf meinen Splash-Stil in meiner AndroidManifest.xml. Ich weiß, dass der Splash-Stil angewendet wird, weil er die Hintergrundfarbe berücksichtigt, aber das Symbol wird aus irgendeinem Grund nicht angezeigt, obwohl das Symbol für ältere Betriebssystemversionen gut angezeigt wird. Vielen Dank im Voraus für jede Hilfe, die Sie geben können.
Gleich, habe gerade die neue Splash-Screen-API auf einem Android 12-Emulator ausprobiert, aber schade, dass das Symbol nicht angezeigt wird, egal ob ich das “android:windowSplashScreenAnimatedIcon” setze oder nicht, aber das “android:windowSplashScreenBackground” funktioniert aber. Sollten wir es als Fehler betrachten? Die API ist meiner Meinung nach nicht sehr freundlich für ältere Versionen von Android-Geräten.
– ja
3. November 2021 um 3:31 Uhr
Ja, ich denke, ich werde versuchen, einen Fehler bei Google zu melden und zu sehen, was sie sagen.
– Joseph Hawkes-Cates
3. November 2021 um 18:59 Uhr
Nun, ich habe herausgefunden, wie ich es anzeigen kann. Ich folgte dieses Tutorial um ein Basisprojekt einzurichten, um das Problem zu reproduzieren, und mir ist die Notiz aufgefallen, die der Autor ganz unten platziert hat, in der erwähnt wird, dass das bloße Ausführen der App den Begrüßungsbildschirm nicht anzeigt. Sie müssen es beenden und die App aus dem App-Tray öffnen. Sobald ich das getan habe, konnte ich meinen Begrüßungsbildschirm sehen. Ärgerlich, aber zumindest habe ich jetzt eine Möglichkeit, es zu testen.
– Joseph Hawkes-Cates
3. November 2021 um 19:29 Uhr
Ich habe den Fehlerbericht protokolliert, da dies verwirrend ist, aber mit meinem letzten Kommentar habe ich jetzt eine Möglichkeit, dies zu testen. Hier ist der Fehlerbericht, falls es jemanden interessiert: issuetracker.google.com/issues/205021357.
– Joseph Hawkes-Cates
3. November 2021 um 20:01 Uhr
Da ich das gleiche Problem habe, scheint Google noch nicht dazu gekommen zu sein, es zu untersuchen. Hoffentlich bald.
– AndroidDev123
28. Dezember 2021 um 19:07 Uhr
Joseph Hawkes-Cates
TL;DR Beenden Sie die App und führen Sie sie über den Launcher aus. Das Symbol wird nicht angezeigt, wenn Sie von Android Studio aus ausgeführt werden.
Ich füge meinen Kommentar hier als Antwort zur besseren Sichtbarkeit hinzu.
Ich habe herausgefunden, wie ich es anzeigen kann. Ich folgte dieses Tutorial um ein Basisprojekt einzurichten, um das Problem zu reproduzieren, und ich bemerkte die Notiz des Autors ganz unten, in der erwähnt wird, dass das bloße Ausführen der App nicht den vollständigen Begrüßungsbildschirm anzeigt. Sie müssen es töten und die App über den Launcher öffnen. Sobald ich das getan habe, konnte ich meinen Begrüßungsbildschirm sehen. Ärgerlich, aber zumindest habe ich jetzt eine Möglichkeit, es zu testen. Ich habe weitergemacht und mich angemeldet Fehlerbericht auch dafür, aber ich habe vorerst eine Lösung. Danke für alle Antworten/Kommentare!
Dieses Problem machte mich wahnsinnig. Ich habe Googles Leitfaden zur Migration und die anderen Dokumente zur SplashScreen-API befolgt. Aber auf meinem Pixel verwende ich Nova Launcher als Desktop und Sie werden nie das Symbol / die Bilder auf dem Begrüßungsbildschirm sehen, wenn Sie die App über eine Verknüpfung oder die Schublade starten, wenn Sie Nova Launcher verwenden. Und immer noch dasselbe beim Start mit Android Studio. Ich habe das Symbol/die Bilder nur auf dem Begrüßungsbildschirm angezeigt, als ich die App mit dem Pixel Launcher gestartet habe. So schlecht gemacht.
– Gimberg
18. Januar um 13:29 Uhr
Meine Güte, Android. Immer für eine Überraschung gut. Sieht so aus, als wäre es immer noch fehlerhaft (naja, die Bibliothek ist Beta, also keine Überraschung – sie wird jedoch bereits für API-Level 31 erzwungen). Danke Joseph für die Problemumgehung, das hat mir schon viel Zeit gespart! Ich kann jedoch nicht auf den Fehlerbericht zugreifen, ist der Link korrekt? Und das Problem mit dem anderen Launcher, wie von @Gimberg erwähnt, ist auch sehr ärgerlich.
– Luzian
28. Januar um 17:42 Uhr
@AndrewS, ja, ich bin neu bei Android, also immer noch die richtige Terminologie. Aus Gründen der Übersichtlichkeit wurde es auf Launcher anstelle von App Tray umgestellt.
– Joseph Hawkes-Cates
6. Februar um 2:09 Uhr
@Luzian, ich habe bis zum 25. Januar E-Mail-Updates für diesen Fehlerbericht erhalten. Mir wird auch der Zugriff verweigert, wenn ich es jetzt besuche, also bin ich mir nicht sicher, was dort oben ist.
– Joseph Hawkes-Cates
6. Februar um 2:15
Ich habe einen anderen Bericht gefunden, der von jemand anderem protokolliert wurde, und es scheint, als würde Google dies als beabsichtigtes Verhalten markieren … Link als Referenz: issuetracker.google.com/199776339
– Joseph Hawkes-Cates
6. Februar um 2:23
Wadim Caen
Wenn Sie die AndroidX SplashScreen-Bibliothek verwenden, wie Sie es tun (Theme.SplashScreen) müssen Sie die verwenden windowSplashScreen* Attribute ohne die android: Präfix.
Das android: Präfix wird verwendet, um die Plattformattribute aufzurufen, aber in diesem Fall verwenden Sie die Bibliothek und nicht die Plattform, sodass das Präfix nicht erforderlich ist:
Das ist richtig, aber beachten Sie trotzdem, dass andere gesagt haben: Die Bibliothek ist in Alpha, also ist sie ein bisschen instabil. In den meisten Fällen funktioniert es wie erwartet, aber ich habe festgestellt, dass das Symbol nicht angezeigt wird, wenn ich die bereits geöffnete App installiere, wenn ich sie öffne. Außerdem konnte ich das Symbol für API unter 23 nicht zum Laufen bringen. Es funktioniert gut ab API 23 und höher. Aus den Versionshinweisen geht hervor, dass das erwartet wurde: developer.android.com/jetpack/androidx/releases/…
– geht zurück
3. November 2021 um 15:19 Uhr
Okay, das macht Sinn. Ich habe es sowohl mit als auch ohne das Präfix „android:“ versucht und es funktioniert auf API 31 so oder so nicht. Es funktioniert jedoch gut auf API 30. Ich bin ein wenig überrascht, dass es sich um diese Art von Problem handelt, da die Funktion neu ist und für API 31 entwickelt wurde. Dies ist also der letzte Ort, an dem ich mit Problemen gerechnet habe.
– Joseph Hawkes-Cates
3. November 2021 um 18:58 Uhr
Vadim, erläutere bitte genau, wo wir das verwenden werden. Benennen Sie die Ressourcendatei, das Manifest oder etwas anderes, wo dies hingehört. Wie geschrieben ist dies sehr unklar.
– Andreas S
25. Januar um 19:46 Uhr
Dies stand im Zusammenhang mit der OP-Antwort. Ich werde meiner Antwort einige Details hinzufügen
– Wadim Caen
27. Januar um 13:56 Uhr
Leute gemäß dem Dokument installSplashScreen() hätten vor super.onCreate() aufgerufen werden sollen
Das ist ein guter Fang. Es wäre schön, wenn sich diese Dokumentation direkt auf der installSplashScreen-Funktion statt auf SplashScreen-Klassenebene oder in diesem Handbuch befinden würde: developer.android.com/guide/topics/ui/splash-screen. Ich habe keinen Grund, direkt auf die SplashScreen-Klasse zu verweisen, es sei denn, ich mache eine anspruchsvollere Anpassung. Leider behebt das Verschieben des installSplashScreen-Aufrufs an die richtige Stelle dieses Problem immer noch nicht.
– Joseph Hawkes-Cates
17. Februar um 20:00 Uhr
Wenn man sich den Code ansieht, scheint es, als würden sie empfehlen, installSplashScreen vor super.onCreate() aufzurufen, da setContentView intern in super.onCreate() aufgerufen wird und das installSplashScreen-Dokument angibt, dass es vor setContentView aufgerufen werden muss. Anscheinend gilt dies nur, wenn Sie Ihre Aktivität mit einer Ansichts-ID initialisieren, anstatt die Ansicht manuell aufzublasen. Da ich Compose verwende, denke ich, solange es vor meinem setContent-Block aufgerufen wird, ist es in Ordnung. Es schadet aber definitiv nicht, es vor super.onCreate zu verschieben.
– Joseph Hawkes-Cates
17. Februar um 20:10 Uhr
Auch beim Navigieren über den Deeplink werden keine Icons angezeigt. Und es sieht so aus, als ob es mehr als nur das Symbol nicht anzeigt. Es hört auch auf, Code für aufzurufen setOnExitAnimation Lambda.
Die folgende Anleitung hat mir geholfen, Sie können diese ausprobieren. Bei der Arbeit mit der neuen Begrüßungsbildschirm-API müssen einige Dinge beachtet werden.
Stellen Sie sicher, dass Sie das Thema auch auf die MainActivity setzen. Für mich war das der Grund dafür, dass der Startbildschirm jetzt angezeigt wird. Sie müssen also das Thema sowohl in der Anwendung als auch in der MainActivity festlegen
Aus irgendeinem Grund wird das Symbol nicht angezeigt, wenn die App über Android Studio gestartet wird. Beenden Sie die App und starten Sie die App über das Menü. Dann erscheint das Symbol. Dies gilt, wenn Sie die Splash-API nicht verwenden: https://developer.android.com/develop/ui/views/launch/splash-screen/migrate
Diese Antwort wurde bereits vom OP bereitgestellt
– SimonC
5. September um 9:16
14317000cookie-checkAndroid 12-Begrüßungsbildschirmsymbol wird nicht angezeigtyes
Gleich, habe gerade die neue Splash-Screen-API auf einem Android 12-Emulator ausprobiert, aber schade, dass das Symbol nicht angezeigt wird, egal ob ich das “android:windowSplashScreenAnimatedIcon” setze oder nicht, aber das “android:windowSplashScreenBackground” funktioniert aber. Sollten wir es als Fehler betrachten? Die API ist meiner Meinung nach nicht sehr freundlich für ältere Versionen von Android-Geräten.
– ja
3. November 2021 um 3:31 Uhr
Ja, ich denke, ich werde versuchen, einen Fehler bei Google zu melden und zu sehen, was sie sagen.
– Joseph Hawkes-Cates
3. November 2021 um 18:59 Uhr
Nun, ich habe herausgefunden, wie ich es anzeigen kann. Ich folgte dieses Tutorial um ein Basisprojekt einzurichten, um das Problem zu reproduzieren, und mir ist die Notiz aufgefallen, die der Autor ganz unten platziert hat, in der erwähnt wird, dass das bloße Ausführen der App den Begrüßungsbildschirm nicht anzeigt. Sie müssen es beenden und die App aus dem App-Tray öffnen. Sobald ich das getan habe, konnte ich meinen Begrüßungsbildschirm sehen. Ärgerlich, aber zumindest habe ich jetzt eine Möglichkeit, es zu testen.
– Joseph Hawkes-Cates
3. November 2021 um 19:29 Uhr
Ich habe den Fehlerbericht protokolliert, da dies verwirrend ist, aber mit meinem letzten Kommentar habe ich jetzt eine Möglichkeit, dies zu testen. Hier ist der Fehlerbericht, falls es jemanden interessiert: issuetracker.google.com/issues/205021357.
– Joseph Hawkes-Cates
3. November 2021 um 20:01 Uhr
Da ich das gleiche Problem habe, scheint Google noch nicht dazu gekommen zu sein, es zu untersuchen. Hoffentlich bald.
– AndroidDev123
28. Dezember 2021 um 19:07 Uhr