Android O rikkoo sovelluksia, jotka peittyvät tilapalkin päällä

Android O poistaa TYPE_SYSTEM_OVERLAY: n käytöstä sovelluksen TYPE_APPLICATION_OVERLAY sijaan, minkä seurauksena tilapalkin päällä peittävät sovellukset rikkoutuvat.

Viestit, joissa esitellään uusia käyttäjille suunnattuja ominaisuuksia, löytyy Android O alkaa hidastua nyt, kun käyttäjillä on ollut viikkoja aikaa testata laitteensa ohjelmistoa. Konepellin alla on kuitenkin tehty monia, monia muutoksia, jotka paljastuvat hitaasti. Julkaisimme yhdestä tällaisesta muutoksesta juuri toissapäivänä Android O: ta käyttävistä Nexus- ja Pixel-laitteista SDCardFS: n käyttöönotto. Mutta tänään haluaisimme keskustella muutoksesta, joka vaikuttaa tiettyjen sovellusten kehittäjiin, erityisesti niihin, jotka peittokuva tilapalkin päällä. Nämä sovellukset näyttävät olevan rikki Android O Developer Previewissa, jonka saatat ensi silmäyksellä pitää yksinkertaisena virheenä, mutta kun sukeltaa syvemmälle viitedokumentaatioon, tämä voi olla suunniteltu muutos Googlelta.


Android O rikkoo tilapalkin peittokuvat

Yksi suosikkiasioistani Androidissa on sen muokattavissa oleva. Käyttäjät, joilla on pääkäyttäjän asema tai jotka käyttävät mukautettuja ROM-levyjä, voivat teemoida järjestelmän tilarivit natiivisti ilman rajoituksia, mutta jos laitteestasi ei ole juurtunutta, käytettävissäsi on vähemmän vaihtoehtoja. Onneksi Google Play Kaupassa on monia sovelluksia, joiden avulla voit muuttaa tilapalkin ulkoasua perustasolla. Tämä on mahdollista näppärän System Overlay -ikkunoiden yhdistelmän ansiosta, joka näyttää mukautetun tilapalkin olemassa olevan päälle, Ilmoituskuuntelijat ilmoitusten näyttämiseen ja valinnaisesti esteettömyyspalvelu, joka mahdollistaa mukautetun sisällön kontekstin sävyttämisen tilapalkki.

Yllä olevat kaksi kuvakaappausta näyttävät, miltä ilmoituspalkkini näyttäisi, kun käytän yhtä monista Play Kaupan tilapalkin peittokuvasovelluksista. Nämä kuvakaappaukset on otettu juurruttamattomalla Huawei Mate 9:llä, jossa on EMUI 5.0. Niille teistä, jotka eivät tunne EMUI: ta, tilarivi ei näytä samalta kuin yllä olevat kuvakaappaukset. Sen sijaan se näyttää tältä:

Jos et välitä siitä, miltä osakkeen tilapalkki näyttää, sovellukset, kuten Tila tai Materiaalin tilapalkki ovat jumalanlahjoja. Mutta jos tai kun laitteesi päivittää Android O: han, nämä sovellukset eivät ehkä enää toimi. Tältä nämä samat kaksi sovellusta näyttävät Google Pixelissä, jossa on Android O Developer Preview:

Sen sijaan, että peitto peittäisi alkuperäisen tilapalkin, se näyttää peittokuvalta päällekkäin alkuperäisen tilapalkin kanssa, mikä johtaa valtavaan sotkuun.

Valitettavasti tämä tekee tällaisista sovelluksista hyödyttömiä. Ja tämä ei koske vain tyypillisiä tilapalkin teemasovelluksiasi - tämä vaikuttaa kaikkiin sovelluksiin, jotka edellyttävät peittokuvan näyttämistä tilapalkin päällä.

Tässä on luettelo suosituista sovelluksista, jotka saattavat muuttua hyödyttömiksi:

  • Tila (500 000 - 1 000 000 asennusta)
  • Materiaalin tilapalkki (1 000 000 - 5 000 000 asennusta)
  • Cool Tool - Järjestelmätilastot (500 000 - 1 000 000 asennusta)
  • Telecine (50 000 - 100 000 asennusta)
  • Puhdista tilapalkki (100 000 - 500 000 asennusta)
  • Tinycore (100 000 - 500 000 asennusta)

Ja luettelo joistakin sovelluksista, jotka toimivat, mutta eivät voi enää peittää tilapalkin päällä (rajoittaa aiempia toimintoja):

  • Iltahämärä (5 000 000 - 10 000 000 asennusta)
  • Varoitus (100 000 - 500 000 asennusta)
  • Resurssimonitori Mini (50 000 - 100 000 asennusta)
  • Network Monitor Mini (1 000 000 - 5 000 000 asennusta)

Play Kaupassa on monia muita sovelluksia, jotka käyttävät jonkinlaista peittokuvaa tilapalkin päällä, mutta voit jo sanoa, että tällainen muutos vaikuttaa moniin sovelluksiin, joita mahdollisesti käyttävät miljoonia käyttäjiä. Joten mitä täällä tapahtuu?


TYPE_SYSTEM_OVERLAY poistetaan käytöstä

Jokaisen Androidin uuden iteroinnin yhteydessä Google sekä ottaa käyttöön että poistaa käytöstä (määrittää vanhentuneiksi ja poistettaviksi) erilaisia ​​ominaisuuksia. Tällä kertaa leikkauslohkossa oleva ominaisuus on TYPE_SYSTEM_OVERLAY. Lainatakseni viitesivu mitä tämä ominaisuus tarjosi kehittäjille:

TYPE_SYSTEM_OVERLAY

