Az Android O feltöri az alkalmazásokat, amelyek átfedik az állapotsort

Az Android O megszünteti a TYPE_SYSTEM_OVERLAY-t a TYPE_APPLICATION_OVERLAY javára, így az állapotsor tetejére fedő alkalmazások elromlanak.

Az új, felhasználóbarát funkciókat felvázoló bejegyzések csordogálása a következő helyen található: Android O kezd lassulni most, hogy a felhasználóknak hetek álltak rendelkezésére, hogy teszteljék a szoftvert az eszközükön. Azonban sok-sok változtatás történt a motorháztető alatt, amelyek lassan feltárulnak. Pont a napokban tettünk közzé egy ilyen változást az Android O-t futtató Nexus és Pixel eszközökkel kapcsolatban SDCardFS elfogadása. De ma egy olyan változásról szeretnénk beszélni, amely bizonyos alkalmazások fejlesztőit érinti, különösen azokat, amelyek fedvény az állapotsor tetején. Úgy tűnik, ezek az alkalmazások megszakadt az Android O fejlesztői előnézetében, amelyet első pillantásra egyszerű hibának tekinthet, de ha jobban belemerülünk a referenciadokumentációba, ez tervezett változás a Google által.


Az Android O megszakítja az állapotsor fedvényeit

Az egyik kedvenc dolog az Androiddal kapcsolatban, hogy mennyire testreszabható. Azok a felhasználók, akik rootolt vagy egyéni ROM-ot futtatnak, alapvetően korlátozások nélkül témázhatják rendszer állapotsoraikat, de ha eszköze nincs rootolva, akkor kevesebb lehetőség áll rendelkezésére. Szerencsére a Google Play Áruházban sok olyan alkalmazás található, amelyek lehetővé teszik az állapotsor alapszintű megjelenését. Ez lehetséges a System Overlay Windows okos kombinációjának köszönhetően, amely egyéni állapotsort jelenít meg a meglévő felett, Értesítésfigyelők az értesítések megjelenítéséhez, és opcionálisan egy kisegítő szolgáltatás az egyéni kontextus szerinti színezéshez állapotsor.

A fenti két képernyőképen látható, hogyan nézne ki az értesítési sávom, ha a Play Áruházban elérhető számos állapotsor-fedőalkalmazás egyikét használom. Ezek a képernyőképek egy gyökértelen Huawei Mate 9-en készültek, amelyen EMUI 5.0 fut. Azok számára, akik nem ismerik az EMUI-t, az állapotsor nem hasonlít a fenti képernyőképekhez. Ehelyett így néz ki:

Ha nem bánja, hogyan néz ki a készlet állapotsora, akkor az olyan alkalmazások, mint pl Állapot vagy Anyag állapotsor isteni ajándékok. De ha vagy amikor eszköze Android O-ra frissül, előfordulhat, hogy ezek az alkalmazások már nem fognak működni. Így néz ki ugyanaz a két alkalmazás az Android O Developer Preview-t futtató Google Pixel készüléken:

A fedvény nem blokkolja az eredeti állapotsort, hanem úgy néz ki, mint a fedvény átfed az eredeti állapotsorral, ami hatalmas rendetlenséget eredményez.

Sajnos ez gyakorlatilag használhatatlanná teszi az ilyen alkalmazásokat. És ez nem csak a tipikus állapotsor-témaalkalmazásokat érinti - az összes olyan alkalmazást érinti, amelyhez fedvényt kell megjeleníteni az állapotsor tetején.

Az alábbiakban felsorolunk néhány népszerű alkalmazást, amelyek használhatatlanná válhatnak:

  • Állapot (500 000 - 1 000 000 telepítés)
  • Anyag állapotsor (1 000 000 - 5 000 000 telepítés)
  • Cool Tool – Rendszerstatisztika (500 000 - 1 000 000 telepítés)
  • Telecine (50 000 - 100 000 telepítés)
  • Tisztítsa meg az állapotsort (100 000 - 500 000 telepítés)
  • Tinycore (100 000 - 500 000 telepítés)

És néhány olyan alkalmazás listája, amelyek működni fognak, de már nem fedhetik át az állapotsort (a korábbi funkciók korlátozása):

  • Szürkület (5 000 000 - 10 000 000 telepítés)
  • Fel a fejjel (100 000 - 500 000 telepítés)
  • Resource Monitor Mini (50 000 - 100 000 telepítés)
  • Network Monitor Mini (1 000 000 - 5 000 000 telepítés)

A Play Áruházban sokkal több alkalmazás található, amelyek valamilyen fedvényt használnak az állapotsor tetején, de Már most láthatja, hogy egy ilyen változás sok olyan alkalmazást érint, amelyeket potenciálisan milliók használnak felhasználókat. Szóval mi folyik itt?


A TYPE_SYSTEM_OVERLAY megszűnik

Az Android minden egyes új iterációjával a Google különböző funkciókat vezet be és megszüntet (elavultnak és eltávolítandónak nevezi). Ezúttal a vágási blokkon lévő funkció a TYPE_SYSTEM_OVERLAY. Hogy idézzem a hivatkozási oldal amit ez a funkció kínált a fejlesztőknek:

TYPE_SYSTEM_OVERLAY

