Compania Google a publicat versiunea platformei mobile open-source Android 17. Codul sursă asociat cu această nouă versiune este disponibil în depozitul Git al proiectului (ramura android-17.0.0_r1). Versiunile firmware-ului au fost pregătite pentru dispozitivele Pixel 6/6a/6 Pro, Pixel 7/7a/7 Pro, Pixel 8/8a/8 Pro, Pixel 9/9a/9 Pro/9 Pro XL/9 Pro Fold, Pixel 10/10 Pro/10 Pro XL/10 Pro Fold, Pixel Fold și Pixel Tablet. Versiunile preliminare ale firmware-ului sunt disponibile pentru dispozitivele HONOR, iQOO, Lenovo, OnePlus, OPPO, realme, Sharp, vivo și Xiaomi. În procesul de formare sunt create versiunile universale GSI (Generic System Images), compatibile cu diverse dispozitive bazate pe arhitecturile ARM64 și x86_64.
Printre schimbări (1, 2, 3):
- A fost adăugat un nou mod de lucru cu feronerie — „Bubbles”, care permite lansarea oricăror aplicații în feronerie plutitoare, asemănătoare cu notificările pentru trimiterea mesajelor afișate deasupra altui conținut („bule”), dar care nu sunt legate de un API specializat. Deschiderea aplicației într-o fereastră plutitoare se face prin menținerea apăsată a pictogramei aplicației. Pe ecranele mari, pictogramele feroneriilor plutitoare sunt afișate într-o zonă separată pe bara de sarcini. Aceste feronerie pot fi grupate, mutate și fixate pe ecran.

- Dezvoltarea platformei pentru dispozitive cu ecrane mari, precum tablete, laptopuri, sisteme desktop și smartphone-uri cu ecrane pliabile, a fost continuată. Au fost eliminate opțiunile anterioare care deconectau noul comportament pe dispozitivele cu ecrane mai largi de 600 de pixeli condiționați (dp), legate de ignorarea unor API-uri pentru controlul schimbării dimensiunii și orientării ecranului (screenOrientation, resizeableActivity, [min|max]AspectRatio), precum și de plasarea adaptivă a aplicațiilor în feronerie care permit redimensionarea și mutarea pe ecran.


- A fost adăugat API-ul de sistem EyeDropper API, prin care aplicația poate obține informații despre culoarea oricărui pixel de pe ecran fără a necesita permisiunea de a captura ecranul. Securitatea este asigurată deoarece utilizatorul își alege singur zona pentru determinarea culorii printr-o interfață gestionată de platformă cu „pipeta”, care nu este controlată de aplicație, adică aplicația nu poate solicita informații despre un pixel specific și reconstrui conținutul ecranului pixel cu pixel.

- A fost adăugat un interfață sistemică pentru selectarea contactelor din agenda telefonică, accesul la care este oferit prin obținerea permisiunii ACTION_PICK_CONTACTS. Interfața permite evitarea necesității de a acorda permisiunea READ_CONTACTS, care permite citirea tuturor datelor de contact. Atunci când se apelează noua interfață, utilizatorul decide ce informații din agenda telefonică să fie transmise aplicației, având posibilitatea de a selecta doar anumite câmpuri.

- A fost adăugată API-ul PhotoPickerUiCustomizationParams pentru modificarea interfeței de selecție a fotografiilor, permițând astfel apropierea acesteia de stilul aplicației apelante. De exemplu, se poate schimba raportul de aspect al miniaturilor fotografiilor de la 1:1 (pătrat) la 9:16 (portret).

- A fost adăugată permisiunea USE_LOCATION_BUTTON, care permite integrarea într-o aplicație a unui buton sistemic pentru furnizarea accesului la datele precise despre locație. Butonul este desenat de sistem și, după ce utilizatorul îl apasă, deschide accesul la locație doar pe durata sesiunii curente.

- A fost adăugată o setare care permite eliminarea afișării numelui aplicației sub pictogramele acesteia.

- A fost modificat designul barei de instrumente pentru înregistrarea screencast-urilor.

