KDE Android News: October 2024
Hier ist ein Überblick über die jüngste Arbeit rund um die Android-Plattform-Unterstützung für KDE Frameworks und KDE-Anwendungen, die größtenteils ein direktes Ergebnis der Diskussionen und der Arbeit auf der Akademy und der Matrix-Konferenz ist. Eine Übersetzung von 🇬🇧 volkerkrause.eu.
Korrekturen der Benachrichtigungsberechtigung
Bei der Portierung von Itinerary und NeoChat auf die Nutzung der KNotification Permission API wurden zwei Probleme im Zusammenhang mit Permission Checks und Callbacks bei Permission Changes festgestellt, die dazu führten, dass die Anwendung den falschen Permission-Status sah. Das ist jetzt behoben.
Ausmusterung der Qt 5 CI
Mit der Version 24.08 von KDE Gear basieren alle unsere Android-Apps auf Qt 6, einschließlich ihrer stabilen Release-Zweige. Wir haben daher damit begonnen, die Android Qt 5 CI/CD-Infrastruktur in den Ruhestand zu versetzen, was uns sowohl Wartungs- als auch Rechenressourcen ersparen sollte.
Da Qt 5 mittlerweile mehreren Android-SDK-Versionen hinterherhinkt, ist es ohnehin keine brauchbare Plattform mehr für die Erstellung von APKs, die auf aktuellen Geräten funktionieren.
Android CI wurde inzwischen aus den Wartungszweigen von KDE Frameworks 5 sowie aus einigen anderen Bibliotheken, die es noch verwendeten, entfernt. Die Entfernung von Gitlab CI Templates, Craft Caches und Container Images wird folgen.
Dies bedeutet insbesondere, dass das Container-Image invent-registry.kde.org/sysadmin/ci-images/android-qt515 veraltet ist und irgendwann entfernt werden wird. Bitte kontaktieren Sie uns, wenn Sie dieses Bild noch extern verwenden. Poppler's CI war zum Beispiel so ein Fall.
QML-Datei-Installation
Die QML-Modulmakros in ECM installierten QML-Dateien auf der Festplatte und bündelten diese auch über das Qt-Ressourcensystem. Während dies auf den meisten Plattformen aufgrund eines bestimmten Codes in Kirigami immer noch erforderlich ist, ist es auf Android, wo wir uns ausschließlich auf die gebündelten Daten verlassen, unnötig.
Dies führte zu unnötigem Inhalt in den APKs, was nun behoben wurde und alle unsere APKs etwas kleiner macht.
Reihenfolge des Nachschlagens von Übersetzungen
Die wahrscheinlich auffälligste Änderung ist der Fix eines seit langem bestehenden Fehlers in der mehrsprachigen Fallback-Lookup-Reihenfolge von KI18n, der dazu führte, dass Anwendungen unter bestimmten Bedingungen eine wilde Mischung von Sprachen anzeigten.
Dies geschah, wenn die primäre Gerätesprache auf Englisch eingestellt war, das Land jedoch auf etwas anderes als die USA oder das Vereinigte Königreich und eine oder mehrere sekundäre Sprachen ebenfalls ausgewählt waren. Das Problem ist zwar nicht ausschließlich auf Android beschränkt, aber es gibt zwei Faktoren, die es dort besonders häufig auftreten lassen:
- Bei neueren Android-Versionen können Sprache und Land völlig unabhängig voneinander eingestellt werden, während auf vielen anderen Systemen nur bestimmte vordefinierte Kombinationen verfügbar sind.
- Die Spracheinstellung wirkt sich nicht nur auf die Übersetzung von Anwendungen aus, sondern auch auf die Texteingabe, so dass viel mehr Benutzer mehrere Sprachen konfiguriert haben.
KI18n sucht zunächst nach einer Übersetzung für das spezifische Sprach-/Länderpaar und dann nur die Sprache, bevor es auf das nächste konfigurierte Sprach-/Länderpaar zurückgreift. Wenn keine Übersetzung gefunden wird, wird schließlich der englische/amerikanische Ausgangstext verwendet.
Konzeptionell ist dies nicht falsch, aber bei der Implementierung wurde übersehen, dass es keine „länderlose“ englische Übersetzung gibt, sondern nur den englischen/amerikanischen Ausgangstext. Eine Konfiguration von Englisch/Kanada und Französisch/Kanada führte daher bisher zu einer französischen Übersetzung und nicht zu einer englischen, wie es jetzt der Fall ist.
Dies wurde zurückportiert und sollte spätestens mit 24.08.2 in allen unseren APKs verfügbar sein.
Wechsel der Laufzeitsprache
Dank des Inputs von Fabian während der Akademy gibt es auch erhebliche Fortschritte bei der Reaktion von Anwendungen auf Änderungen der Systemsprache zur Laufzeit.
Dies besteht im Wesentlichen aus drei Teilen:
- Weitergabe der nativen Android-Systemkonfigurationsänderung an Qt, durchgeführt in Qt CR 596175.
- Zurücksetzen von zwischengespeicherten Werten innerhalb von KI18n bei Änderungen der Systemsprache, durchgeführt in KI18n MR 124.
Auslösen der QML-Bindungs-Neubewertung für i18n()-Aufrufe bei Sprachänderungen, implementiert in KI18n MR 127.
Mit diesen drei Änderungen und ein paar Zeilen, die im Anwendungscode angepasst wurden, um dies zu nutzen, folgen große Teile der Benutzeroberfläche bereits automatisch den Änderungen der Systemsprache.
Es ist bei weitem noch nicht perfekt, da in diesem Fall mehr Dinge aktualisiert werden müssen als nur übersetzte Strings. Die Datums-/Zeitformatierung zum Beispiel, wie in QTBUG-129727 besprochen. Aber insgesamt ist das schon viel besser als das, was ich erwartet hatte und von dem ich annahm, dass es mit realistischem Aufwand machbar wäre.
Unterstützung des Dark Mode
Wie bereits berichtet, haben wir seit 24.08.1 dank Julius' Arbeit an der Neueinfärbung von Symbolen eine funktionierende Unterstützung für den dunklen Modus.
Bislang waren nur minimale Änderungen an den Anwendungen erforderlich, um sie zu aktivieren. Das wurde nun ebenfalls behoben, die Unterstützung für den dunklen Modus ist nun automatisch für alle Anwendungen aktiviert, die den Breeze-Stil verwenden.
Ausblick
Bei der Integration der Android-Plattform gibt es noch viel zu tun. Ich würde sagen, die zwei wahrscheinlich dringlichsten Probleme sind die folgenden:
- Auf einigen Geräten ist die Schriftgröße ungewöhnlich klein, was durch einen falschen Skalierungsfaktor verursacht wird. Basierend auf einigen Untersuchungen während der Akademy ist die derzeitige Arbeitstheorie, dass es sich um eine Race Condition im Qt-Code handelt, der diese Informationen ausliest. Ich habe leider kein Gerät/Setup, das dieses Problem reproduziert.
Die Auswahl von Dateien im Dateidialog der Plattform, die sich in einem Cloud-Speicher wie Nextcloud befinden, schlägt fehl. Das heißt, für die Anwendung sieht die Auswahl einer solchen Datei so aus, als ob der Benutzer den Dialog abgebrochen hätte. Hier wissen wir genau, warum das passiert (es ist expliziter Code in Qt, der das tut, aus triftigen Gründen), die Herausforderung besteht eher darin, eine geeignete Lösung zu finden.
Wenn Sie sich für die Android-Integration von KDE-Anwendungen interessieren, können Sie sich uns gerne im #kde-android Matrix-Kanal anschließen!
Ein Service von 🧩 s3n·net
Comments