Ikkunatyyppi: järjestelmän peittoikkunat, jotka on näytettävä kaiken muun päällä. Nämä ikkunat eivät saa keskittyä syötteeseen, muuten ne häiritsevät näppäinsuojaa. Monen käyttäjän järjestelmissä näkyy vain omistavan käyttäjän ikkunassa.

Pohjimmiltaan tämä ikkunatyyppi sallii sovelluksen piirtää minkä tahansa näytön elementin päälle - myös tilarivin. Tämä ikkunatyyppi on kuitenkin poistettu käytöstä Android O: sta alkaen. Muissa kuin järjestelmäsovelluksissa Google suosittelee, että kehittäjät käyttävät sen sijaan sovellusta TYPE_APPLICATION_OVERLAY. Lainatakseni viitesivu mitä tämä uusi ikkunatyyppi tekee:

TYPE_APPLICATION_OVERLAY

Ikkunatyyppi: Sovelluksen peittoikkunat näkyvät kaikkien toimintoikkunoiden yläpuolella (tyypit välillä FIRST_APPLICATION_WINDOW ja LAST_APPLICATION_WINDOW), mutta kriittisten järjestelmäikkunoiden, kuten tilapalkin tai IME: n, alapuolella.

Järjestelmä voi muuttaa näiden ikkunoiden sijaintia, kokoa tai näkyvyyttä milloin tahansa vähentääkseen visuaalista sotkua käyttäjälle ja hallitakseen resursseja.

Järjestelmä säätää tämän ikkunatyypin prosessien tärkeyttä vähentääkseen todennäköisyyttä, että vähämuistinen tappaja tappaa ne.

Usean käyttäjän järjestelmissä näkyy vain omistajan näytöllä.

Kuten näet, tämän uuden ikkunatyypin avulla sovellukset voivat peittää sisällön kaikkien muiden toimintaikkunoiden päällä paitsi "kriittiset järjestelmäikkunat, kuten tilapalkki tai IME" (IME viittaa näppäimistöön). Tämä sopii sovelluksille, kuten Facebook Messenger, koska sovelluksen tarjoamilla keskustelupalstoilla ei ole tarkoitusta istua tilapalkin päällä, mutta tämä vaikuttaa negatiivisesti useimpiin aiemmin mainitsemiini sovelluksiin.

Lisäksi kehittäjien käytettävissä ei tällä hetkellä näytä olevan kiertotapaa. Voidaan odottaa, että tämän ongelman välttämiseksi Android O: ssa kehittäjät yksinkertaisesti rakentavat sovelluksensa kohdistamaan SDK 25:een (Android 7.1.1). Kuitenkin, kuten huomautti Status-kehittäjä Redditissä, Googlella on vaihdettu TYPE_SYSTEM_OVERLAY ja TYPE_APPLICATION_OVERLAY, ja muutos on riippumaton kohde-SDK: sta versio. TYPE_SYSTEM_OVERLAY: tä käyttävien kehittäjien on tällä hetkellä käytettävä sovellusta TYPE_APPLICATION_OVERLAY yhteensopivuuden ylläpitämiseksi, joten riippumatta siitä, mihin kohde-SDK-versioon tietty sovellus perustuu, se voi älä enää käytä TYPE_SYSTEM_OVERLAY: tä Android O: ssa.


Mitä tälle voidaan tehdä?

Ei ole täysin selvää, miksi Google on tehnyt tämän muutoksen, koska he eivät ole vielä antaneet virallista selitystä. Arvelen, että se on yritys parantaa Androidin turvallisuutta estämällä pahaa-aavistamattomia käyttäjiä asentamasta vahingossa sovelluksia, jotka estävät tai korvaavat heidän tilarivinsä haitallisesti. Valitettavasti tämä muutos saa kiinni monia täysin laillisia sovelluksia, jotka käyttävät TYPE_SYSTEM_OVERLAY: tä ristitulessa.

Tätä ominaisuutta käyttävät kehittäjät ovat avanneet virheraportteja Androidin Issue Trackerissa (#260787 ja #36574245) vastustaakseen muutosta ja pyytääkseen vaihtoehtoista sovellusliittymää, mutta Googlen työntekijä kommentoi seurantaohjelmaa seuraava lausunto:

Tila: Ei korjata (tarkoitettu käyttäytyminen)

Olemme seuranneet tuote- ja suunnittelutiimiä ja saaneet ehdotuksen, että kehittäjät voivat käyttää SHOW_WHEN_LOCKED-toimintoja näyttää, kun laite on lukittu, mutta se ei ole tarkoituksella enää mahdollista näyttää lukitusnäytön / ilmoitusalueen päällä

Tällä hetkellä näyttää siltä, ​​että näillä kehittäjillä ei ole onnea, sillä kehittäjät ovat huomauttaneet, että FLAG_SHOW_WHEN_LOCKED ei silti salli ikkunoiden peittämistä tilapalkin päällä. Ei ole selvää, mitä näiden sovellusten kehittäjät voivat tehdä, paitsi rukoilla, että Google muuttaa asioita tai nostaa helvettiin.

Koska tämä on vasta ensimmäinen Android O: n kehittäjien esikatselu, Google voi silti muuttaa niitä ja tarjoa tämä toiminto sovelluksille, jotka eivät ole kohdistettu Android O: lle, tai Googlen palauttamista varten TYPE_SYSTEM_OVERLAY. Mutta jos asiat pysyvät ennallaan, voit tehdä sen suutele näille sovelluksille hyvästit. Ja se olisi helvetin sääli.


Kiitos Eli Irvinille, että hän testasi monia näistä sovelluksista puolestani!