- A fost adăugată suportul pentru reacții pe ecran (Screen Reactions), care combină înregistrarea video de la camera frontală cu crearea de screencast-uri pentru a adăuga comentarii la acțiunile de pe ecran.
- A fost adăugată un mod pentru jocuri pe dispozitive cu ecrane pliabile, în care o jumătate a ecranului pliabil este folosită pentru afișarea jocului, iar cealaltă pentru un gamepad virtual.

- A fost adăugată API-ul Handoff, care permite transferarea stării aplicației pe un alt dispozitiv Android aflat în apropiere (de exemplu, o tabletă) pentru a continua activitatea acolo.

- Au fost implementate feronieruri interactive fixate, care, spre deosebire de feronierile tradiționale în modul „imagine în imagine” (Picture-in-Picture), rămân interactive atunci când sunt fixate deasupra altor aplicații în modul desktop.
- Au fost adăugate două noi API-uri: API-ul UWB DL-TDOA – determinarea poziției unui dispozitiv în interiorul clădirilor folosind Wi-Fi pentru navigația în interior; API-ul Proximity Detection pentru detectarea dispozitivelor aflate în apropiere prin Wi-Fi.
- A fost adăugat suport pentru formatul video VVC (Versatile Video Coding), cunoscut și sub numele de standard de compresie video H.266, dezvoltat în colaborare de grupurile de lucru MPEG (ISO/IEC JTC 1) și VCEG (ITU-T), cu participarea unor companii precum Apple, Ericsson, Intel, Huawei, Microsoft, Qualcomm și Sony. H.266 înlocuiește H.265 (HEVC) și asigură o eficiență ridicată în transmiterea și stocarea tuturor rezoluțiilor de ecran (de la SD și HD la 4K și 8K), suportând video cu interval dinamic extins (HDR, High Dynamic Range) și video panoramic în modul 360 de grade.
- A fost adăugată posibilitatea de a înregistra video cu un nivel constant de calitate. Modul este configurat în obiectul MediaRecorder, folosind metoda setVideoEncodingQuality(), care permite fixarea nivelului de calitate fără legare de bit rate.
- A fost adăugat suport pentru formatul de imagini RAW14, utilizat în camerele digitale profesionale și care asigură stocarea a 15 biți pe canal de culoare.
- A fost adăugat suport pentru formatul video HDR Eclipsa.
- A fost adăugat un codec software pentru formatul audio HE-AAC (High-Efficiency Advanced Audio Coding), care suportă atât bit rate-uri mici, cât și mari.
- A fost adăugat o nouă permisiune ACCESS_LOCAL_NETWORK pentru a restricționa accesul aplicațiilor la rețeaua locală. Existența acestei permisiuni permite aplicațiilor să identifice și să se conecteze la dispozitive din rețeaua locală, cum ar fi dispozitivele inteligente din casă și sistemele multimedia. Permisiunea a fost adăugată pentru a bloca scanarea resurselor din rețeaua locală de către aplicații malițioase, de exemplu, pentru identificarea ascunsă a mediuului utilizatorului.
- A fost extinsă protecția împotriva interceptării parolelor unice (OTP) și codurilor de confirmare trimise prin SMS. Accesul direct la astfel de mesaje este acum disponibil majorității aplicațiilor doar la trei ore după ce mesajul a fost primit. În aplicația standard pentru citirea SMS-urilor, astfel de mesaje sunt afișate imediat.
- A fost implementată protecția împotriva apelurilor frauduloase din partea celor care se prezintă ca angajați ai băncii. Platforma poate interacționa cu aplicațiile bancare instalate pentru a confirma că apelul a fost inițiat de bancă. De asemenea, băncile pot determina numerele de telefon pe care se permit doar apeluri primite.
- A fost adăugată posibilitatea de a acorda aplicațiilor acces temporar la datele despre locația exactă, valabil doar pentru sesiunea curentă de utilizare a aplicației.
- Mecanismul de protecție a încărcării dinamice a codului (DCL, Dynamic Code Loading) a fost extins pentru a se aplica bibliotecilor native încărcate prin metoda System.load(), nu doar
fișierele din formatele DEX și JAR. DCL permite evitarea înlocuirii codului malițios în fișierele executabile încărcate dinamic, prin stabilirea drepturilor de acces pentru aceste fișiere, care permit doar citirea. - A fost activat implicit mecanismul Certificate Transparency, care menține un jurnal public al tuturor certificatelor emise și revocate,
- S-a oferit posibilitatea de a semna pachetele APK cu o semnătură digitală bazată pe un algoritm hibrid, care combină un algoritm clasic cu algoritmul ML-DSA, rezistent la atacuri cu computere cuantice.
- Pentru aplicațiile care rulează în fundal, accesul la API-ul pentru redarea sunetului, conectarea la dispozitive sonore și modificarea volumului este limitat. Se consideră că doar aplicațiile active, cu care utilizatorul interacționează în prezent, pot începe redarea și modifica volumul.
- A fost adăugat suport pentru criptografia hibridă bazată pe mecanismul HPKE (Hybrid Public Key Encryption, RFC 9180), care combină simplitatea transferului cheiei în criptarea cu cheie publică cu performanța ridicată a criptării simetrice (datele sunt criptate cu o cheie simetrică rapidă, iar cheia este criptată cu o cheie asimetrică lentă).
- La introducerea parolelor și codurilor PIN folosind o tastatură fizică, afișarea ultimului caracter introdus în timpul tastării este dezactivată implicit.
- Pentru a simplifica implementarea suportului pentru touchpad-uri în jocuri, a fost unificată procesarea evenimentelor de la mouse și touchpad – implicit, evenimentele touchpad-ului legate de mișcarea cursoului și gesturile de defilare sunt acum transformate în format cu coordonate relative, la fel ca pentru mouse. Accesul la coordonatele absolute este oferit prin specificarea explicită a modului POINTER_CAPTURE_MODE_ABSOLUTE.
- În obiectul ChooserSession a fost adăugat metoda getInitialRestingBounds(), care permite aflarea poziției finale și dimensiunii dialogului de selecție (Chooser) după încetarea animației și încărcarea datelor.
- Au fost adăugate metodele getStreamingAppMaxDownlinkKbps și getStreamingAppMaxUplinkKbps pentru a determina lățimea de bandă maximă a canalului de comunicare, având scopul de a alege nivelul de calitate pentru transmisia în flux.
- Producătorii de echipamente au primit un API pentru a crea extensii pentru camere, care să permită utilizarea unor funcționalități specifice în aplicații, cum ar fi mecanismul de îmbunătățire a detaliilor Super Resolution, moduri de reducere a zgomotului și AI-optimizatori de calitate.
- A fost adăugat un API pentru a obține informații despre tipul de cameră (cameră încorporată, cameră conectată prin USB sau cameră virtuală).
- S-a adăugat suport pentru aparatele auditive conectate prin interfața Bluetooth Low Energy (BLE). Aceste dispozitive au fost incluse într-o nouă categorie TYPE_BLE_HEARING_AID, permițând aplicațiilor să diferențieze aparatele auditive de căști și să gestioneze separat redarea sunetelor sistemului (de exemplu, se pot reda sunetele notificărilor, apelurilor și alarmelor pe difuzorul încorporat al telefonului, nu pe aparatul auditiv).
- Au fost adăugate setări separate pentru activarea afișării parolei introduse pe tastatura fizică și pe ecranul tactil. Implicit, simbolurile parolei introduse prin tastatura fizică sunt imediat ascunse.
- A fost îmbunătățită afișarea widget-urilor aplicațiilor pe ecranele externe, prin luarea în considerare a diferenței de DPI la scalare.
- A fost adăugat un apel ACTION_VPN_APP_EXCLUSION_SETTINGS, prin care se poate deschide ecranul sistemului cu setările ce permit accesul rețelei aplicației prin ocolire. VPN-tunelului.
- A fost adăugat suport pentru funcționalitățile disponibile în OpenJDK 25 ale limbajului și claselor Java.
- Au fost extinse capacitățile interfețelor de programare pentru lucrul cu camera. În obiectul CameraCaptureSession a fost adăugat metoda updateOutputConfigurations() pentru a atașa sau dezactiva dinamic zonele de ieșire fără a necesita reproiectarea întregului sesiunii de captură a datelor de la cameră. În practică, această modificare permite realizarea unei comutări fluente între diferitele moduri de operare ale camerei (de exemplu, înregistrarea video și fotografierea). Atunci când se lucrează cu camere logice care acoperă mai mulți senzori fizici, s-a adăugat posibilitatea de a obține metadate despre fiecare senzor, nu doar despre cel principal.
- A fost declarat vechi atributul android:usesCleartextTraffic, care permitea aplicației să transmită trafic necriptat, de exemplu, solicitările prin „http://”. Dacă este necesară utilizarea traficului necriptat, ar trebui folosite fișiere separate cu setări de securitate.
- Au fost adăugate setări pentru gestionarea istoricului apelurilor VoIP, permițând controlul asupra păstrării informațiilor în jurnale și afișarea în interfață a informațiilor despre apelurile efectuate.
- În API-ul Wi-Fi RTT (Round-Trip-Time) au fost extinse posibilitățile de determinare continuă a distanței aproximative față de punctele de acces și de determinare sigură a nodurilor pentru conexiuni P2P (peer-to-peer).
- În CompanionDeviceManager au fost adăugate noi profiluri pentru solicitarea permisiunilor și interacțiunea aplicațiilor cu dispozitivele medicale și brățările de fitness.
- În Android Runtime (ART) a fost implementat un colector de gunoi de generație (Generational Concurrent Mark-Compact Garbage Collector), care utilizează procesarea separată a obiectelor „vechi” și „tinere”, ceea ce îmbunătățește eficiența curățării obiectelor recent create cu o durată scurtă de viață. Utilizarea colectorului de gunoi de generație reduce riscul de suspendări în timpul alocării resurselor și scade sarcina pe CPU, ceea ce îmbunătățește eficiența consumului de energie.
- A fost implementată o restricție privind cantitatea maximă de memorie RAM pe care o poate utiliza aplicația. Dacă limita, calculată pe baza RAM-ului disponibil pe dispozitiv, este depășită, aplicația se închide forțat. Pentru reducerea dimensiunii memoriei consumate, a fost propus R8 Optimizer, care îmbină numele claselor, metodelor și câmpurilor, precum și elimină codul și resursele nefolosite.
- La compilarea nucleului Linux a fost inclusă optimizarea AutoFDO (Auto-Feedback-Directed Optimization), care utilizează rezultatele profilării cu informații despre frecvența de execuție a diferitelor porțiuni de cod pentru a îmbunătăți performanța operațiunilor frecvent executate. În testele efectuate, activarea AutoFDO pentru nucleu a dus la o reducere a timpului de boot cu 2,1%, la accelerarea primului lansări a programelor cu 4,3%, la îmbunătățirea eficienței apelurilor de sistem cu 9,3%, la reducerea timpului de execuție al tranzacțiilor mmap de Binder cu 12,3%, HwBinder cu 20% și Binder RPC cu 21,7%.
- Oferită o nouă implementare a cozii de mesaje android.os.MessageQueue, funcționând fără blocări. Noua implementare permite creșterea performanței și reducerea pierderii de cadre.
- Aplicațiilor care declară suport pentru Android 17 și versiuni mai noi le este interzis să modifice valorile câmpurilor marcate ca «static final», ceea ce permite utilizarea unor optimizări mai agresive a performanței la runtime.
- Pentru a reduce consumul de memorie, dimensiunea propriilor layout-uri de notificare (notification view) este limitată.
- ProfilingManager a fost îmbogățit cu trigger-uri suplimentare TRIGGER_TYPE_COLD_START, TRIGGER_TYPE_OOM și TRIGGER_TYPE_KILL_EXCESSIVE_CPU_USAGE pentru colectarea de date utile în diagnosticarea problemelor de performanță.
Sursa: opennet.ro











