Googleov Android inženjerski tim ugostio je AMA na Redditu kako bi odgovorio na pitanja o Androidu 11. Evo što smo naučili o sljedećoj verziji OS-a Android.
Google je jučer objavio Android 11 beta 2, donoseći finalizirani SDK, NDK, površine okrenute prema aplikacijama, ponašanja platforme i ograničenja na ne-SDK sučeljima za programere. Danas Google odgovara na pitanja vezana uz Android 11 na Redditovoj /r/AndroidDev zajednici nakon postavljanja pitanja prošli tjedan. Evo sažetka svega što smo naučili od Googleove AMA (Ask Me Anything).
Jedna od najočekivanijih značajki Androida 11 neće biti dostupna kada OS izlazi iz beta verzije 8. rujna: Pomicanje snimaka zaslona. U početku planirano za lansiranje u Androidu 11, Google je sada potvrdio da značajka "nije uspjela za R." Android 11 Developer Preview 1 i sva sljedeća DP i Beta izdanja imaju gumb rezerviranog mjesta za snimanje snimke zaslona koja se može pomicati ručno pojavio skrivenom naredbom programera, ali dodirivanje gumba jednostavno prikazuje tost poruku u kojoj stoji da značajka "nije implementirana".
Nadali smo se da će značajka dospjeti u beta verziju ili čak samo u stabilno izdanje, ali izgleda da se to jednostavno neće dogoditi.
Razumljivo je da će ove vijesti uznemiriti neke korisnike. Uostalom, mnogi proizvođači originalne opreme već godinama imaju ovu značajku u vlastitom softveru, pa zašto je Googleu trebalo toliko dugo da je doda Pixel telefonima? Kako je objasnio Dan Sandler iz Googleovog System UI tima, problem je u tome što Google želi to učiniti kako treba. Neke implementacije snimki zaslona s pomicanjem jednostavno oponašaju pomicanje i spajaju više snimki zaslona dok se zaslon pomiče. Ako ste ikada imali posla s automatizacijom korisničkog sučelja na Androidu, znat ćete da to ne radi uvijek jer, kao što g. Sandler spominje, aplikacije mogu koristiti "močvarni standardni RecyclerView ili implementirati vlastiti OpenGL-ubrzani motor za pomicanje." Budući da Google planira implementirati ovu značajku ne samo za Pixel pametne telefone, već i za cijeli Android ekosustav kao dio AOSP-a, moraju osigurati radit će dalje svi aplikacije, a ne samo "jedna ili dvije ručno odabrane aplikacije na određenom uređaju".
Budući da je tim morao "usmjeriti [svoje] ograničene resurse," posebno zbog izazova koji su nastali do COVID-19, tim je odlučio staviti skrolirajuće snimke zaslona u drugi plan za buduće izdanje Androida.
Novi CDD zahtjev za obavještavanje korisnika o pozadinskim ograničenjima
Nije tajna da mnogi proizvođači originalne opreme za Android, osobito kineski, imaju oštra ograničenja za aplikacije koje rade u pozadini. Neki razvojni programeri bili su toliko frustrirani time što su im se aplikacije ugasile u pozadini da su se udružili kako bi napravili web mjesto pod nazivom "Nemoj ugasiti moju aplikaciju" za rangiranje OEM-ova na temelju toga koliko loše rukuju pozadinskim procesima aplikacija. Ti isti programeri čak i nedavno napravio mjerilo tako da korisnici mogu testirati koliko agresivno njihov uređaj ubija aplikacije u pozadini. Razlog zašto mnogi OEM-ovi vole ubijati pozadinske procese aplikacija je kompliciran, ali mislim da je najbolje objašnjen u ovom komentaru Redditora /u/eventualno upitno. Komentar ocrtava kompliciran status razvoja Android aplikacija u Kini, kako kineske tehnološke tvrtke uključeni u daljnje kompliciranje stvari i kako nedostatak Googleovih usluga pridonosi tome nered.
Bez obzira na to, mnogi programeri aplikacija razumljivo su frustrirani ovim promjenama u ponašanju Android platforme, što je rezultiralo razvojnim programerima koji su komentirali pitajući Google što radi u vezi s tim na vrh Reddit AMA. Evo Googleovog odgovora:
Postoji nekoliko stvari koje treba uzeti iz ovog odgovora. Prvo, Google želi da proizvođači originalne opreme budu transparentniji s korisnicima o ograničenjima pozadinskih aplikacija koje primjenjuju. Provjerio sam (neobjavljeni) Android 11 Compatibility Definition Document (CDD) i pronašao sljedeći predloženi dodatak Odjeljku 3.5 – API Behavioral Compatibility:
Ako implementacije uređaja implementiraju vlasnički mehanizam za ograničavanje aplikacija i taj je mehanizam restriktivniji od "Rijetkog" spremnika na AOSP-u, oni:
[C-1-5] MORA obavijestiti korisnike ako se ograničenja aplikacije automatski primjenjuju na aplikaciju. (NOVO) Takve se informacije MORAJU dati prije 24 sata prije primjene takvih ograničenja.
(Napomena) Prisilno zaustavljanje smatra se restriktivnijim od "Rijetkog" i MORA zadovoljiti sve zahtjeve pod 3.5.1, uključujući novi 3.5.1/C-1-5
U osnovi, Google nije toliko da spriječi OEM proizvođače u implementaciji vlastitih restriktivnih značajki za uništavanje aplikacija. Zahtijevaju samo da OEM-ovi obavijeste korisnike ako se njihova ograničenja aplikacija automatski primjenjuju. OEM bi mogao prikazati dijaloški okvir da će zaustaviti pokretanje pozadinskih aplikacija koje troše bateriju pozadini, a korisnik bi mogao dati pristanak, a da nije svjestan koje aplikacije stvarno želi pokrenuti u pozadini pogođeni! Google stavlja na programere odgovornost za rješavanje slučajeva kada se njihova aplikacija neočekivano prekine u pozadini. Doista, komentar na Redditu ističe novi "razlozi za izlazak iz procesa aplikacije" API koji može reći programerima je li njihovu aplikaciju ubio korisnik, OS ili se jednostavno srušila.
S druge strane, Google se konačno bavi nepoštenom praksom OEM-a koji dopuštaju određenim privilegiranim aplikacijama da zaobiđu svoja ograničenja pozadinskih aplikacija. Ovaj srednji post programera Timothy Asiimwe ulazi u detalje o aplikacijama kao što su WhatsApp, Facebook i druge aplikacije koje su automatski izuzete od strogih pozadinskih ograničenja nekih OEM softvera. Google kaže da "zahtijevaju da proizvođači uređaja ne stvaraju popise dopuštenih za najbolje aplikacije." Ne znamo kako će se to provesti, ali dobro je znati da će proizvođači originalne opreme konačno biti prisiljeni tretirati programere trećih strana na ravnopravnoj osnovi — bez obzira koliko velike ili male bile njihove aplikacije su.
Na kraju, Google također spominje kako je Android 11 "dodao dodatne mjere za sprječavanje zlonamjernog ponašanja aplikacija koje se loše ponašaju", što OEM proizvođačima čini manje primamljivim da agresivno ubijaju pozadinske procese. Međutim, tvrtka nije pojasnila što te "dodatne mjere" podrazumijevaju.
Poboljšane sigurnosne kopije s uređaja na uređaj
Prošlog mjeseca primijetili smo promjenu u dokumentaciji za Android 11 koja nagovijestio podršku za bolje lokalne sigurnosne kopije podataka. U Androidu 11 sustav će zanemariti atribut manifesta allowBackup za bilo koju aplikaciju koja cilja API razinu 30 kada korisnik pokrene migraciju datoteka aplikacije "s uređaja na uređaj". Googleov zaposlenik Eliot Stock kaže da je ova značajka namijenjena "proizvođačima telefona da olakšaju izradu alata za migraciju s uređaja na uređaj" kao što je "Samsungov izvrstan proizvod Smart Switch" na pomoći "osigurati pouzdaniji prijenos aplikacija između uređaja iz korisničke perspektive." Nažalost, to se ne odnosi na sigurnosne kopije temeljene na oblaku jer Google želi "programerima softvera dati kontrolu oko toga što događa s njihovim podacima aplikacije." Kao takav, Android 11 će i dalje poštovati atribut allowBackup za bilo koje sigurnosno kopiranje i vraćanje temeljeno na oblaku, kao što je putem ugrađenog Google diska usluge Google Play sigurnosna kopija. Na kraju, Google priznaje da gornja granica od 25 MB po aplikaciji možda nije dovoljna za neke programere, pa traže načine kako to riješiti. Lokalne sigurnosne kopije na računalu nisu u razmatranju, a Google ponavlja svoj plan postupno isključiti adb backup u budućem Android izdanju.
Programeri se potiču da implementiraju metode migracije podataka bez problema. The nova biblioteka Block Store, koji je dio Google Identity Services Library, osmišljen je da olakša prijavu u vraćene aplikacije iz oblaka na novim uređajima, ali na programerima je da odaberu žele li to implementirati ili ne knjižnica.
Brže brzine pokretanja aplikacije s I/O procesom čitanja unaprijed (IORap)
Google uvijek eksperimentira s načinima poboljšanja performansi u Androidu. Jedna od malo poznatih značajki koju su dodali u Android 10 zove se Unspecialized App Process Pool (USAP). Ova značajka eliminira račvanje Zygotea tijekom procesa pokretanja aplikacije, čime se štedi približno ~5 ms prosječne brzine pokretanja aplikacije na uređaju Pixel 2. Značajka je trenutno onemogućeno prema zadanim postavkama u AOSP-u, a Google objašnjava da njegovu dodatnu upotrebu memorije još treba testirati. Međutim, ono što je još zanimljivije je nova značajka koja dolazi na Android 11 pod nazivom I/O Read Ahead Process (IORap). Prema Googleu, ova će značajka dovesti do "više od 5% bržih hladnih pokretanja s herojskim slučajevima koji će doseći 20% brže." Ova značajka "prethodno će dohvatiti artefakte aplikacija (poput koda i resursa) tijekom procesa pokretanja" za pospješivanje pokretanja aplikacije brzine.
Google je također "napravio poboljšanja profila koji se koriste za optimizaciju staze klase za pokretanje i slike sustava" što će poboljšati performanse aplikacije i smanjiti troškove memorije i pohrane povezane sa sustavom artefakti. Ove će promjene uglavnom koristiti uređajima s većom količinom RAM-a, iako Google nije rekao koja je granica za koju ćemo vidjeti najviše prednosti.
Promjene u opsegu pohrane za Android 11 - Zašto je pristup /Preuzimanja ograničen?
Aplikacije koje ciljaju na Android 11 i koriste namjeru ACTION_OPEN_DOCUMENT_TREE za traženje pristupa određenim direktorijima na vanjskoj pohrana više neće moći tražiti od korisnika pristup korijenskom direktoriju vanjske pohrane (/data/media/{user}), preuzimanje direktorij (/data/media{user}/Download) ili bilo koji od direktorija podataka specifičnih za aplikaciju na vanjskoj pohrani (/Android/data ili /Android/obb). Zašto je pristup direktoriju za preuzimanje ograničen? Prema Google Roxanna Aliabadi, to je zato što je mapa za preuzimanje "najviše izložena riziku od privatnih informacija." Kao primjer, korisnici koji preuzimaju svoj porez povrata ili bankovnih izvoda ne bi trebali brinuti o mogućnosti da aplikacije zlorabe svoj stalni pristup za čitanje imenik. Google kaže da će birač dokumenata imati "ažurirani tekst... koji označava da je Android ograničio određene mape koje će biti odabrane." Nadamo se da će to smanjiti zabunu oko toga zašto aplikacijama ne mogu odobriti pristup određenim direktorijima više.
Za više informacija o nadolazećim promjenama pravila o ograničenoj pohrani i igri, pogledajte ovaj članak.
Razne teme
-
Googleov stav o rootanju/modingu
- Jeff Bailey iz Googleovog AOSP tima ponavlja stav tvrtke o podržavanju izbora. Google će "nastaviti osiguravati da je moguće modificiranje/rootiranje Pixel linije uređaja", ali će također "podržati izbor OEM-ova da ne dopuste svojim uređajima biti ukorijenjen." Nadalje, Google razvojnim programerima softvera daje izbor "da ne dopuste pokretanje svog softvera na ukorijenjenim uređajima", u odnosu na nedavne promjene u otkrivanje neovlaštenog softvera SafetyNet Attestation API-ja.
-
Što se dogodilo s "otvori i postavi na zadano"?
- Napravljen Android 10 malo je neugodno postaviti aplikaciju kao zadanog rukovatelja za određene veze, za što Google kaže da je učinjeno kako bi zaštitio korisnike od "eksploatirajućih aplikacija". Google se povukao o ovoj promjeni nakon ponovnog promišljanja, praveći "niz promjena iza kulisa" kako bi zaštitili korisnika.
-
Koristite li Vulkan Graphics API za renderiranje korisničkog sučelja?
- Google na kraju planira koristiti Vulkan Graphics API za renderiranje korisničkog sučelja, što će dovesti do nekih poboljšanja performansi. Ovo je još se procjenjuje, ali tvrtka nije imala nikakve detalje za podijeliti.
-
Nedostaje CallScreeningService na mnogim uređajima
- Android aplikacije mogu implementirati CallScreeningService API za presretanje novih dolaznih i odlaznih poziva, omogućujući im da identificiraju pozivatelja i prihvate ili odbiju poziv. Iako je ovo službeno dokumentirani API, očito postoji mnogo OEM-ova koji ga ne implementiraju ispravno, prema programeru /u/_zeromod_. Google potvrđuje da je ovaj API potvrđen od strane Compatibility Test Suite (CTS), automatiziranog testa koji svi uređaji moraju proći da bi se smatrali kompatibilnim s Androidom. Iz bilo kojeg razloga, ovaj API vraća nulu kada ga pozovu uređaji OEM-a kao što su Huawei, Vivo, Xiaomi ili Samsung, pa je vjerojatno da ti OEM-i imaju grešku u svom softveru.
-
Nema planova za okvir audio dodataka
- Programer je pitao Google planiraju li implementirati okvir audio dodataka poput Appleovih audio jedinica, ali odgovor je da se to vjerojatno neće dogoditi u bliskoj budućnosti.
Možete pročitati sve odgovore Android inženjerskog tima ovdje. Tim govori nešto o Javi, Kotlinu, sustavu za izradu Androida, CameraX API-ju i drugim temama u nekoliko komentara. Postoji i nekoliko komentara o Wear OS-u, Android TV-u i Android Auto-u, ali Google uglavnom ponavlja njihov postojeći rad na tim platformama i govori programerima da ostanu s nama za više informacija tijekom "Android izvan telefona" tjedan koji počinje 10. kolovoza.