Google hat die Veröffentlichung der offenen mobilen Plattform Android 14 bekannt gegeben. Die zu diesem neuen Release gehörenden 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. Darüber hinaus wurden universelle GSI (Generic System Images) erstellt, die für verschiedene Geräte auf Basis der ARM64- und x86_64-Architekturen geeignet sind.
Hauptneuheiten:
- Der Kern der Plattform umfasst den Health Connect-Speicher, der zuvor als separates Paket über den Google Play Store bereitgestellt wurde. Health Connect ermöglicht die zentrale Speicherung von Daten von Fitnessarmbändern und anderen Geräten, die mit der Gesundheit des Nutzers in Verbindung stehen, und organisiert den gemeinsamen Zugriff verschiedener Anwendungen auf Gesundheitsdaten. Der Zugriff auf die Einstellungen von Health Connect erfolgt nun über den integrierten Konfigurator der Plattform; beispielsweise können über die Datenschutzeinstellungen festgelegt werden, auf welche Gesundheitsdaten bestimmte Anwendungen zugreifen dürfen. Zudem wurde in Health Connect die Unterstützung für die Speicherung von Informationen über die beim Training zurückgelegte Route integriert (der Nutzer legt den Zeitraum fest, für den die Liste der Wegpunkte gespeichert werden soll). Die Route kann auf einer Karte visualisiert und auf Wunsch zur Verarbeitung an andere Anwendungen übermittelt werden, nachdem der Nutzer die Aktion ausdrücklich bestätigt hat.

- Die Mittel zur Bestätigung des Zugriffs auf Standortinformationen wurden erweitert. In das Dialogfeld zur Bestätigung des Zugriffs auf den Standort wurde ein neuer Abschnitt hinzugefügt, der Informationen darüber enthält, wann der App Standortdaten übermittelt (Zugriff verweigert, einmalig erlauben und bei jeder Ausführung der App erlauben) sowie Details, wo zusätzliche Informationen zum Zugang zu den übertragenen Daten erhältlich sind.

- Es wird nun einmal im Monat eine Benachrichtigung über Änderungen an Apps, die Zugang zu Standortdaten haben, sowie Methoden zur Übertragung von Daten an Dritte ausgegeben (zum Beispiel wird eine Meldung angezeigt, wenn die App beginnt, Standortdaten für Werbezwecke zu verwenden).

- Beim Arbeiten mit Apps gibt es einen auffälligeren Hinweis mit einem Rückpfeil, der zur besseren Verständlichkeit der Möglichkeit dient, die Wischgeste zum Zurückgehen zu verwenden.

- Im Sharesheet-Mechanismus, der für das Versenden von Daten (z. B. Bildern oder Links) außerhalb der Anwendung oder an andere Benutzer verwendet wird, gibt es die Möglichkeit, eigene Aktionen hinzuzufügen. So können Sie beispielsweise eine eigene Liste von ChooserAction-Handlern definieren, die Apps und Benutzer anzeigen, an die Daten gesendet werden können. Darüber hinaus wurde die Palette der Signale erweitert, die zur Einstufung von Zielen für das direkte Versenden von Daten verwendet werden.

- Es wurde die Möglichkeit geschaffen, Teilzugriffsrechte zu gewähren, um nur von den Benutzern ausgewählte Fotos und Videos einzusehen (READ_MEDIA_VISUAL_USER_SELECTED; die Dateien, auf die zugegriffen werden kann, werden vom Benutzer über die Schnittstelle des Fotoauswahl-Dialogs ausgewählt, wenn die Berechtigungsanfrage erscheint). Nach dem Wechsel der Anwendung in den Hintergrund oder dem Schließen des Programms wird die vom Benutzer gewährte Berechtigung automatisch widerrufen. Im Bestätigungsdialog für die Berechtigungen des Zugriffs von Anwendungen auf Mediendateien gibt es jetzt die Möglichkeit, den Zugriff nur auf die ausgewählten Fotos oder Videos zu gewähren.

