Android Q: n laajuinen tallennustila pakottaa kehittäjät käyttämään SAF: ää, mikä on perseestä

click fraud protection

Android Q: n Scoped Storage -muutokset aiheuttavat päänsärkyä käsitellä, koska Storage Access Frameworkissa on tällä hetkellä muutamia puutteita.

Android Q muuttaa perusteellisesti tapaa, jolla tallennus toimii puhelimessasi. Kaikissa versioissa Pieteen asti Androidin tallennustila toimi kuin pöytätietokone: voit käyttää mitä tahansa sovellusta, jota haluat lukea tai kirjoittaa mitä tahansa tiedostoa (jos annat sovellukselle luvan tehdä niin). Q: n avulla Google esittelee (ja vaatii) "Kattava tallennustila", mikä saa Androidin toimimaan enemmän kuin iPhone, jossa tallennustila on eristetty jokaiselle sovellukselle. Sovellus voi käyttää vain omia tiedostojaan, ja jos se poistetaan, kaikki sen tiedostot poistetaan.

Onneksi Android Q säilyttää edelleen osan Androidin alkuperäisestä keskustiedostojärjestelmän käytöstä. Valitettavasti käyttäjän on nyt hankala määrittää sovelluksia päästäkseen siihen, ja sen suorituskyky ja ominaisuudet ovat heikentyneet merkittävästi. Ja kehittäjien on koodattava sovelluksia huomattavasti uudelleen tukeakseen sitä.

Sovellukset, jotka tarvitsevat yleisen tiedostojärjestelmän käyttöoikeuden, esim. Office-ohjelmiston, kuvankäsittelyohjelman tai tiedostonhallinnan on nyt käytettävä Android-sovellusliittymää nimeltä "Storage Access Framework" (SAF), kaikille tiedostotoiminnoille. SAF on ollut saatavilla Android 5.0 Lollipopista lähtien, mutta kehittäjät eivät yleensä käytä sitä, ellei sitä vaadita, koska sillä on vaikea ja huono dokumentoitu API, huono käyttökokemus, huono suorituskyky ja heikko luotettavuus (lähinnä laitetoimittajakohtaisen toteutuksen muodossa ongelmat). SAF: iin siirtymisen vaikeuksien vuoksi Google on päättänyt sallia sovellukset, jotka eivät vielä ilmoita Android Q -tuki toimii entiseen tapaan, mutta tämä muuttuu, kun Play Kauppa edellyttää, että kaikki sovellukset tukevat Q: ta ensi vuonna.

Ilmeisin SAF: n käyttäjille suunnattu muutos on kokemus antaa sovellukselle pääsy tallennustilaan. Jotta sovellus saa käyttöoikeuden, se lähettää pyynnön käyttöjärjestelmälle, joka näyttää sitten hakemistonvalitsinnäytön. Tällä näytöllä käyttäjä valitsee kansiohierarkian juuren, jossa sovellus voi lukea ja kirjoittaa tiedostoja. Käyttäjän on käytävä läpi tämä prosessi jokaiselle sovellukselle, joka vaatii pääsyn paikallisiin tiedostoihin, tai kahdesti sovelluskohtaisesti, jos hän tarvitsee myös ulkoisen SD-kortin käyttöoikeuden.

Google paransi tätä prosessia ainakin Q beta 3, koska aiemmat betaversiot eivät antaneet sovelluksen edes ehdottaa sijaintia, jonka käyttäjä voi valita vaati käyttäjältä melkoisen työn löytääkseen laitteensa ensisijaisen tallennustilan.

Tiedostojen I/O-suorituskyky kärsii jonkin verran SAF: ssä, mutta merkittävin ongelma on tiedostossa hakemistotoiminnot, joissa se on ~25-50 kertaa hitaampi kuin tavallinen tiedostojen käyttö Piirakka. Tiedostonhallinnassa tämä tarkoittaa, että hakujen ja tallennustilan käytön laskelmien suorittaminen kestää suuruusluokkaa kauemmin. Virheraportti esittelysovelluksella on saatavilla täältä.

SAFTestin esimerkkitesti, joka näyttää suorituskyvyn eron perinteisen tiedosto-I/O API: n ja SAF: n välillä.

Vielä suurempi suorituskykyongelma on, että joidenkin sovellusten on kopioitava tiedostot paikalliselle "suojattu tallennusalue" -alueelle ennen kuin ne voivat työskennellä niiden kanssa. Tämä voi olla ongelmallista, kun tällaiset tiedostot ovat kooltaan useita gigatavuja, esim. videotiedostojen tai pakattujen arkistojen tapauksessa. Monet Android-sovellukset hyödyntävät hämmästyttävää määrää avoimen lähdekoodin Java-kirjastoja kehittäjäyhteisössä, ja nämä kirjastot vaativat yleensä suoran pääsyn tiedostojärjestelmään toimiakseen. Ne eivät ole Android-kohtaisia, ja ne vaativat uudelleenkirjoittamista toimiakseen SAF: n kanssa. Vielä pahempaa on, että monet Androidin omat sisäiset kirjastot, kuten paketinhallinta tai zip-sovellusliittymä, eivät toimi sen kanssa. Esimerkiksi tiedostonhallinta ei pysty edes näyttämään APK-tiedoston kuvaketta (käyttämällä Android-sovellusliittymää) kopioimatta ensin koko APK: ta omalle suojatulle tallennusalueelleen. Virhe raportti.

