Android O's Autofill Framework vil endelig løse et langvarigt forsinkelsesproblem med adgangskodeadministratorer

Det nye Autofill Framework i Android O vil løse et langvarigt forsinkelsesproblem i forbindelse med adgangskodeadministratorernes tilgængelighedstjenester.

Det er allerede en måned siden, Google udgav den første Android O Developer Preview (Tiden flyver sikkert hurtigt!), og som med enhver ny version af Android - der er meget at grave i. Vi har udgivet masser af artikler om Android O allerede, men der er en funktion, som jeg føler ikke rigtig har fået den opmærksomhed, den fortjener: Autofyld rammeværk.

Autofyld i Android O

Adgangskodeadministratorer er en skilling et dusin i disse dage (selvom vi er delvis til open source KeePass), men det er kun med Android O, at Google virkelig officielt understøtter adgangskodeadministratorer. Med Android O kan tredjepartsapplikationer udfylde rollen som en autofill-tjeneste, som kommunikerer med apps gennem det nye Autofill Framework. Apps, der bruger standard Udsigt elementer vil fungere med Autofill Framework ud af boksen, selvom der er yderligere trin, som udviklere kan tage for at 

optimer til autofyld for at sikre, at enhver af appens tilpassede visninger kan udfyldes automatisk.

Når en visning, der kan udfyldes, kommer i fokus, vil Autofyld-rammen fremkalde en anmodning om autofyld. Autofyld-tjenesten reagerer ved at sende visse Autofyld-datasæt tilbage (såsom brugernavn, adgangskode, adresse, kreditkortnumre osv.), som brugeren derefter kan vælge. Autofyld-tjenesten er angivet af brugeren i Indstillinger --> Apps og meddelelser --> Standardapps --> Autofyld-app.

Autofyld-app i Android O. Credits: Lastpass.

Forklaringen på det nye Autofill Framework ovenfor er blot en kort oversigt over, hvad der sker i både den anmodende app's og autofill-tjenestens ende. Det, der er vigtigst for din forståelse her, er ikke de nøjagtige detaljer om, hvordan autofyld fungerer i Android O, men det faktum, at adgangskodehåndteringsapps håndterer ikke længere selv registrering af, hvornår en visning kan udfyldes automatisk.


Anbefalet læsning: AgileBits viser, hvordan Android O's Autofill Framework vil se ud


Autofyld før Android O

Sammenlign det med, hvordan autofyld fungerede før Android O. Før adgangskodeadministratorer havde nogen form for officiel metode til at registrere, hvornår en visning kunne udfyldes automatisk applikationen skulle implementere en tilgængelighedstjeneste for at scanne den aktuelle visning for at finde autofyldbar felter.

Brugen af ​​en tilgængelighedstjeneste kan dog resultere i betydelig forsinkelse under visse betingelser. Forsinkelsen forbundet med din typiske adgangskodeadministrators tilgængelighedstjeneste er dog så tydelig, at populære tjenester som LastPass endda har support sider op omkring spørgsmålet. Disse supportsider fortæller dig typisk, at din eneste udvej for at håndtere overdreven forsinkelse forårsaget af deres Tilgængelighedstjeneste er enten at deaktivere tilgængelighedstjenesten eller skifte til at bruge deres eget tilpassede input metode. Uanset hvad, mister du enhver form for autofyld-evne.

Men hvorfor ser LastPass's Accessibility Service eller enhver anden adgangskodeadministrators Accessibility Service ud til at forårsage så meget forsinkelse? Årsagen er på grund af, hvordan disse adgangskodeadministratorer skal bruge Accessibility Services til at opdage inputfelter. En tilgængelighedstjeneste egenskaber er defineret i en XML-ressourcefil i APK, så vi kan se, hvordan Tjenesten fungerer ved at dekompilere APK-filen.

Nedenfor er ressourcefilen taget fra dekompilering af LastPass APK:


"@string/accessibility_service_description"
android: accessibilityEventTypes="typeViewFocused|typeWindowContentChanged"
android: accessibilityFeedbackType="feedbackGeneric"
android: notificationTimeout="200"
android: accessibilityFlags="flagReportViewIds"
android: canRetrieveWindowContent="true"
android: canRequestEnhancedWebAccessibility="true"
xmlns: andro />

Ud fra dette kan vi hente følgende oplysninger: LastPass's Accessibility Service anmoder om to hændelsestyper at overvåge - TYPE_VIEW_FOCUSED og TYPE_WINDOW_CONTENT_CHANGED. Det gør den, fordi den skal vide, hvornår en app/websides indhold ændres eller kommer i fokus, og derefter henter den det aktuelle vinduesindhold for at lede efter eventuelle adgangskodeindtastningsfelter. Men da tjenesten konstant gør dette på to ekstremt hyppigt affyrende tilgængelighedsbegivenheder, resulterer det i forsinkelse. For en mere dybdegående diskussion af, hvordan tilgængelighedstjenester kan forårsage forsinkelse, henviser jeg til min tidligere artikel om sagen.


Anbefalet læsning: "At arbejde efter hensigten" - En udforskning af Androids tilgængelighedsforsinkelse


Android O dræber to fugle med én sten

Før Android O var der ikke rigtig meget, udviklere af adgangskodeadministratorer kunne gøre for at afbøde denne forsinkelse. Det skyldes, at adgangskodeadministratorer ikke havde nogen mulighed for at vide, hvornår et automatisk udfyldningsfelt var på skærmen uden at aktivere en tilgængelighedstjeneste til konstant at overvåge for dem. Men takket være det nye Autofill Framework i Android O kan disse adgangskodeadministratorer nu trække deres tilgængelighedstjenester tilbage. I stedet vil de apps, der selv har brug for dataindtastning, anmode Autofill Framework om at ringe til autofill-tjenesten, som derefter sender dataene. Takket være denne nye ramme bliver adgangskodeindtastning ikke kun meget lettere for brugerne, da de ikke længere skal stole på en yderligere inputmetode, men forsinkelsen forbundet med aktivering af adgangskodeadministratorers tilgængelighedstjenester vil være en ting forbi.

Jeg ved, at for nogle af jer er dette faktum måske ikke banebrydende, men jeg tænkte, at da diskussionen omkring tilgængelighedstjenesten var så tavs, kunne dette emne have været værd at genoplive. Bare lidt stof til eftertanke denne weekend!


Hvad synes du om Android O's nye Autofill Framework? Fortæl os det i kommentarerne nedenfor!