Die Firma Google hat die Veröffentlichung der offenen mobilen Plattform Android 14 bekannt gegeben. Die mit dem neuen Release verbundenen Quelltexte sind im Git-Repository des Projekts (Branch android-14.0.0_r1) verfügbar. Firmware-Updates wurden für Geräte der Pixel-Serie vorbereitet. Später sind Firmware-Updates für Smartphones der Hersteller Samsung Galaxy, iQOO, Nothing, OnePlus, Oppo, Realme, Sharp, Sony, Tecno, vivo und Xiaomi geplant. Zusätzlich wurden universelle GSI-Builds (Generic System Images) erstellt, die für verschiedene Geräte auf ARM64- und x86_64-Architekturen geeignet sind.
Hauptneuheiten:
- Im Kern der Plattform wurde der Health Connect-Speicher integriert, der zuvor als separates Paket über den Google Play Store bereitgestellt wurde. Health Connect bietet eine zentrale Speicherung von Daten von Fitnessarmbändern und anderen gesundheitsbezogenen Geräten und organisiert den gemeinsamen Zugriff verschiedener Anwendungen auf Gesundheitsdaten. Der Zugriff auf die Einstellungen von Health Connect wird nun über den standardmäßigen Plattformkonfigurator bereitgestellt, beispielsweise können über die Datenschutzeinstellungen festgelegt werden, auf welche spezifischen Gesundheitsdaten bestimmte Anwendungen zugreifen können. Darüber hinaus wurde in Health Connect die Unterstützung für die Speicherung von Informationen über den während des Trainings zurückgelegten Verlauf hinzugefügt (der Benutzer legt den Zeitraum fest, für den eine Liste der Wegpunkte gespeichert wird). Der Verlauf kann auf einer Karte visualisiert und bei Bedarf nach ausdrücklicher Bestätigung durch den Benutzer zur Verarbeitung an andere Anwendungen übermittelt werden.

- Die Mittel zur Bestätigung des Zugriffs auf Standortinformationen wurden erweitert. In den Dialog mit der Anfrage zur Bestätigung des Standortzugriffs wurde ein neuer Abschnitt mit Informationen eingefügt, in dem erläutert wird, wann einer Anwendung Standortdaten übermittelt werden (kein Zugriff erlaubt, einmalig erlauben und bei jeder Anwendung erlauben) sowie Einzelheiten, wo weitere Informationen über den Zugriff auf die übermittelten Daten bereitgestellt werden können.

- Es wurde eine monatliche Benachrichtigung über Änderungen in den Anwendungen implementiert, denen der Zugriff auf den Standort gewährt wurde, bezüglich der Methoden zur Übermittlung von Daten an Dritte (z. B. wird angezeigt, wenn eine Anwendung beginnt, Standortdaten zur Anzeige von Werbung zu verwenden).

- Bei der Nutzung von Anwendungen gibt es jetzt einen deutlicheren Hinweis mit einem zurück gerichteten Pfeil, der zur Verbesserung des Verständnisses der Bildschirmgesten für die Rückwärtsnavigation dient.

- Im Sharesheet-Mechanismus, der zum Versenden von Daten (z.B. Bildern oder Links) außerhalb der Anwendung oder an einen anderen Benutzer verwendet wird, gibt es die Möglichkeit, eigene Aktionen hinzuzufügen. Zum Beispiel kann eine eigene Liste von ChooserAction-Handlern definiert werden, die Anwendungen und Benutzer anzeigen, an die gesendet werden kann. Darüber hinaus wurde das Spektrum der Signale erweitert, die zur Priorisierung der Ziele für die direkte Datenübertragung verwendet werden.

- Es wurde die Möglichkeit geschaffen, Teilrechte für den Zugriff nur auf die vom Benutzer ausgewählten Fotos und Videos (READ_MEDIA_VISUAL_USER_SELECTED) zu gewähren. Die Dateien, auf die Zugang gewährt wird, werden vom Benutzer über die Benutzeroberfläche des Photo Pickers während des Dialogs zur Berechtigungseingabe ausgewählt. Nach dem Wechsel der App in den Hintergrund oder dem Schließen des Programms wird das vom Benutzer gewährte Recht automatisch widerrufen. Im Dialog zur Bestätigung der Berechtigungen für Apps zum Zugriff auf Multimedia-Dateien besteht die Möglichkeit, den Zugriff nur auf die ausgewählten Fotos oder Videos zu gewähren.