- Im Konfigurator wurde ein Abschnitt zur Anpassung regionaler Einstellungen hinzugefügt, einschließlich der Temperatureinheiten, des ersten Wochentags und des Zahlensystems. Zum Beispiel kann ein Europäer, der in den USA lebt, die Anzeige der Temperatur von Fahrenheit auf Celsius umstellen und Montag anstelle von Sonntag als Wochenbeginn festlegen.

- Die Skalierbarkeit von Schriftarten wurde verbessert. Der maximale Skalierungsgrad wurde von 130 % auf 200 % erhöht. Damit der Text bei starker Vergrößerung nicht zu überdimensioniert aussieht, wird jetzt automatisch eine nichtlineare Skalierungsanpassung angewendet (größerer Text vergrößert sich weniger stark als kleinerer Text). Dies ermöglicht eine optimale Lesbarkeit für Menschen mit Sehbehinderungen, ohne die Gefahr von Verzerrungen im Layout der Schnittstelle.

- In der vorherigen Version wurde die Unterstützung für Videoaufnahmen mit hohem dynamischen Bereich (HDR) erweitert, um zusätzliche Informationen von der Kamera zu erhalten. Dies ermöglicht das Speichern von Bildern im "Ultra HDR"-Format, bei dem zur Farbcodierung 10 Bit pro Kanal 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 diese bei Bedarf im Standard-Dynamikbereich anzuzeigen. Die Ausgabe im HDR-Modus erfolgt automatisch durch die Plattform, wenn die HDR-Unterstützung im Manifest der Anwendung aktiviert ist oder wenn die Funktion Window.setColorMode aufgerufen wird. Für die separate Darstellung von Ultra HDR mit OpenGL oder Vulkan kann die Klasse Gainmap verwendet werden.

