Google heeft de release van het open mobiele platform Android 14 gepubliceerd. De bij de nieuwe uitgave behorende broncodes zijn geplaatst in de Git-repository van het project (tak android-14.0.0_r1). Firmware-updates zijn voorbereid voor de Pixel-serie apparaten. Later worden firmware-updates voorbereid voor smartphones van Samsung Galaxy, iQOO, Nothing, OnePlus, Oppo, Realme, Sharp, Sony, Tecno, vivo en Xiaomi. Daarnaast zijn universele GSI (Generic System Images) builds ontwikkeld, geschikt voor verschillende apparaten op basis van ARM64 en x86_64 architecturen.
Belangrijkste vernieuwingen:
- De hoofdstructuur van het platform bevat de Health Connect-opslag, die eerder als een afzonderlijk pakket via Google Play werd geleverd. Health Connect zorgt voor een centrale opslag van gegevens van fitness trackers en andere apparaten die betrekking hebben op de gezondheid van de gebruiker, en organiseert de gezamenlijke toegang van verschillende applicaties tot gezondheidsgegevens. Toegang tot de instellingen van Health Connect wordt nu verleend via de standaard configurator van het platform, bijvoorbeeld via de privacy-instellingen kan worden beheerd welke specifieke gezondheidsgegevens door bepaalde applicaties toegankelijk zijn. Bovendien is er ondersteuning toegevoegd in Health Connect voor het opslaan van informatie over de afgelegde route tijdens een training (de gebruiker bepaalt de tijdsduur waarvoor de lijst met waypoints wordt opgeslagen). De route kan op een kaart worden weergegeven en desgewenst voor verdere verwerking aan andere applicaties worden doorgegeven, na expliciete bevestiging van de actie door de gebruiker.

- De middelen voor het bevestigen van toegang tot locatie-informatie zijn uitgebreid. In de dialoog voor het bevestigen van toegang tot de locatie is een nieuwe sectie toegevoegd met informatie over wanneer de applicatie gegevens over de locatie doorgeeft (toegang verbannen, slechts één keer toestaan en bij elke uitvoering van de applicatie toestaan) en details over waar meer informatie kan worden verkregen over de toegang tot de verzonden gegevens.

- Er is een periodieke (eens per maand) weergave van meldingen geïmplementeerd met een waarschuwing over wijzigingen in applicaties die toegang hebben gekregen tot de locatie, wat betreft de methoden voor het doorgeven van gegevens aan derden (bijvoorbeeld wordt weergegeven wanneer een applicatie begint gegevens over de locatie te gebruiken bij het tonen van advertenties).

- Bij het werken met applicaties is er een duidelijkere hint met een terugpijl geïmplementeerd, die wordt weergegeven om het begrip van de toepassing van de schermgebaren voor terugkeren te vergemakkelijken.

- In het Sharesheet-mechanisme, dat wordt gebruikt voor het verzenden van gegevens (bijvoorbeeld afbeeldingen of links) buiten de applicatie of naar andere gebruikers, is de mogelijkheid toegevoegd om eigen acties toe te voegen. Bijvoorbeeld, je kunt een eigen lijst met ChooserAction-handlers definiëren die applicaties en gebruikers tonen waaraan verzenden mogelijk is. Daarnaast is het bereik van signalen uitgebreid die worden gebruikt voor het rangschikken van doelen voor directe gegevensverzending.

- Er is de mogelijkheid toegevoegd om gedeeltelijke machtigingen te geven voor toegang tot alleen de door de gebruiker geselecteerde foto's en video's (READ_MEDIA_VISUAL_USER_SELECTED; de bestanden waartoe toegang wordt verleend, worden door de gebruiker geselecteerd via de interface van de fotokiezer tijdens het verschijnen van de machtigingsdialoog). Na het minimaliseren van de applicatie of het sluiten van het programma wordt de door de gebruiker verleende machtiging automatisch ingetrokken. In de bevestigingsdialoog van de machtigingen voor toegang van applicaties tot multimedia-bestanden is er nu de mogelijkheid om toegang alleen te verlenen tot geselecteerde foto's of video's.

