Android Q ulatusega salvestusruum sunnib arendajaid kasutama SAF-i, mis on nõme

click fraud protection

Android Q ulatusega salvestusruumi muudatused valmistavad peavalu, sest Storage Access Frameworkil on praegu mõned vead.

Android Q muudab põhjalikult seda, kuidas salvestus teie telefonis töötab. Igas versioonis kuni Pieni töötas Androidi salvestusruum nagu lauaarvuti: saate kasutada mis tahes rakendust, mida soovite lugeda või mis tahes faili kirjutada (kui annate rakendusele selleks loa). Q-ga tutvustab Google (ja nõuab) "Ulatuslik salvestusruum”, mis paneb Androidi rohkem töötama nagu iPhone, kus salvestusruum on iga rakenduse jaoks eraldatud. Rakendus pääseb juurde ainult oma failidele ja kui see desinstallitakse, kustutatakse kõik selle failid.

Õnneks säilitab Android Q endiselt osa Androidi algsest keskse failisüsteemi käitumisest. Kahjuks on kasutajal nüüd tülikas seadistada rakendusi, et sellele juurde pääseda ning selle jõudlus ja võimekus on oluliselt vähenenud. Ja arendajad peavad selle toetamiseks rakendused oluliselt ümber kodeerima.

Rakendused, mis vajavad üldist failisüsteemi juurdepääsu, nt. kontorikomplekt, pildiredaktor või failihaldur peab nüüd kasutama Android API-d nimega "

Storage Access Framework" (SAF) kõigi failitoimingute jaoks. SAF on olnud saadaval alates Android 5.0 Lollipopist, kuid arendajad ei kasuta seda, kui seda pole vaja, kuna sellel on keeruline ja halb dokumenteeritud API, kehv kasutajakogemus, kehv jõudlus ja halb töökindlus (peamiselt seadme tarnijapõhise juurutuse näol küsimused). SAF-ile ülemineku raskuste tõttu otsustas Google lubada rakendused, mis veel ei näita Android Q tugi töötab nagu vanasti, kuid see muutub, kui Play pood nõuab, et kõik rakendused toetaksid Q-d järgmine aasta.

SAF-i kõige ilmsem kasutajale suunatud muudatus on rakendusele juurdepääsu andmine salvestusruumile. Rakenduse juurdepääsu saamiseks esitab see taotluse OS-ile, mis seejärel kuvab kataloogivalija ekraani. Sellel ekraanil valib kasutaja kaustahierarhia juure, kus see rakendus saab faile lugeda ja kirjutada. Kasutaja peab selle protsessi läbima iga rakenduse puhul, mis nõuab juurdepääsu kohalikele failidele, või kaks korda rakenduse kohta, kui tal on vaja anda sellele juurdepääs ka välisele SD-kaardile.

Google parandas seda protsessi vähemalt Q beeta 3, kuna varasemad beetaversioonid ei võimaldanud rakendusel isegi soovitada asukohta, mille kasutaja saaks valida nõudis kasutajalt üsna palju tööd oma seadme peamise salvestusruumi leidmiseks.

Failide sisend-/väljundjõudlus on SAF-i puhul mõnevõrra tabanud, kuid kõige silmatorkavam probleem seisneb failis kataloogioperatsioonid, kus see on ~25 kuni 50 korda aeglasem kui tavaline failijuurdepääs. Pirukas. Failihaldurite puhul tähendab see, et otsingute ja salvestusruumi kasutamise arvutuste tegemiseks kulub suurusjärgus rohkem aega. Veaaruanne koos esitlusrakendusega on saadaval siin.

SAFTesti näidiskatse, mis näitab jõudluse erinevust tavapärase faili-I/O API ja SAF-i vahel.

Veelgi suurem jõudlusega seotud probleem on see, et mõned rakendused peavad kopeerima failid oma kohalikku "ulatusliku salvestusruumi" alale, enne kui nad saavad nendega töötada. See võib olla problemaatiline, kui sellised failid on mitme gigabaidi suurused, nt. videofailide või tihendatud arhiivide puhul. Paljud Androidi rakendused kasutavad ära hämmastavalt palju avatud lähtekoodiga Java-teeke arendajate kogukonnas ja need teegid nõuavad tavaliselt töötamiseks otsest juurdepääsu failisüsteemile. Need ei ole Android-spetsiifilised ja vajaksid SAF-iga töötamiseks ümberkirjutamist. Veelgi hullem, paljud Androidi sisemised teegid, näiteks paketihaldur või ZIP-API, ei tööta sellega. Näiteks ei saa failihaldur isegi kuvada APK-faili ikooni (kasutades standardset Android API-d), ilma et kopeeriks kõigepealt kogu APK oma salvestusalasse. Veateade.