Teknisesti taipuvaisille ihmisille on tällä hetkellä mahdollista poistaa Android Q: n "Scoped Storage" käytöstä sovelluskohtaisesti ADB: n kautta käyttämällä appops-komentoa. Pääkäyttäjät voivat suorittaa komennot suoraan laitteellaan ilman pöytätietokonetta. Tällaiset komennot on kuvattu dokumentaatiossa kehittäjäominaisuuksina, joten ne voidaan poistaa milloin tahansa.

Salli sovelluksen yleinen tallennustila:

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

Poista sovelluksen yleinen tallennustila käytöstä:

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

Google mainitsee tämän muutoksen turvallisuuden ja tietosuojan edut, mutta teknisesti parannusta ei ole tapahtunut. Sovelluksilla on ollut mahdollisuus tallentaa tiedostoja yksityisesti Android 1.0:sta lähtien, ja melkein kaikki sovellukset käyttävät tätä ominaisuutta. Kun myönnät sovellukselle pääsyn tallennustilan juurihakemistoon SAF: n kautta, se voi lukea, kirjoittaa ja lähettää minkä tahansa tiedoston. haluaa ilkeälle kehittäjälleen täsmälleen samalla tavalla kuin se teki, kun myönsit sovellukselle pääsyn Pien tallennustilaan.

Ainoa "turvaparannus" tapahtuu, koska se on nyt käyttäjän työllisempi prosessi. Ellei sovellus tietysti halua vain varastaa henkilökohtaisimpia tietojasi, kuten kuviasi ja videoitasi otettu, johon Google on lisännyt vaihtoehtoisen pääsyratkaisun, joka käyttää yksinkertaista pop-up click-yes -suojausta valintaikkuna.

Ei tiedetä, mitä etuja Google toivoo saavuttavansa tällä muutoksella. Virallinen syy Android Q beta -dokumentaatiossa on "antaa käyttäjille enemmän hallintaa tiedostoihinsa ja rajoittaa tiedostoja sotkua.” Rajoitettu tallennustila on nykyisessä muodossaan uusi rajoitus sille, mitä käyttäjä saa tehdä, ei laajennus hänen ohjata. Väite sotkun vähentämisestä voi olla jossain määrin paikkansapitävä, mutta vain siksi, että muutos vähentää tiedostojen käyttöä ollenkaan. Ja "sotku" lisääntyy, kun otetaan huomioon ongelma, että joidenkin sovellusten on nyt kopioitava tiedostoja toimiakseen niiden kanssa.

Jos Google haluaa todellakin antaa käyttäjille enemmän hallintaa tiedostoissa ja sotkussa, heidän tulisi suunnitella a ratkaisu, joka käsittelee sitä suoraan sen sijaan, että brändäisi nykyistä Android Q -suunnittelua sellaisenaan parantaminen. Yksinkertaisin vastaus olisi antaa käyttäjien päättää, haluavatko he sovelluksella suojatun vai yleisen tiedostojärjestelmän käyttöoikeuden olemassa olevan tallennuslupapyyntöikkunan avulla. Jos käyttäjät ovat erityisen huolissaan siitä, että he tekevät huonoja päätöksiä, se on varmasti mahdollista Tee valintaikkunasta näkyvämpi ja vaatii lisätoimia sovelluksen hyväksymiseksi kokonaan pääsy.

Vastaus siihen, kuinka Android voi antaa käyttäjille enemmän hallintaa tiedostojaan, on antaa käyttäjille enemmän hallintaa, ei viedä sitä pois ja rajoittaa Android-alustan ominaisuuksia.


Toimittajan huomautus: Tämä on XDA: n vanhempi jäsenen kirjoittama vierasartikkeli tliebeck, joka tunnetaan parhaiten työstään FX File Explorer. Tämän artikkelin sisältö heijastaa hänen omaa mielipidettään ja analyysiään Android Q: n laajuisista tallennusrajoituksista, ja XDA-Developersin päätoimittajan Mishaal Rahmanin panos ja muokkaus ovat vähäisiä. Otimme yhteyttä Googleen kysyäksemme heiltä joistakin näistä huolenaiheista, mutta emme ole saaneet yhtiöltä vastausta julkaisuaikaan mennessä.