Selskapet Google har publisert utgivelsen av den åpne mobilplattformen Android 14. Kildetekstene relatert til den nye utgaven er tilgjengelige i Git-repositoriet for prosjektet (gren android-14.0.0_r1). Oppdateringer for fastvaren er forberedt for enheter i Pixel-serien. Det er planlagt å forberede fastvareoppdateringer for smarttelefoner fra Samsung Galaxy, iQOO, Nothing, OnePlus, Oppo, Realme, Sharp, Sony, Tecno, vivo og Xiaomi senere. I tillegg er det laget universelle GSI (Generic System Images) bygge som passer for forskjellige enheter basert på ARM64- og x86_64-arkitektur.
Hovudnyhende:
- Den viktigste komponenten i plattformen inkluderer Health Connect-lagring, som tidligere ble levert som en egen pakke via Google Play. Health Connect sikrer sentral lagring av data fra treningsarmbånd og andre enheter relatert til brukerens helse, og organiserer felles tilgang til helsedata for forskjellige applikasjoner. Tilgang til innstillingene for Health Connect vil nå bli gitt via plattformens innebygde konfigurasjon, for eksempel kan man gjennom personvernsinnstillingene administrere hvilke spesifikke helsedata visse applikasjoner kan få tilgang til. I tillegg er det lagt til støtte for å lagre informasjon om ruten som ble gått under trening (brukeren definerer tidsrommet for hvilke rute-punkter som skal lagres). Ruten kan visualiseres på kartet og, etter brukerens bekreftelse, sendes til behandling av andre applikasjoner.

- Verktøyene for bekreftelse av tilgang til informasjon om beliggenhet er utvidet. I dialogen for å bekrefte tilgang til beliggenhet er det lagt til en ny seksjon med informasjon om når applikasjonen overfører data om beliggenhet (tilgang nektet, tillat kun én gang og tillat ved hver bruk av applikasjonen) og detaljer om hvor man kan finne mer informasjon om tilgangen til de overførte dataene.

- Det er implementert periodisk (en gang i måneden) varsling med advarsel om endringer i applikasjonene som har fått tilgang til beliggenhet, metoder for overføring av data til tredjeparter (for eksempel vises det når applikasjonen begynner å bruke beliggenhetsdata for annonsering).

- Når du bruker applikasjoner, er det implementert en mer merkbar pekepinn med en tilbake-arrow, som vises for å forenkle forståelsen av hvordan skjermgester kan brukes for å gå tilbake.

- I Sharesheet-mekanismen, som brukes for å sende data (for eksempel bilder eller lenker) utenfor applikasjonen eller til en annen bruker, er det implementert mulighet for å legge til egne handlinger. For eksempel kan du definere din egen liste over ChooserAction-behandlere som viser applikasjoner og brukere som er tilgjengelige for sending. I tillegg er spektret av signaler som brukes til å rangere mål for direkte sending av data, utvidet.

- Muligheten for delvis tildeling av rettigheter for tilgang kun til de valgte bildene og videoene som brukeren har valgt (READ_MEDIA_VISUAL_USER_SELECTED, filene som får tilgang, velges av brukeren via Photo picker-grensesnittet under tillatelsesdialogen). Etter at applikasjonen er sendt til bakgrunnen eller programmet avsluttes, blir de tillatelsene som brukeren har gitt, automatisk tilbakekalt. I bekreftelsesdialogen for appers tilgang til multimediefiler har brukeren nå mulighet til å gi tilgang bare til utvalgte bilder eller videoer.

- Konfiguratoren har fått en seksjon for overstyring av innstillingene for regionale preferanser, som temperaturmåleenheter, ukens første dag og tallsystem. For eksempel kan en europeer som bor i USA konfigurere for å vise temperaturen i Celsius i stedet for Fahrenheit og anse mandag som ukens første dag i stedet for søndag.

- Mulighetene for skalering av skrifttyper er utvidet, den maksimale skaleringsgraden for skrifttype er økt fra 130% til 200%, og for å unngå at teksten ser for stor ut ved høy skalering, brukes det nå en ikke-lineær endring av skalering (allerede stor tekst skaleres ikke like mye som liten tekst), noe som gir optimal lesbarhet for mennesker med nedsatt syn uten fare for at grensesnittkomposisjonen blir forvrengt.