- Aan de configurator is een sectie voor het overschrijven van regionale voorkeuren toegevoegd, zoals temperatuurmeeteenheden, de eerste dag van de week en het telstelsel. Bijvoorbeeld, een Europeaan die in de VS woont, kan instellen dat de temperatuur in graden Celsius in plaats van Fahrenheit wordt weergegeven en maandag als de eerste dag van de week in plaats van zondag beschouwen.

- De mogelijkheden voor het schalen van lettertypen zijn uitgebreid; het maximale schaalniveau van het lettertype is verhoogd van 130% naar 200%, en om ervoor te zorgen dat de tekst bij een grote vergroting niet te groot lijkt, wordt nu automatisch een niet-lineaire verandering van het schaalniveau toegepast (al grote tekst wordt niet zoveel vergroot als kleine tekst), wat optimale leesbaarheid van de tekst voor mensen met een verminderd gezichtsvermogen zal mogelijk maken zonder dat er vervormingen in de interface-indeling optreden.

- De in de vorige thread geïntroduceerde ondersteuning voor video-opnamen met een hoog dynamisch bereik (HDR) is uitgebreid met mogelijkheden om aanvullende informatie van de camera te verkrijgen, waarmee afbeeldingen kunnen worden opgeslagen in het 'Ultra HDR'-formaat, waarbij 10 bits per kanaal wordt gebruikt voor kleuring. Het Ultra HDR-formaat is volledig compatibel met JPEG, wat betekent dat applicaties zonder wijzigingen kunnen werken met HDR-afbeeldingen en, indien nodig, deze kunnen weergeven met een normaal dynamisch bereik. De uitvoer in HDR-modus wordt automatisch verzorgd door het platform wanneer HDR-ondersteuning is ingeschakeld in de manifest van de applicatie of bij het aanroepen van Window.setColorMode. Voor aparte rendering van Ultra HDR met behulp van OpenGL of Vulkan kan de klasse Gainmap worden gebruikt.