- Der Konfigurator hat einen Abschnitt zur Überschreibung von regionalen Präferenzen hinzugefügt, wie z. B. Temperatureinheiten, den ersten Wochentag und das Zählsystem. Ein in den USA lebender Europäer kann beispielsweise einstellen, dass die Temperatur in Grad Celsius anstelle von Fahrenheit angezeigt wird und Montag als Wochenbeginn anstelle von Sonntag betrachtet wird.

- Die Skalierungsoptionen für Schriftarten wurden erweitert; die maximale Schriftgrad-Skalierung wurde von 130 % auf 200 % erhöht. Damit der Text bei starker Vergrößerung nicht zu groß wirkt, wird jetzt automatisch eine nichtlineare Skalierungsanpassung angewendet (bereits große Texte werden nicht so stark vergrößert wie kleine), was eine optimale Lesbarkeit für Menschen mit eingeschränktem Sehvermögen ermöglicht, ohne dass Verzerrungen im Layout der Benutzeroberfläche auftreten.

- Die letzte Unterstützungszeile für die Aufnahme von Videos mit hohem dynamischen Bereich (HDR) wurde um die Möglichkeit erweitert, zusätzliche Informationen von der Kamera zu erhalten, die die Speicherung von Bildern im «Ultra HDR»-Format ermöglicht, bei dem 10 Bit pro Kanal zur Kodierung der Farbigkeit verwendet werden. Das Ultra HDR-Format ist vollständig mit JPEG kompatibel, was es Anwendungen ermöglicht, ohne Änderungen mit HDR-Bildern zu arbeiten und, falls erforderlich, diese mit herkömmlichem Helligkeitsbereich anzuzeigen. Die Ausgabe im HDR-Modus wird automatisch durch die Plattform bereitgestellt, wenn der HDR-Support im Manifest der Anwendung aktiviert ist oder bei der Verwendung von Window.setColorMode. Für die separate Darstellung von Ultra HDR unter Verwendung von OpenGL oder Vulkan kann die Klasse Gainmap verwendet werden.