- Støtten for videoopptak med høy dynamisk lysstyrke (HDR), som ble presentert i forrige innlegg, er utvidet med muligheter for å få ekstra informasjon fra kameraet som gjør det mulig å lagre bilder i Ultra HDR-formatet, hvor 10 bit per kanal brukes til fargekoding. Ultra HDR-formatet er helt kompatibelt med JPEG, noe som lar applikasjoner arbeide med HDR-bilder uten endringer, og om nødvendig vise dem med vanlig lysstyrke. HDR-utgang aktiveres automatisk av plattformen dersom HDR-støtte er aktivert i applikasjonens manifest eller ved å kalle Window.setColorMode. For en egen tegning av Ultra HDR ved hjelp av OpenGL eller Vulkan kan klassen Gainmap brukes.

- Typene applikasjoner som har lov til å vise helskjerm varsler når skjermen er låst, er begrenset. Slike varsler er ment å tiltrekke oppmerksomheten til informasjon som krever umiddelbar respons, som innkommende anrop eller alarmutløsing, så bevilgningene for å vise slike varsler er nå begrenset til applikasjoner for anrop og varsling.
- Administrasjonen av animasjonen som signaliserer overgangen mellom forskjellige skjermer (faner) i applikasjonen ved sveiping for å flytte innholdet, er forbedret. Nye komponenter for animasjon ved bytte av bunn- og side-skjermer samt for å aktivere søk er lagt til. En API for å lage egne overgangseffekter i applikasjonen er også lagt til.
- Sett med kameraer (Camera Extensions) er oppdatert med mulighet for å bruke langvarige algoritmer som krever intensiv beregning for bildebehandling, for eksempel for å forbedre kvaliteten på bilder tatt under lav belysning. Funksjoner for å forutsi forsinkelsene ved bildebehandling, få informasjon om fremdriften av behandlingen og raskt få et utkast av bildet før det endelige bildet er klart, er lagt til. En mer optimalisert og energieffektiv forhåndsvisningsmodus for SurfaceView er implementert. Under bruk av utvidelser støttes berøring for fokus og zoom.
- Støtte for bruk av innebygde kamerafunksjoner for skalering og beskjæring av overførte RAW-bilder er lagt til.
- For kablede hodetelefoner koblet til via USB, er muligheten for å bruke tapeless lydformater lagt til. Klassen AudioMixerAttributes er lagt til i API-en, noe som gjør det mulig å sende lyd direkte til enheten uten miksing, volumjustering eller effekthåndtering.
- Det er implementert en Mesh-klasse i det grafiske API-et, som gjør det mulig å lage egne varianter av polygonnett med vertex- og fragment-shadere skrevet i AGSL.
- Muligheten for maskinvareakselerasjon av tegning til buffer er lagt til, implementert gjennom klassen HardwareBufferRenderer.
- I klassen Path, som gjør det mulig å lage vektorgrafikk basert på sammensatte geometriske konturer, er støtte for interpolering mellom konturer med lignende struktur for å skape morfingeffekter lagt til, samt bruken av iteratoren PathIterator for sekvensiell iterasjon over alle segmentene av konturen.
- Mulighetene for å knytte spesifikke språkinstillinger til ulike applikasjoner er utvidet. Det er nå mulig å definere en liste over språk som skal vises i Android-konfiguratoren når du velger språk for en spesifikk applikasjon.
- Områdene der systemet viser informasjon relatert til personvern, definert av utvikleren i Play Console-skjemaet, er utvidet, inkludert politikk om deling av data med tredjepart. Slike opplysninger vises nå for eksempel i dialogboksen for tillatelsesforespørsel.
- I applikasjoner som bruker bakgrunnsbehandlere, er det nå obligatorisk å spesifisere type bakgrunnstjeneste. Under drift sjekker systemet at den angitte tjenestetypen samsvarer med forespurte tillatelser og brukt API. For eksempel, hvis applikasjonen angir bakgrunnstjenestetypen FOREGROUND_SERVICE_TYPE_LOCATION, er det underforstått at tillatelsene ACCESS_COARSE_LOCATION eller ACCESS_FINE_LOCATION kan bli forespurt.
- Endringer er gjort for å forbedre sikkerheten: Sending av intent-forespørsel fra applikasjoner til enkelte interne plattformer er forbudt. Dynamisk lastet kode må nå merkes med attributtet for tilgang i skrivebeskyttet modus. I funksjonene ZipFile(String) og ZipInputStream.getNextEntry() er behandling av zip-arkiver som begynner med tegnet «/» eller inneholder sekvensen «..» forbudt. Utføring av oppgaver fra bakgrunnsbehandlere er begrenset, og begrensningene for API-kallene som ikke er tilgjengelige i SDK, er oppdatert.
- Når en enhet kobles til en stasjonær PC via USB, har det nå blitt mulig å bruke smarttelefonen som et webkamera (UVC-modus, USB Video Class), i tillegg til tidligere tilgjengelige interaksjonsmoduser som filoverføring, lading og internettdeling. Som standard er denne funksjonaliteten deaktivert, men kan aktiveres med root-tilgang.
- Forbedringen av plattformens funksjonalitet på nettbrett og enheter med foldeskjermer fortsetter. Bibliotekene som forutsier hendelser relatert til musepekerbevegelser og gir lavere forsinkelser ved bruk av stylus, er nå tilgjengelige. Det er også gitt grensesnittmaler for store skjermer, tilpasset applikasjoner som sosiale medier, kommunikasjon, multimedia, lesing og shopping.
- Et eget mandat for å gi applikasjoner muligheten til å starte handlinger mens de befinner seg i bakgrunnen, er lagt til. Aktivering mens appen er i bakgrunnen er begrenset for å unngå distraksjoner for brukeren mens de jobber med den nåværende applikasjonen. Aktive applikasjoner har fått flere muligheter til å kontrollere aktivering av handlinger fra andre applikasjoner de interagerer med.
- Systemet for minnehåndtering har blitt optimalisert for en mer effektiv tildeling av ressurser til applikasjoner som kjører i bakgrunnen. Etter noen sekunder med applikasjonen i en hurtigbuffer-tilstand, er bakgrunnsarbeidet begrenset til å jobbe med API-er som styrer livssyklusen til applikasjonen, som API Foreground Services, JobScheduler og WorkManager.
- Varslinger som er utstyrt med flagget FLAG_ONGOING_EVENT kan nå avvises når de vises på enheten med låst skjerm. Hvis enheten er i låst skjermmodus, vil slike varslinger forbli ikke-avvisbare. Varslinger som er viktige for systemets funksjonalitet vil også forbli ikke-avvisbare.
- API-en PackageInstaller har fått nye metoder: requestUserPreapproval(), som lar applikasjonskatalogen utssette nedlasting av APK-pakker til brukerens bekreftelse på installasjon er mottatt; setRequestUpdateOwnership(), som lar installatøren sikre seg fremtidige oppdateringsoperasjoner; setDontKillApp(), som gir ekstra muligheter for applikasjonen under drift. I API-en InstallConstraints har installatører fått muligheten til å aktivere oppdatering av applikasjoner når de ikke er i bruk.
- Arbeidet med å forbedre plattformens ytelse på nettbrett og enheter med foldbare skjermer har fortsatt. Anbefalingene for utvikling av applikasjoner for store skjermer er oppdatert, og det er lagt til maler for brukergrensesnitt for store skjermer, som tar hensyn til bruksområder som sosiale nettverk, kommunikasjon, multimedia, lesing og shopping. En tidlig versjon av Cross device SDK er foreslått, med verktøy for å utvikle applikasjoner som fungerer korrekt på ulike typer enheter (smarttelefoner, nettbrett, smarte TV-er, osv.) og ulike formfaktorer.
- Det har blitt utført optimalisering av koordinasjonen av ressurskrevende bakgrunnsarbeid, som nedlasting av store filer når Wi-Fi-tilkobling er tilgjengelig. Endringer er gjort i API-en for å starte prioritetsjenester (Foreground Service) og planlegging av oppgaver (JobScheduler), hvor ny funksjonalitet for brukerinitierte oppgaver relatert til datatransfer er lagt til. Krav om å spesifisere typen for prioriterte tjenester (arbeid med kamera, datasykronisering, multimediaavspilling, posisjonssporing, tilgang til mikrofon osv.) er innført. Vilkårene for aktivering av datanedlasting er forenklet, for eksempel for nedlasting kun ved tilgang via Wi-Fi.
- Det interne systemet for levering av kringkastingsmeldinger til applikasjoner (broadcast system) er optimalisert for å redusere strømforbruket og forbedre responsiviteten. Mottak av registrerte meldingsstrømmer i applikasjoner er forbedret – meldinger kan settes i kø, slås sammen (for eksempel vil en serie meldinger om BATTERY_CHANGED bli aggregert til én) og leveres først etter at applikasjonen har gått ut av den cachede tilstanden.
- Grensen for maksimalt antall bufrede applikasjoner er økt, noe som har redusert antallet applikasjoner som startes i «kald» modus (dvs. ikke bufret i minnet og som starter tregere). For enheter med 8 GB RAM har antallet «kald» oppstarter av applikasjoner etter endring av begrensningene blitt redusert med 20 %, og med 12 GB – med 30 %.
- Bruken av den nøyaktige tidsutførelsesfunksjonen i applikasjoner (exact alarms) krever nå en egen tillatelse SCHEDULE_EXACT_ALARM, da anvendelse av denne funksjonaliteten kan påvirke batterilevetiden negativt og føre til økt ressursforbruk (for oppgaver som utføres etter en tidsplan, anbefales det å bruke aktivering på omtrentlig tid). Applikasjoner som implementerer kalender og klokker, som bruker aktivering på nøyaktig tid, må ved installasjon ha tillatelsen USE_EXACT_ALARM. Publisering i Google Play-katalogen av applikasjoner med tillatelse USE_EXACT_ALARM er kun tillatt for programmer med implementering av vekkerklokker, tidtakere og kalendere med hendelsesvarsler.
- Det er nå mulig å spesifisere språkinnstillinger knyttet til individuelle applikasjoner. Utvikleren av applikasjonen kan nå endre localeConfig-parametere via anropet LocaleManager.setOverrideLocaleConfig for å definere listen over språk som vises for applikasjonen i Androids innstillingsgrensesnitt.
- API for Grammatical Inflection er lagt til for å forenkle tillegg av oversettelser av grensesnittselementer som tar hensyn til språk med kjønnsystem.
- For å hindre at ondsinnede applikasjoner nærmer seg intent-forespørslene, er det i den nye versjonen forbudt å sende intents uten å spesifisere pakken eller den interne komponenten tydelig.
- Sikkerheten for dynamisk kodeinnlasting (DCL, Dynamic Code Loading) er forbedret - for å unngå innsetting av ondsinnet kode i dynamisk lastede kjørbare filer, må disse filene nå ha tilgangsrettigheter som kun tillater lesing.
- Installasjon av applikasjoner som har en SDK-versjon lavere enn 23 er forbudt, noe som vil blokkere omgåelse av myndighetsbegrensninger gjennom binding til gamle API-er (API-versjon 22 er forbudt, siden det i versjon 23 (Android 6.0) er en ny tilgangsstyringsmodell som lar brukeren be om tilgang til systemressurser på farten). Tidligere installerte applikasjoner som bruker gamle API-er, vil fortsette å fungere etter oppdatering av Android.
- API Credential Manager er foreslått, som lar applikasjoner organisere innlogging ved bruk av legitimasjon fra eksterne autentiseringstjenester. Støtte for Passkeys-teknologien er implementert, som lar brukeren autentisere seg uten passord ved bruk av biometriske identifikatorer som fingeravtrykk eller ansiktsgjenkjenning. Brukergrensesnittet for valg av konto er forbedret.
- I Android Runtime (ART) er støtten for OpenJDK 17 implementert. De grunnleggende Java-bibliotekene på plattformen og verktøyene for applikasjonsutvikling er oppdatert til OpenJDK 17. Støtte for de språklige funksjonene og Java-klassene tilgjengelig i OpenJDK 17 er lagt til, for eksempel record-klasser, flerdimensjonale strenger og mønstermatching i «instanceof»-operatøren.
- I Android Runtime er det benyttet mer avanserte kompresjonsmetoder, noe som har resultert i et gjennomsnittlig filstørrelsesreduksjon på 9,3 % uten at ytelsen ble svekket.
- Metoden for oppdatering av sertifikater fra sertifiseringsmyndigheter (CA) er endret. Systemsertifikater vil ikke lenger være knyttet til fastvare, men vil bli levert som en egen pakke, oppdatert via Google Play. Denne tilnærmingen vil forenkle vedlikeholdet av gjeldende sertifikater og fjerne sertifikater fra kompromitterte sertifiseringsmyndigheter, samt hindre enhetsprodusenter fra å manipulere listen over rotsertifikater, og gjøre prosessen for oppdatering uavhengig av oppdateringer av fastvare. På den annen side vil den nye leveringsmetoden ikke tillate brukeren å foreta endringer i systemsertifikatene, selv om han har root-tilgang i systemet og full kontroll over fastvaren.
Kilde: opennet.ru