- Die Arten von Anwendungen, die Vollbildbenachrichtigungen bei gesperrtem Bildschirm anzeigen dürfen, sind jetzt eingeschränkt. Diese Benachrichtigungen sollen auf Informationen aufmerksam machen, die sofortige Reaktionen erfordern, wie z. B. eingehende Anrufe oder Alarmmeldungen. Daher sind die Berechtigungen für solche Benachrichtigungen jetzt auf Anruf- und Alarmanwendungen beschränkt.
- Die Steuerung der Animationen, die den Übergang zwischen verschiedenen Bildschirmen (Seiten) der Anwendung beim Wischen anzeigt, wurde verbessert. Neue Komponenten für die Animation des Wechsels zwischen unteren und seitlichen Bildschirmen sowie für die Suchanfrage wurden hinzugefügt. Eine API für die Erstellung eigener Übergangseffekte in der Anwendung wurde ebenfalls hinzugefügt.
- Das Set an Kameraerweiterungen wurde aktualisiert und bietet jetzt die Möglichkeit, länger laufende, rechenintensive Algorithmen zur Bildverarbeitung zu nutzen, um beispielsweise die Qualität von Aufnahmen bei schwachem Licht zu verbessern. Funktionen zur Vorhersage von Verzögerungen bei der Bildbearbeitung, zur Anzeige von Fortschrittsinformationen und zur schnellen Generierung von Entwürfen vor Abschluss der endgültigen Bearbeitung wurden hinzugefügt. Ein viel optimierter und energieeffizienter Modus für die SurfaceView-Vorschau wurde implementiert. Während der Nutzung der Erweiterungen wird Touch-Support für die Fokussierung und das zoomen gewährleistet.
- Die Unterstützung zur Verwendung der integrierten Skalierungs- und Zuschnittsfunktionen der Kamera für die übermittelten RAW-Bilder wurde bereitgestellt.
- Für kabelgebundene Kopfhörer, die über USB angeschlossen werden, wurde die Möglichkeit zur Anwendung von verlustfreien Audioformaten (lossless) hinzugefügt. Das API enthält jetzt die Klasse AudioMixerAttributes, die es ermöglicht, Audio direkt an das Gerät zu senden, ohne Mischvorgänge, Lautstärkeregelungen oder Effektbearbeitungen.
- Im Grafik-API wurde die Klasse Mesh implementiert, mit der Benutzer eigene Varianten von polygonalen Netzen mit Vertex- und Fragment-Shadern, die in AGSL geschrieben sind, erstellen können.
- Die Möglichkeit zur Hardwarebeschleunigung der Rendering-Ausgabe in einen Puffer wurde durch die Klasse HardwareBufferRenderer realisiert.
- Die Klasse Path, die die Erstellung von Vektorgrafiken auf der Grundlage zusammengesetzter geometrischer Konturen ermöglicht, hat Unterstützung für die Interpolation zwischen Konturen ähnlicher Struktur hinzugefügt, um den Morphing-Effekt zu erzeugen, sowie die Verwendung des Iterators PathIterator für die sequenzielle Durchlaufung aller Segmente einer Kontur.
- Die Möglichkeiten zur Bindung einzelner Spracheinstellungen an verschiedene Anwendungen wurden erweitert. Es wurde die Möglichkeit bereitgestellt, eine Liste von Sprachen zu definieren, die im Android-Konfigurator angezeigt werden, wenn die Sprache für eine bestimmte Anwendung ausgewählt wird.
- Die Bereiche, in denen das System datenschutzrelevante Informationen anzeigt, die vom Entwickler im Play Console Form festgelegt wurden, wurden erweitert. Dazu gehören beispielsweise Richtlinien zur Datenweitergabe an Dritte. Solche Informationen werden jetzt im Berechtigungsdialog angezeigt.
- In Anwendungen, die Background-Handler verwenden, ist nun die Angabe des Typs des Hintergrunddienstes erforderlich. Während der Ausführung überprüft das System die Übereinstimmung zwischen dem angegebenen Diensttyp, den angeforderten Berechtigungen und der verwendeten API. Wenn beispielsweise die App den Typ Hintergrunddienst FOREGROUND_SERVICE_TYPE_LOCATION angegeben hat, wird angenommen, dass die Berechtigungen ACCESS_COARSE_LOCATION oder ACCESS_FINE_LOCATION angefordert werden können.
- Es wurden Sicherheitsänderungen vorgenommen: Das Senden von Intent-Anfragen an bestimmte interne Komponenten der Plattform wurde verboten. Dynamisch geladener Code muss jetzt mit einem Leserechtsattribut gekennzeichnet 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, untersagt. Die Ausführung von Aufgaben aus Hintergrundprozessen wurde eingeschränkt, und die Einschränkungen im Bereich der API-Aufrufe, die im SDK nicht angeboten werden, wurden aktualisiert.
- Beim Anschließen eines Geräts über USB an einen Desktop-Computer steht neben den zuvor verfügbaren Interaktionsmodi wie Dateitransfer, Laden, Internetfreigabe usw. jetzt die Möglichkeit zur Verfügung, das Smartphone als Webcam zu nutzen (UVC-Modus, USB Video Class). Standardmäßig ist diese Funktion deaktiviert, kann jedoch bei Vorhandensein von Root-Zugriff aktiviert werden.
- Die Leistung der Plattform auf Tablets und Geräten mit faltbaren Bildschirmen wurde weiterhin verbessert. Es wurden Bibliotheken bereitgestellt, die die Vorhersage von Ereignissen ermöglichen, die mit der Bewegung des Zeigers verbunden sind, und niedrige Latenzen bei der Verwendung von Stiften gewährleisten. Zudem wurden Schnittstellenvorlagen für große Bildschirme bereitgestellt, die Anwendungen wie soziale Netzwerke, Kommunikation, Multimedia-Inhalte, Lesen und Einkaufen berücksichtigen.
- Eine separate Berechtigung wurde hinzugefügt, um Anwendungen die Ausführung von Aktionen im Hintergrund zu ermöglichen. Die Aktivierung im Hintergrund ist eingeschränkt, um den Benutzer während der Arbeit mit der aktuellen Anwendung nicht abzulenken. Aktiven Anwendungen wurden erweiterte Möglichkeiten zur Kontrolle über die Aktivierung von Aktionen anderer Anwendungen, mit denen sie interagieren, bereitgestellt.
- Das Speichermanagementsystem wurde optimiert, um eine effizientere Ressourcenzuteilung für Anwendungen im Hintergrund zu gewährleisten. Nach einigen Sekunden im zwischengespeicherten Zustand wird die Hintergrundarbeit auf API-Interaktionen beschränkt, die den Lebenszyklus der Anwendung steuern, wie das API für Vordergrunddienste, JobScheduler und WorkManager.
- Benachrichtigungen, die mit dem Flag FLAG_ONGOING_EVENT versehen sind, können nun auf Geräten mit entsperrtem Bildschirm abgelehnt werden. Wenn das Gerät im gesperrten Modus ist, bleiben solche Benachrichtigungen jedoch undeklinierbar. Auch Benachrichtigungen, die für die Funktionalität des Systems wichtig sind, bleiben undeklinierbar.
- Im API PackageInstaller wurden neue Methoden hinzugefügt: requestUserPreapproval(), die es dem Anwendungskatalog ermöglicht, das Herunterladen von APK-Paketen bis zur Bestätigung der Installation durch den Benutzer zu verzögern; setRequestUpdateOwnership(), die es dem Installer ermöglicht, zukünftige Aktualisierungsoperationen für die Anwendung zu verknüpfen; und setDontKillApp(), die zusätzliche Möglichkeiten für die Anwendung während der Ausführung mit dem Programm bereitstellt. Im API InstallConstraints erhalten Installer die Möglichkeit, die Installation von Anwendungsaktualisierungen zu aktivieren, wenn die Anwendung nicht genutzt wird.
- Die Arbeiten zur Verbesserung der Plattform auf Tablets und Geräten mit faltbaren Bildschirmen wurden fortgesetzt. Es wurden aktualisierte Empfehlungen zur App-Entwicklung für Geräte mit großen Bildschirmen bereitgestellt, sowie standardisierte Interface-Vorlagen für große Bildschirme, die Anwendungen wie soziale Netzwerke, Kommunikation, Multimedia-Inhalte, Lesen und Einkaufen berücksichtigen. Ein Vorabrelease des Cross Device SDK mit Werkzeugen für die Entwicklung von Anwendungen, die korrekt mit verschiedenen Gerätetypen (Smartphones, Tablets, Smart-TVs usw.) und verschiedenen Formfaktoren arbeiten, wurde angeboten.
- Die Koordination ressourcenintensiver Hintergrundarbeiten, wie dem Upload großer Dateien über WLAN, wurde optimiert. Änderungen an der API für die Ausführung von Prioritätsdiensten (Foreground Services) und zur Aufgabenplanung (JobScheduler) wurden vorgenommen, um neue Funktionen für benutzergesteuerte Arbeiten im Zusammenhang mit Datenübertragungen hinzuzufügen. Es wurden Anforderungen zur Angabe des Typs der ausgeführten Prioritätsdienste eingeführt (z. B. Kameraarbeiten, Datensynchronisation, Multimedia-Wiedergabe, Standortverfolgung, Mikrofonzugriff usw.). Die Definition der Bedingungen für den Datenupload wurde vereinfacht, um beispielsweise Uploads nur über WLAN zu ermöglichen.
- Das interne System zur Zustellung von Broadcast-Nachrichten an Anwendungen wurde optimiert, um den Energieverbrauch zu verringern und die Reaktionsfähigkeit zu erhöhen. Der Empfang registrierter Nachrichtenströme durch die Anwendungen wurde verbessert – Nachrichten können in Warteschlangen gestellt, zusammengefasst werden (z. B. wird eine Serie von Nachrichten BATTERY_CHANGED zu einer einzigen aggregiert) und werden erst nach dem Verlassen des Caches durch die Anwendung zugestellt.
- Das Limit für die maximale Anzahl der zwischengespeicherten Anwendungen wurde erhöht, was die Anzahl der Anwendungen, die im 'kalten' Modus gestartet werden (d.h. die nicht im Speicher zwischengespeichert sind und langsamer gestartet werden), verringert hat. Bei Geräten mit 8 GB RAM sank die Zahl der 'kalten' Anwendungsstarts nach der Anpassung der Begrenzungen um 20 %, während sie bei 12 GB um 30 % zurückging.
- Die Verwendung der Funktion für exakt terminierte Alarme in Anwendungen erfordert nun die separate Genehmigung SCHEDULE_EXACT_ALARM, da die Nutzung dieser Funktionalität negative Auswirkungen auf die Akkulaufzeit haben und den Ressourcenverbrauch erhöhen kann (für geplante Aufgaben wird empfohlen, die Aktivierung zu einer ungefähren Zeit zu verwenden). Anwendungen mit Kalender- und Uhr-Implementierungen, die eine Aktivierung zu exakten Zeiten verwenden, müssen bei der Installation die Genehmigung USE_EXACT_ALARM erhalten. Veröffentlichungen im Google Play-Katalog von Anwendungen mit der Genehmigung USE_EXACT_ALARM sind nur für Programme mit Wecker-, Timer- und Kalenderfunktionen mit Benachrichtigungen über Ereignisse erlaubt.
- Die Möglichkeit wurde hinzugefügt, Spracheinstellungen an bestimmte Anwendungen zu binden. Entwickler können nun die localeConfig-Parameter über den Aufruf von LocaleManager.setOverrideLocaleConfig ändern, um die für die Anwendung im Android-Einstellungsinterface angezeigten Sprachen festzulegen.
- Die API zur grammatikalischen Flexion wurde hinzugefügt, um das Hinzufügen von Übersetzungen für Interface-Elemente zu erleichtern, die Sprachen mit einem Geschlechtssystem berücksichtigen.
- Um das Abfangen von Intent-Anfragen durch böswillige Anwendungen zu verhindern, ist in der neuen Version das Senden von Intents ohne explizite Angabe des Pakets oder interner Komponenten untersagt.
- Die Sicherheit des dynamischen Code-Loads (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 Lesezugriffsrechte haben.
- Die Installation von Anwendungen, die eine SDK-Version unter 23 angeben, ist verboten. Dadurch wird verhindert, dass Vollmachtseinschränkungen durch Verbindungen zu alten APIs umgangen werden (API-Version 22 ist nicht erlaubt, da in Version 23 (Android 6.0) ein neues Zugriffssteuerungsmodell eingeführt wurde, mit dem der Zugriff auf Systemressourcen dynamisch angefordert werden kann). Zuvor installierte Anwendungen, die alte APIs verwenden, werden nach einem Android-Update weiterhin funktionieren.
- Ein API Credential Manager wurde eingeführt, der es ermöglicht, in Anwendungen mit Anmeldedaten externer Authentifizierungsanbieter zu arbeiten. Die Unterstützung für Passkeys wurde implementiert, die es Benutzern ermöglichen, sich ohne Passwörter über biometrische Merkmale wie Fingerabdrücke oder Gesichtserkennung zu authentifizieren. Die Benutzeroberfläche zur Kontowahl wurde verbessert.
- Im Android Runtime (ART) wurde die Unterstützung für OpenJDK 17 implementiert. Die grundlegenden Java-Bibliotheken der Plattform und die Anwendungsentwicklungstools wurden auf OpenJDK 17 aktualisiert. Die Unterstützung für die in OpenJDK 17 verfügbaren Sprachfeatures und Java-Klassen wurde hinzugefügt, darunter Record-Klassen, mehrzeilige Strings und Pattern Matching im 'instanceof'-Operator.
- Im Android Runtime werden fortschrittlichere Komprimierungsmethoden eingesetzt, die die Dateigröße im Durchschnitt um 9,3 % 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 in einem separaten Paket bereitgestellt, das über Google Play aktualisiert wird. Dieser Ansatz erleichtert das Aktualisieren und Entfernen abgelaufener Zertifikate kompromittierter Zertifizierungsstellen und verhindert, dass Gerätehersteller die Liste der Root-Zertifikate manipulieren, wodurch der Aktualisierungsprozess unabhängig von Firmware-Updates wird. Andererseits ermöglicht die neue Bereitstellungsmethode dem Benutzer nicht, Änderungen an den Systemzertifikaten vorzunehmen, selbst wenn er Root-Zugriff auf das System hat und die Firmware vollständig kontrolliert.
Quelle: opennet.ru