Tehniliselt kalduvatel inimestel on praegu võimalik keelata Android Q "Scoped Storage" rakendusepõhiselt ADB kaudu, kasutades käsku appops. Juurkasutajad saavad käske täita otse oma seadmes ilma lauaarvutita. Selliseid käske kirjeldatakse dokumentatsioonis arendaja funktsioonidena ja seetõttu võib need igal ajal eemaldada.

Rakenduse üldise salvestusruumi juurdepääsu lubamine:

adb shell cmd appops set your-package-name android: legacy_storage allow && \adb shell am force-stop your-package-name

Rakenduse üldise salvestusruumi juurdepääsu keelamine:

adb shell cmd appops set your-package-name android: legacy_storage default && \adb shell am force-stop your-package-name

Google toob esile selle muudatuse turvalisuse ja privaatsuse eelised, kuid tehniliselt pole paranemist. Rakendustel on olnud võimalus faile privaatselt salvestada alates Android 1.0-st ja peaaegu kõik rakendused kasutavad seda võimalust. Kui annate rakendusele SAF-i kaudu juurdepääsu oma salvestusruumi juurkataloogile, saab see lugeda, kirjutada ja saata mis tahes faile. soovib oma alatu arendaja poole samamoodi nagu siis, kui andsite rakendusele juurdepääsu Pie salvestusruumile.

Ainus "turvatäiustus" tuleneb sellest, et see on nüüd kasutaja jaoks keerulisem protsess. Välja arvatud juhul, kui rakendus soovib varastada ainult teie kõige isiklikumat teavet, nagu teie fotod ja videod võetud, mille jaoks Google on lisanud alternatiivse juurdepääsulahenduse, mis kasutab lihtsat hüpikakna kliki-jah turvalisust dialoog.

Pole teada, millist kasu Google selle muudatusega saavutada loodab. Ametlik põhjus Android Q beetaversiooni dokumentatsioonis on anda kasutajatele suurem kontroll oma failide üle ja failide piiramine segadus." Ulatuslik salvestusruum on praegusel kujul uus piirang sellele, mida kasutajal on lubatud teha, mitte nende salvestusruumi laiendus. kontroll. Väide segaduse vähendamise kohta võib olla mõneti õige, kuid ainult seetõttu, et muudatus vähendab failide kasutamise võimalust. Ja "segadus" suureneb, kui arvestada probleemiga, et mõned rakendused peavad nüüd nendega töötamiseks faile dubleerima.

Kui Google on tõesti mures kasutajatele failide ja segaduse üle suurema kontrolli andmise pärast, peaksid nad kavandama a lahendus, mis käsitleb seda otseselt, selle asemel, et praegust Android Q kujundust selliseks valeks nimetada parandamine. Lihtsaim vastus oleks lasta kasutajatel otsustada, kas nad soovivad, et rakendusel oleks ulatus või üldine failisüsteemi juurdepääs, kasutades olemasolevat salvestusloa taotlemise dialoogi. Kui kasutajad teevad siin halbu otsuseid, on see kindlasti võimalik muuta see dialoog silmapaistvamaks ja nõuda täiendavat kasutajapoolset sekkumist, et rakendus täielikult heaks kiita juurdepääs.

Vastus küsimusele, kuidas Android saab anda kasutajatele oma failide üle suurema kontrolli, on anda kasutajatele rohkem kontrolli, mitte seda ära võtta ja Androidi platvormi võimalusi põhimõtteliselt piirata.


Toimetaja märkus: see on külalisartikkel, mille on kirjutanud XDA vanem liige tliebeck, kes on tuntud oma töö poolest FX File Explorer. Selle artikli sisu kajastab tema enda arvamust ja analüüsi Android Q kohaldatava salvestusruumi piirangute kohta, minimaalse panuse ja redigeerimisega, mida tegi XDA-Developersi peatoimetaja Mishaal Rahman. Võtsime Google'iga ühendust, et küsida neilt mõne sellise probleemi kohta, kuid pole avaldamise ajaks ettevõttelt vastust kuulnud.