- De soorten applicaties die volledige schermmeldingen mogen weergeven wanneer het scherm is vergrendeld, zijn beperkt. Dergelijke meldingen zijn bedoeld om aandacht te vestigen op informatie die onmiddellijke actie vereist, zoals binnenkomende oproepen of alarmen, daarom zullen de bevoegdheden voor het weergeven van dergelijke meldingen nu beperkt zijn tot belapps en waarschuwingstoepassingen.
- Het beheer van animaties die de overgang tussen verschillende schermen (tabs) in de applicatie aangeven bij een veeggebaar dat de inhoud verschuift, is verbeterd. Nieuwe componenten zijn toegevoegd voor de animatie van het schakelen tussen onderste en zijschermen, evenals het oproepen van zoeken. Een API is toegevoegd voor het creëren van eigen overgangseffecten in de applicatie.
- De set camera-extensies is vernieuwd, waarmee de mogelijkheid wordt geboden om algoritmen te gebruiken die langer duren en intensieve berekeningen vereisen voor het verwerken van afbeeldingen, bijvoorbeeld om de kwaliteit van foto's bij weinig licht te verbeteren. Functies zijn toegevoegd voor het voorspellen van de verwerkingsvertragingen, het verkrijgen van voortgangsinformatie tijdens de verwerking en het snel verkrijgen van een concept van de foto voordat het uiteindelijke beeld is voorbereid. Een meer geoptimaliseerde en energie-efficiënte modus voor het voorvertonen van SurfaceView is geïmplementeerd. Tijdens het gebruik van extensies is ondersteuning voor aanraken voor het scherpstellen en inzoomen toegevoegd.
- Ondersteuning voor het gebruik van camera-gebaseerde functies voor het schalen en bijsnijden van verzonden RAW-afbeeldingen is beschikbaar gesteld.
- Voor bekabelde hoofdtelefoons die via USB zijn aangesloten, is de mogelijkheid toegevoegd om lossless geluidsformaten te gebruiken. De AudioMixerAttributes-klasse is aan de API toegevoegd, waarmee geluid rechtstreeks naar het apparaat kan worden verzonden, zonder mixen, volumeregeling en effectverwerking.
- In de grafische API is de Mesh-klasse geïmplementeerd, waarmee je je eigen polygonale netvarianten kunt creëren met vertex- en fragmentshaders geschreven in AGSL.
- Hardwarematige versnelling van rendering naar een buffer is toegevoegd, geïmplementeerd via de HardwareBufferRenderer-klasse.
- In de Path-klasse, die het mogelijk maakt om vectorgraphics te creëren op basis van samengestelde geometrische contouren, is ondersteuning voor interpolatie tussen contouren met vergelijkbare structuren toegevoegd om een morphing-effect te creëren en het PathIterator te gebruiken voor sequentieel doorlopen van alle segmenten van de contour.
- De mogelijkheden om afzonderlijke taalinstellingen aan verschillende applicaties te koppelen zijn uitgebreid. Er is een optie beschikbaar gesteld om een lijst van talen te definiëren die in de Android-configurator worden weergegeven bij het selecteren van een taal voor een specifieke applicatie.
- De gebieden waarin het systeem privacy-gerelateerde informatie toont, zoals gedefinieerd door de ontwikkelaar in het Play Console-formulier, zijn uitgebreid, zoals het beleid voor het delen van gegevens met derden. Bijvoorbeeld, dergelijke informatie wordt nu weergegeven in het dialoogvenster voor toegangsrechten.
- In applicaties die gebruik maken van achtergrondverwerkers, is het nu verplicht om het type achtergrondservice aan te geven. Terwijl het systeem draait, controleert het de overeenstemming tussen het opgegeven type service, de gevraagde rechten en de gebruikte API. Bijvoorbeeld, als de applicatie het type achtergrondservice FOREGROUND_SERVICE_TYPE_LOCATION heeft opgegeven, kan het zijn dat de rechten ACCESS_COARSE_LOCATION of ACCESS_FINE_LOCATION worden aangevraagd.
- Wijzigingen zijn aangebracht om de beveiliging te verbeteren: Het verzenden van intent-verzoeken naar bepaalde interne platformcomponenten door applicaties is verboden. Dynamisch geladen code moet nu gemarkeerd worden met het toegangsattribuut in alleen-lezen modus. In de functies ZipFile(String) en ZipInputStream.getNextEntry() is de verwerking van zip-archieven waarmee de paden beginnen met het teken "\/" of die de reeks ".." bevatten, verboden. De uitvoering van taken vanuit achtergrondverwerkers is beperkt en de beperkingen in de aanroep van API's die niet in de SDK worden aangeboden, zijn bijgewerkt.
- Bij het aansluiten van een apparaat via USB op een desktopcomputer, naast de eerder beschikbare interactiemodi, zoals bestandsoverdracht, opladen, internetdeling, enzovoort, is de mogelijkheid toegevoegd om de smartphone als webcamera te gebruiken (UVC-modus, USB Video Class). Deze mogelijkheid is standaard uitgeschakeld, maar kan worden geactiveerd met root-toegang.
- De prestaties van het platform op tablets en apparaten met opvouwbare schermen zijn verder verbeterd. Bibliotheken zijn verstrekt die de voorspelling van gebeurtenissen met betrekking tot de muisbeweging ondersteunen en lage latentie bieden bij gebruik van stylussen. Interface-sjablonen voor grote schermen zijn geleverd, rekening houdend met toepassingen zoals sociale media, communicatie, multimedia-inhoud, lezen en winkelen.
- Er is een apart mandaat toegevoegd om applicaties de mogelijkheid te geven om acties te starten wanneer de applicatie op de achtergrond is. Activatie terwijl de applicatie op de achtergrond is, is beperkt om de gebruiker niet af te leiden tijdens het werken met de huidige applicatie. Actieve applicaties hebben meer mogelijkheden gekregen om controle uit te oefenen over het activeren van acties door andere applicaties waarmee ze interageren.
- Het geheugenbeheersysteem is geoptimaliseerd voor een efficiëntere toewijzing van resources aan applicaties die op de achtergrond draaien. Enkele seconden na het verplaatsen van de applicatie naar een gecached staat, wordt de achtergrondwerkzaamheden beperkt tot interactie met API's die de levenscyclus van de applicatie beheren, zoals API Foreground Services, JobScheduler en WorkManager.
- Meldingen met de FLAG_ONGOING_EVENT-vlag kunnen nu worden afgewezen wanneer ze worden weergegeven op een apparaat met een ontgrendeld scherm. Als het apparaat in de vergrendelingsmodus staat, blijven dergelijke meldingen onafwijsbaar. Ook meldingen die essentieel zijn voor de werking van het systeem blijven onafwijsbaar.
- De API PackageInstaller heeft nieuwe methoden toegevoegd: requestUserPreapproval(), waarmee de appcatalogus de download van APK-pakketten kan uitstellen totdat de gebruiker bevestiging van installatie geeft; setRequestUpdateOwnership(), waarmee toekomstige update-acties aan de installer kunnen worden toegewezen; setDontKillApp(), waarmee extra mogelijkheden voor de app tijdens gebruik met het programma kunnen worden ingesteld. In de API InstallConstraints is het installateurs mogelijk gemaakt om de installatie van app-updates te activeren op momenten dat de app niet in gebruik is.
- Er is voortgang geboekt bij het verbeteren van de platformwerking op tablets en apparaten met opvouwbare schermen. De aanbevelingen voor de ontwikkeling van apps voor apparaten met grote schermen zijn bijgewerkt en er zijn sjablonen voor interfaces voor grote schermen toegevoegd, die rekening houden met toepassingen zoals sociale media, communicatie, multimediacontent, lezen en aankopen. Een voorlopige versie van de Cross device SDK is voorgesteld, met hulpmiddelen voor de ontwikkeling van apps die goed werken met verschillende soorten apparaten (smartphones, tablets, slimme tv's, enz.) en verschillende form factoren.
- De coördinatie van resource-intensieve achtergrondtaken, zoals het downloaden van grote bestanden via Wi-Fi, is geoptimaliseerd. Er zijn wijzigingen aangebracht in de API voor het starten van prioriteitsdiensten (Foreground Service) en het plannen van taken (JobScheduler), waaraan nieuwe functionaliteit is toegevoegd voor door de gebruiker geïnitieerde taken die verband houden met gegevensoverdracht. Er zijn eisen ingevoerd voor het aangeven van het type te starten prioriteitsdiensten (werken met camera's, gegevenssynchronisatie, multimedia-afspeelactiviteiten, locatie-tracking, toegang tot de microfoon, enz.). De voorwaarden voor het activeren van gegevensoverdracht zijn vereenvoudigd, bijvoorbeeld om alleen te downloaden via Wi-Fi.
- Het interne systeem voor de levering van broadcastberichten aan applicaties is geoptimaliseerd om het energieverbruik te verlagen en de reactietijd te verbeteren. De ontvangst van geregistreerde berichtenstromen door applicaties is verbeterd — berichten kunnen worden in de wachtrij geplaatst, samengevoegd (bijvoorbeeld, een serie berichten BATTERY_CHANGED wordt samengevoegd tot één) en worden alleen afgeleverd wanneer de applicatie uit de gecachte status komt.
- De limiet voor het maximum aantal gecachte applicaties is verhoogd, wat het aantal applicaties dat in de 'koude' modus wordt gestart (d.w.z. niet in het geheugen gecacht en langzamer opgestart) heeft verlaagd. Voor apparaten met 8 GB RAM is het aantal 'koude' applicatiestarten met 20% verminderd na de wijziging van de limieten, en bij 12GB met 30%.
- Het gebruik van exact alarms in applicaties vereist nu een aparte machtiging SCHEDULE_EXACT_ALARM, omdat het gebruik van deze functionaliteit een negatieve invloed kan hebben op de accuduur en kan leiden tot verhoogd resourceverbruik (voor taken die volgens schema worden uitgevoerd, wordt aanbevolen om activatie rond een geschat tijdstip te gebruiken). Applicaties met een kalender- en klokimplementatie, die gebruik maken van activatie op precies tijdstip, moeten bij installatie de machtiging USE_EXACT_ALARM krijgen. Publicaties in de Google Play-catalogus van applicaties met de machtiging USE_EXACT_ALARM zijn alleen toegestaan voor programma's met een implementatie van een wekker, timer en kalender met eventmeldingen.
- Er is nu de mogelijkheid om taalspecifieke instellingen te koppelen aan individuele applicaties. De ontwikkelaar van de applicatie kan nu de parameters localeConfig wijzigen via de aanroep LocaleManager.setOverrideLocaleConfig om de lijst met talen te definiëren die voor de applicatie in de Android-instellingen worden weergegeven.
- De API Grammatical Inflection is toegevoegd om het eenvoudiger te maken om vertalingen van interface-elementen toe te voegen die rekening houden met talen met geslachtsystemen.
- Om te voorkomen dat kwaadaardige applicaties intent-aanvragen onderscheppen, is in de nieuwe versie het verzenden van intents zonder expliciete vermelding van het pakket of interne component verboden.
- De veiligheid van dynamisch code laden (DCL, Dynamic Code Loading) is verhoogd om de invoeging van kwaadaardige code in dynamisch geladen uitvoerbare bestanden te voorkomen. Deze bestanden moeten nu leesrechten hebben.
- Het installeren van applicaties met een SDK-versie lager dan 23 is verboden. Dit voorkomt dat machtigingsbeperkingen worden omzeild door aan te sluiten op oude API's (API-versie 22 is verboden, omdat in versie 23 (Android 6.0) een nieuw model voor toegangsbeheer is geïntroduceerd waarmee toegang tot systeembronnen on-the-fly kan worden aangevraagd). Eerder geïnstalleerde applicaties die oude API's gebruiken, blijven na de Android-update functioneren.
- De API Credential Manager is voorgesteld, waarmee in applicaties wordt ingelogd met behulp van inloggegevens van externe authenticatieproviders. Ondersteuning voor de technologie Passkeys is geïmplementeerd, waardoor gebruikers zonder wachtwoorden kunnen inloggen met behulp van biometrische identificatoren zoals vingerafdrukken of gezichtsherkenning. De interface voor het selecteren van accounts is verbeterd.
- In de Android Runtime (ART) is ondersteuning voor OpenJDK 17 geïmplementeerd. De basis Java-bibliotheken van het platform en de ontwikkeltools zijn bijgewerkt naar OpenJDK 17. Ondersteuning voor de taalmogelijkheden en Java-klassen beschikbaar in OpenJDK 17 is toegevoegd, zoals recordtypes, multi-line strings en patroonmatching in de 'instanceof'-operator.
- In de Android Runtime zijn meer geavanceerde compressiemethoden toegepast, waardoor de bestandsgrootte gemiddeld met 9,3% is verminderd zonder prestatieverlies.
- De manier van het bijwerken van certificaten van certificeringsinstanties (CA) is gewijzigd. Systeemcertificaten zullen niet langer aan de firmware zijn gebonden, maar zullen als een apart pakket worden geleverd dat via Google Play wordt bijgewerkt. Deze aanpak vergemakkelijkt het onderhouden van actuele certificaten en het verwijderen van certificaten van gecompromitteerde instanties en voorkomt dat apparaatfabrikanten de lijst met rootcertificaten kunnen manipuleren, waardoor het bijwerkingsproces onafhankelijk wordt van firmware-updates. Aan de andere kant maakt de nieuwe aflevermethode het niet mogelijk voor de gebruiker om wijzigingen aan te brengen in systeemcertificaten, zelfs niet als deze root-toegang heeft en de firmware volledig controleert.
Bron: opennet.ru