Ablak típusa: rendszerfedő ablakok, amelyeket minden máson felül kell megjeleníteni. Ezek az ablakok nem fókuszálhatnak a bemenetre, különben zavarják a billentyűzárat. Többfelhasználós rendszerekben csak a tulajdonos felhasználó ablakában jelenik meg.

Lényegében ez az ablaktípus lehetővé teszi az alkalmazás számára, hogy a képernyő bármely elemére rajzoljon – beleértve az állapotsort is. Az Android O-val kezdődően azonban ez az ablaktípus elavulttá vált. A nem rendszeralkalmazások esetében a Google azt javasolja a fejlesztőknek, hogy helyette a TYPE_APPLICATION_OVERLAY alkalmazást használják. Hogy idézzem a hivatkozási oldal mire képes ez az új ablaktípus:

TYPE_APPLICATION_OVERLAY

Ablaktípus: Az alkalmazásfedő ablakok az összes tevékenységablak felett jelennek meg (a közötti típusok FIRST_APPLICATION_WINDOW és LAST_APPLICATION_WINDOW), de a kritikus rendszerablakok alatt, például az állapotsor vagy az IME alatt.

A rendszer bármikor megváltoztathatja ezen ablakok helyzetét, méretét vagy láthatóságát, hogy csökkentse a felhasználó vizuális zűrzavarát, és kezelje az erőforrásokat.

A rendszer módosítani fogja az ilyen ablaktípusú folyamatok fontosságát, hogy csökkentse annak esélyét, hogy az alacsony memóriájú gyilkos megöli őket.

Többfelhasználós rendszerekben csak a tulajdonos felhasználó képernyőjén jelenik meg.

Amint láthatja, ez az új ablaktípus lehetővé teszi, hogy az alkalmazások tartalmat fedjenek az összes többi tevékenységablak tetejére kivéve "kritikus rendszerablakok, például az állapotsor vagy az IME" (az IME a billentyűzetre utal). Ez megfelelő az olyan alkalmazásokhoz, mint a Facebook Messenger, mivel az alkalmazás által biztosított csevegőfejeknek nincs célja az állapotsor tetején ülni, de ez negatívan érinti a korábban említett alkalmazások többségét.

Továbbá úgy tűnik, hogy jelenleg nincs megoldás a fejlesztők számára. Elképzelhető, hogy a probléma elkerülése érdekében az Android O-n a fejlesztők egyszerűen az SDK 25-öt (Android 7.1.1) megcélozva készítik el alkalmazásaikat. Azonban amint arra a a Status fejlesztője a Redditen, a Google rendelkezik lecserélték TYPE_SYSTEM_OVERLAY és TYPE_APPLICATION_OVERLAY, és a változás független a cél SDK-tól változat. A TYPE_SYSTEM_OVERLAY-t használó fejlesztőknek jelenleg a TYPE_APPLICATION_OVERLAY-t kell használniuk a kompatibilitás fenntartásához, ezért függetlenül attól, hogy egy adott alkalmazás melyik cél SDK-verzión alapul, többé ne használja a TYPE_SYSTEM_OVERLAY-t Android O-n.


Mit lehet tenni ez ellen?

Nem egészen világos, hogy a Google miért hajtotta végre ezt a változtatást, mivel hivatalos magyarázattal még nem szolgáltak. Feltételezem, hogy ez egy kísérlet az Android biztonságának javítására azáltal, hogy megakadályozza, hogy a gyanútlan felhasználók véletlenül olyan alkalmazásokat telepítsenek, amelyek rosszindulatúan blokkolják vagy helyettesítik az állapotsorukat. Sajnos ez a változás sok teljesen legitim alkalmazást elkap, amelyek a TYPE_SYSTEM_OVERLAY-t használják kereszttüzben.

Az ezt a funkciót használó fejlesztők hibajelentéseket nyitottak meg az Android problémakövetőjében (#260787 és #36574245). következő nyilatkozatot:

Állapot: nem javítható (szándékos viselkedés)

Felvettük a kapcsolatot a termék- és mérnöki csapattal, és azt a javaslatot kaptuk, hogy a fejlesztők használhatják a SHOW_WHEN_LOCKED tevékenységeket megjeleníti, ha az eszköz le van zárva, de szándékosan már nem jeleníthető meg a lezárási képernyőn / az értesítési területen

Egyelőre úgy tűnik, hogy ezek a fejlesztők nem járnak szerencsével, mivel a fejlesztők rámutattak, hogy a FLAG_SHOW_WHEN_LOCKED továbbra sem teszi lehetővé az ablakok befedését az állapotsor tetejére. Nem világos, hogy ezeknek az alkalmazásoknak a fejlesztői mit tehetnek azon kívül, hogy imádkoznak a Google-ért, hogy változtassa meg a dolgokat, vagy emelje ki a poklot.

Mivel ez még csak az első fejlesztői előnézet az Android O-hoz, a Google továbbra is módosíthatja és biztosítsa ezt a funkciót olyan alkalmazások számára, amelyek nem célozzák az Android O-t, vagy hogy a Google visszaállíthassa TYPE_SYSTEM_OVERLAY. De ha a dolgok a jelenlegi állapotuk szerint maradnak, megteheti csókolja meg ezeket az alkalmazásokat. És ez rohadt szégyen lenne.


Köszönöm Eli Irvinnek, hogy sok ilyen alkalmazást tesztelt nekem!