- Die Arten von Anwendungen, die Vollbildbenachrichtigungen beim Sperren des Bildschirms anzeigen dürfen, sind eingeschränkt. Solche Benachrichtigungen zielen darauf ab, die Aufmerksamkeit auf Informationen zu lenken, die sofortige Reaktionen erfordern, wie etwa das Eintreffen eines eingehenden Anrufs oder das Auslösen eines Alarms. Daher werden die Berechtigungen zur Anzeige solcher Benachrichtigungen jetzt auf Anwendungen für Telefonanrufe und Alarmanzeigen beschränkt.
- Die Steuerung der Animationen, die beim Wechsel zwischen verschiedenen Bildschirmen (Tabs) in der Anwendung durch eine wischende Geste angezeigt werden, wurde verbessert. Neue Komponenten wurden hinzugefügt, um die Animationen beim Wechseln zwischen unteren und seitlichen Bildschirmen sowie beim Aufruf der Suche darzustellen. Eine API wurde hinzugefügt, um eigene Übergangseffekte in der Anwendung zu erstellen.
- Das Set an Kameraerweiterungen (Camera Extensions) wurde aktualisiert, wobei die Möglichkeit bereitgestellt wird, rechenintensive Algorithmen zur Bildbearbeitung über längere Zeiträume zu verwenden, um die Qualität von Aufnahmen bei schwachem Licht zu verbessern. Funktionen zur Vorhersage von Verzögerungen bei der Bildbearbeitung, zur Anzeige des Verarbeitungsfortschritts und zum schnellen Erhalt einer Rohversion des Bildes vor der Fertigstellung des finalen Bildes wurden hinzugefügt. Ein optimierter und energieeffizienter Modus für die Vorschau von SurfaceView wurde implementiert. Während der Verwendung der Erweiterungen wird Unterstützung für Berührungen zur Fokussierung und Skalierung gewährleistet.
- Die Unterstützung für die in die Kamera integrierten Funktionen zum Skalieren und Zuschneiden von übertragene RAW-Bildern wurde bereitgestellt.
- Für kabelgebundene Kopfhörer, die über USB angeschlossen werden, wurde die Möglichkeit hinzugefügt, verlustfreie Audioformate (lossless) zu verwenden. In die API wurde die Klasse AudioMixerAttributes eingeführt, die es ermöglicht, den Sound direkt an das Gerät zu senden, ohne Mischen, Lautstärkekorrektur und Effektverarbeitung.
- In der grafischen API wurde die Klasse Mesh implementiert, die es ermöglicht, eigene Varianten von Polygon-Netzen mit Vertex- und Fragment-Shadern, die in AGSL geschrieben wurden, zu erstellen.
- Die Möglichkeit der hardwarebeschleunigten Rendering von Puffer wurde durch die Klasse HardwareBufferRenderer implementiert.
- Die Klasse Path, die die Erstellung von Vektorgrafiken aus zusammengesetzten geometrischen Konturen ermöglicht, hat die Unterstützung für die Interpolation zwischen Konturen ähnlicher Struktur hinzugefügt, um einen Morphing-Effekt zu erzeugen, sowie die Verwendung des Iterators PathIterator für die sequentielle Durchgang durch alle Segmente des Konturs.
- Die Möglichkeiten zur Bindung einzelner Spracheinstellungen an verschiedene Anwendungen wurden erweitert. Es besteht die Möglichkeit, eine Liste von Sprachen festzulegen, die im Android-Konfigurator angezeigt wird, wenn eine Sprache für eine bestimmte Anwendung ausgewählt wird.
- Die Bereiche, in denen das System mit Datenschutzinformationen zeigt, die vom Entwickler im Play Console-Formular festgelegt wurden, wie beispielsweise die Richtlinie zur Bereitstellung von Daten an Dritte, wurden erweitert. Solche Informationen werden jetzt beispielsweise im Dialog zur Anforderung von Berechtigungen angezeigt.
- In Anwendungen, die Handler verwenden, die im Hintergrund arbeiten, ist nun die Angabe des Typs des Hintergrunddienstes erforderlich. Während der Ausführung überprüft das System die Übereinstimmung des angegebenen Servicetyps, der angeforderten Berechtigungen und des verwendeten APIs. Wenn die Anwendung beispielsweise den Typ des Hintergrunddienstes FOREGROUND_SERVICE_TYPE_LOCATION angegeben hat, wird davon ausgegangen, dass Berechtigungen wie ACCESS_COARSE_LOCATION oder ACCESS_FINE_LOCATION angefordert werden können.
- Änderungen zur Verbesserung der Sicherheit wurden vorgenommen: Anwendungen dürfen keine Intent-Anfragen an bestimmte interne Komponenten der Plattform senden. Dynamisch ladbarer Code muss nun mit einem Lesezugriffsattribut versehen werden. In den Funktionen ZipFile(String) und ZipInputStream.getNextEntry() ist die Verarbeitung von ZIP-Archiven, deren Pfade mit dem Zeichen „/“ beginnen oder die die Sequenz „..“ enthalten, verboten. Die Ausführung von Tasks durch Hintergrund-Handler wurde eingeschränkt und die Beschränkungen für API-Aufrufe, die im SDK nicht bereitgestellt werden, wurden aktualisiert.
- Wenn ein Gerät über USB an einen Desktop-Computer angeschlossen wird, gibt es neben den zuvor verfügbaren Interaktionsmodi wie Dateitransfer, Laden, Internetfreigabe usw. jetzt die Möglichkeit, das Smartphone als Webcam zu verwenden (UVC-Modus, USB Video Class). Diese Funktion ist standardmäßig deaktiviert, kann jedoch bei Root-Zugriff aktiviert werden.
- Die Leistung der Plattform auf Tablets und Geräten mit faltbaren Bildschirmen wurde weiter verbessert. Bibliotheken zur Vorhersage von Ereignissen, die mit der Bewegung des Zeigers verbunden sind, wurden bereitgestellt, und es wurden niedrige Latenzen bei der Verwendung von Stiften sichergestellt. Es wurden Schnittstellenvorlagen für große Bildschirme bereitgestellt, die Anwendungen wie soziale Netzwerke, Kommunikation, Multimedia-Inhalte und das Lesen sowie der Einkauf berücksichtigen.
- Eine separate Berechtigung wurde hinzugefügt, um Anwendungen die Möglichkeit zu geben, Aktionen im Hintergrund auszuführen. Die Aktivierung im Hintergrund ist eingeschränkt, um den Benutzer während der Arbeit mit der aktuellen Anwendung nicht abzulenken. Aktiven Anwendungen wurde mehr Kontrolle über die Aktivierung von Aktionen durch andere Anwendungen, mit denen sie interagieren, gewährt.
- Das Speichermanagementsystem wurde optimiert, um den Anwendungen, die im Hintergrund ausgeführt werden, effizientere Ressourcen zuzuweisen. Einige Sekunden nach der Umstellung der Anwendungen in den zwischengespeicherten Zustand wird die Hintergrundarbeit auf API-Interaktionen beschränkt, die den Lebenszyklus der Anwendung steuern, wie z.B. API Foreground Services, JobScheduler und WorkManager.
- Benachrichtigungen, die mit dem FLAG_ONGOING_EVENT-Flag versehen sind, können jetzt auf Geräten mit entsperrtem Bildschirm abgelehnt werden. Wenn das Gerät sich im Sperrbildschirm-Modus befindet, bleiben solche Benachrichtigungen jedoch nicht ablehnbar. Auch Benachrichtigungen, die für die Funktionalität des Systems wichtig sind, bleiben nicht ablehnbar.
- Im PackageInstaller-API wurden neue Methoden hinzugefügt: requestUserPreapproval(), die es dem Anwendungsmanager ermöglicht, den Download von APK-Paketen bis zum Erhalt der Installationsbestätigung durch den Benutzer zu verzögern; setRequestUpdateOwnership(), die es ermöglicht, dem Installer zukünftige Aktualisierungsoperationen zuzuweisen; und setDontKillApp(), die zusätzliche Möglichkeiten für die Anwendung während der Abarbeitung bietet. Im InstallConstraints-API haben Installer die Möglichkeit, die Installation von Anwendungsupdates zu aktivieren, wenn die Anwendung nicht verwendet wird.
- Die Arbeit zur Verbesserung der Plattform auf Tablets und Geräten mit faltbaren Bildschirmen wurde fortgesetzt. Die Empfehlungen zur Anwendungsentwicklung für Geräte mit großen Bildschirmen wurden aktualisiert und neue Standard-Interface-Vorlagen für große Bildschirme hinzugefügt, die Anwendungen wie soziale Netzwerke, Kommunikation, Multimedia-Inhalte, Lesen und Einkaufen berücksichtigen. Eine vorläufige Version des Cross Device SDK mit Werkzeugen zur Entwicklung von Anwendungen, die korrekt mit verschiedenen Gerätetypen (Smartphones, Tablets, Smart-TVs usw.) und unterschiedlichen Formfaktoren arbeiten, wurde vorgeschlagen.
- Die Optimierung der Koordination bei ressourcenintensiven Hintergrundarbeiten wie dem Upload großer Dateien über eine WLAN-Verbindung wurde durchgeführt. Änderungen am API für das Starten priorisierter Dienste (Foreground Service) und das Planen von Aufgaben (JobScheduler) wurden vorgenommen, wobei neue Funktionen für vom Benutzer gestartete Arbeiten im Bereich der Datenübertragung hinzugefügt wurden. Es wurden Anforderungen zur Angabe des Typs der gestarteten priorisierten Dienste eingeführt (Arbeiten mit der Kamera, Datensynchronisation, Multimedia-Wiedergabe, Standortverfolgung, Mikrofonzugang usw.). Die Bedingungen zur Aktivierung des Daten-Uploads wurden vereinfacht, beispielsweise für den Upload nur bei Zugang über WLAN.
- Das interne System zur Bereitstellung von Broadcast-Nachrichten an Anwendungen wurde optimiert, um den Energieverbrauch zu senken und die Reaktionsfähigkeit zu erhöhen. Die Annahme von registrierten Nachrichtenströmen durch Anwendungen wurde verbessert – Nachrichten können in eine Warteschlange gestellt, zusammengefasst (zum Beispiel wird eine Serie von BATTERY_CHANGED-Nachrichten in eine einzige aggregiert) und nur nach Verlassen des Cache-Zustands der Anwendung geliefert werden.
- Das Limit für die maximale Anzahl an zwischengespeicherten Anwendungen wurde erhöht, was es ermöglicht hat, die Anzahl der Anwendungen, die im "kalten" Modus (d.h. nicht im Speicher zwischengespeichert und langsamer gestartet) gestartet werden, zu reduzieren. Bei Geräten mit 8 GB RAM wurde die Anzahl der "kalten" Anwendungsstarts nach der Anpassung der Einschränkungen um 20% gesenkt, und bei Geräten mit 12 GB um 30%.
- Die Verwendung der Funktion zur Durchführung von Operationen zu exakten Zeiten (exact alarms) in Anwendungen erfordert nun die Erteilung einer separaten Berechtigung SCHEDULE_EXACT_ALARM, da die Nutzung dieser Funktionalität negative Auswirkungen auf die Akkulaufzeit haben und zu einem erhöhten Ressourcenverbrauch führen kann (für zeitgesteuerte Aufgaben wird empfohlen, die Aktivierung zu einer ungefähren Zeit zu verwenden). Anwendungen mit Kalender- und Uhrimplementierungen, die eine Aktivierung zur exakten Zeit nutzen, müssen bei der Installation die Berechtigung USE_EXACT_ALARM erhalten. Veröffentlichungen im Google Play Katalog von Anwendungen mit der Berechtigung USE_EXACT_ALARM sind nur für Programme mit Wecker-, Timer- und Kalenderimplementierungen mit Ereignisbenachrichtigungen zulässig.
- Es wurde die Möglichkeit eingeführt, Spracheinstellungen zu definieren, die an einzelne Anwendungen gebunden sind. Der Entwickler der Anwendung kann nun die localeConfig-Parameter über den Aufruf von LocaleManager.setOverrideLocaleConfig ändern, um die Liste der Sprachanzeigen für die Anwendung im Android-Einstellungsinterface festzulegen.
- Die API für grammatikalische Flexion wurde hinzugefügt, um die Hinzufügung von Übersetzungen von UI-Elementen zu erleichtern, die Sprachen mit einem Geschlechtssystem berücksichtigen.
- Um das Abfangen von intent-Anfragen durch bösartige Anwendungen zu verhindern, ist in der neuen Version das Versenden von intents ohne explizite Angabe eines Pakets oder internen Components verboten.
- Die Sicherheit des dynamischen Code-Ladens (DCL, Dynamic Code Loading) wurde erhöht — um die Einspeisung von bösartigem Code in dynamisch geladene ausführbare Dateien zu verhindern, müssen diese Dateien nun Berechtigungen haben, die nur Lesezugriff erlauben.
- Die Installation von Anwendungen, die eine SDK-Version unter 23 angeben, ist untersagt. Dies ermöglicht die Blockierung des Umgehens von Berechtigungsbeschränkungen durch die Bindung an alte APIs (API-Version 22 ist verboten, da in Version 23 (Android 6.0) ein neues Zugriffssteuerungsmodell eingeführt wurde, das es ermöglicht, den Zugriff auf Systemressourcen dynamisch anzufordern). Bereits installierte Anwendungen, die alte APIs verwenden, werden nach dem Update auf Android weiterhin funktionieren.
- Ein API Credential Manager wurde vorgeschlagen, der das Einloggen in Anwendungen mit Anmeldeinformationen externer Authentifizierungsanbieter ermöglicht. Die Unterstützung für Passkeys wurde implementiert, wodurch Benutzer sich ohne Passwörter mit biometrischen Identifikatoren wie Fingerabdruck oder Gesichtserkennung authentifizieren können. Die Benutzeroberfläche zur Auswahl des Benutzerkontos wurde verbessert.
- Die Unterstützung für OpenJDK 17 wurde in Android Runtime (ART) implementiert. Die grundlegenden Java-Bibliotheken der Plattform und die Entwicklungstools wurden auf OpenJDK 17 aktualisiert. Die Unterstützung für die in OpenJDK 17 verfügbaren Sprachfeatures und Java-Klassen, wie Record-Klassen, mehrzeilige Strings und die Pattern-Matching-Funktion im "instanceof"-Operator, wurde hinzugefügt.
- In Android Runtime wurden fortschrittlichere Komprimierungsmethoden eingesetzt, die es ermöglicht haben, die Dateigröße im Durchschnitt um 9,3 % zu reduzieren, ohne die Leistung zu beeinträchtigen.
- Die Methode zur Aktualisierung von Zertifikaten der Zertifizierungsstellen (CA) wurde geändert. Systemzertifikate werden nicht mehr an die Firmware gebunden, sondern werden in einem separaten Paket geliefert, das über den Google Play Store aktualisiert wird. Dieser Ansatz vereinfacht die Verwaltung aktueller Zertifikate und die Entfernung kompromittierter Zertifikate von Zertifizierungsstellen und verhindert, dass Gerätehersteller die Liste der Root-Zertifikate manipulieren. Der Aktualisierungsprozess wird unabhängig von Firmware-Updates. Andererseits erlaubt die neue Bereitstellungsmethode dem Benutzer nicht, Änderungen an den Systemzertifikaten vorzunehmen, selbst wenn er Root-Zugriff hat und die Firmware vollständig kontrolliert.
Quelle: opennet.ru









