Android Os Autofill Framework vil endelig løse et langvarig forsinkelsesproblem med passordbehandlere

Det nye autofyllrammeverket i Android O vil løse et langvarig forsinkelsesproblem knyttet til tilgjengelighetstjenestene til passordbehandlere.

Det har allerede gått en måned siden Google lanserte første forhåndsvisning av Android O Developer (Tiden flyr sikkert fort!), og som med enhver ny versjon av Android - det er mye å grave i. Vi har publisert mange artikler om Android O allerede, men det er en funksjon som jeg føler ikke har fått den oppmerksomheten den fortjener: Autofyll rammeverk.

Autofyll i Android O

Passordadministratorer er en krone et dusin i disse dager (selv om vi er det delvis til åpen kildekode KeePass), men det er bare med Android O at Google virkelig offisielt støtter passordbehandlere. Med Android O kan tredjepartsapplikasjoner fylle rollen til en autofylltjeneste, som kommuniserer med apper gjennom det nye autofyllrammeverket. Apper som bruker standard Utsikt elementer vil fungere med Autofyll-rammeverket ut av esken, selv om det er flere trinn som utviklere kan ta for å 

optimalisere for autofyll for å sikre at alle appens egendefinerte visninger kan fylles ut automatisk.

Når en autofyllbar visning kommer i fokus, vil Autofyll-rammeverket påkalle en autofyll-forespørsel. Autofyll-tjenesten svarer ved å sende tilbake visse Autofyll-datasett (som brukernavn, passord, adresse, kredittkortnummer osv.) som brukeren deretter kan velge. Autofyll-tjenesten spesifiseres av brukeren i Innstillinger --> Apper og varsler --> Standardapper --> Autofyll-app.

Autofyll-app i Android O. Kreditt: Lastpass.

Forklaringen på det nye Autofyll-rammeverket ovenfor er bare en kort oppsummering av hva som skjer på både appens og autofylltjenestens side. Det som er viktigst for din forståelse her, er ikke de nøyaktige detaljene om hvordan autofyll fungerer i Android O, men det faktum at passordbehandlingsapper selv håndterer ikke lenger å oppdage når en visning kan fylles ut automatisk.


Anbefalt lesning: AgileBits viser hvordan Android Os Autofill Framework vil se ut


Autofyll før Android O

Sammenlign det med hvordan autofyll fungerte før Android O. Før passordbehandlere hadde noen form for offisiell metode for å oppdage når en visning kunne fylles ut automatisk, hver applikasjonen måtte implementere en tilgjengelighetstjeneste for å skanne gjeldende visning for å finne autofyllbar Enger.

Bruken av en tilgjengelighetstjeneste kan imidlertid resultere i betydelig etterslep under visse betingelser. Etterslepet knyttet til den typiske passordbehandlerens tilgjengelighetstjeneste er imidlertid så tydelig at populære tjenester som LastPass til og med har støttesider opp om problemet. Disse støttesidene forteller deg vanligvis at din eneste utvei for å håndtere overdreven etterslep forårsaket av deres Tilgjengelighetstjeneste er å enten deaktivere tilgjengelighetstjenesten eller bytte til å bruke sin egen tilpassede inndata metode. Uansett mister du enhver form for autofyll-evne.

Men hvorfor ser det ut til at LastPass sin tilgjengelighetstjeneste, eller en hvilken som helst annen passordbehandlers tilgjengelighetstjeneste, forårsaker så mye etterslep? Årsaken er på grunn av hvordan disse passordbehandlerne må bruke tilgjengelighetstjenester for å oppdage inndatafelt. En tilgjengelighetstjeneste attributter er definert i en XML-ressursfil i APK-en, slik at vi kan se hvordan tjenesten fungerer ved å dekompilere APK-filen.

Nedenfor er ressursfilen hentet fra dekompileringen av 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 />

Fra dette kan vi hente ut følgende informasjon: LastPass sin tilgjengelighetstjeneste ber om to hendelsestyper å overvåke - TYPE_VIEW_FOCUSED og TYPE_WINDOW_CONTENT_CHANGED. Den gjør dette fordi den trenger å vite når innholdet til en app/webside endres eller kommer i fokus, og deretter henter det gjeldende vindusinnhold for å se etter eventuelle passordinntastingsfelt. Men siden tjenesten hele tiden gjør dette på to ekstremt hyppig utløsende tilgjengelighetshendelser, resulterer det i etterslep. For en mer dyptgående diskusjon om hvordan tilgjengelighetstjenester kan forårsake etterslep, henviser jeg til min forrige artikkel om saken.


Anbefalt lesning: "Fungerer etter hensikten" - En utforskning av Androids tilgjengelighetsforsinkelse


Android O dreper to fugler med én stein

Før Android O var det egentlig ikke mye utviklere av passordbehandlere kunne gjøre for å redusere dette etterslepet. Det er fordi passordbehandlere ikke hadde noen måte å vite når et autofyllbart inndatafelt var på skjermen uten å aktivere en tilgjengelighetstjeneste for å overvåke dem hele tiden. Men takket være det nye Autofill Framework i Android O, kan disse passordbehandlerne nå trekke tilbake tilgjengelighetstjenestene sine. I stedet vil appene som trenger dataregistrering selv be Autofill Framework om å ringe autofylltjenesten som deretter sender dataene. Takket være dette nye rammeverket vil ikke bare passordinntasting bli mye enklere for brukere siden de ikke lenger trenger å stole på en ekstra inndatametode, men forsinkelsen knyttet til aktivering av passordbehandleres tilgjengelighetstjenester vil være en ting forbi.

Jeg vet at dette faktum for noen av dere kanskje ikke er banebrytende, men jeg tenkte at siden diskusjonen rundt tilgjengelighetstjenesten var så stum, kunne dette emnet ha vært verdt å ta opp igjen. Bare litt til ettertanke denne helgen!


Hva synes du om Android Os nye Autofill Framework? Gi oss beskjed i kommentarene nedenfor!