Het Autofill Framework van Android O zal eindelijk een langdurig probleem met vertragingen bij wachtwoordbeheerders oplossen

Het nieuwe Autofill Framework in Android O zal een al lang bestaand vertragingsprobleem oplossen dat verband houdt met de toegankelijkheidsservices van wachtwoordmanagers.

Het is alweer een maand geleden dat Google de eerste Android O Developer Preview (de tijd vliegt zeker snel voorbij!), en zoals bij elke nieuwe versie van Android is er veel om in te duiken. We hebben gepubliceerd veel artikelen over Android O al, maar er is één functie die naar mijn mening niet echt de aandacht heeft gekregen die hij verdient: de Kader voor automatisch aanvullen.

Automatisch aanvullen in Android O

Wachtwoordmanagers zijn tegenwoordig dertien in een dozijn (hoewel wij dat wel zijn). gedeeltelijk aan de open-source KeePass), maar pas met Android O ondersteunt Google wachtwoordmanagers echt officieel. Met Android O kunnen applicaties van derden de rol van een autofill-service vervullen, die met apps communiceert via het nieuwe Autofill Framework. Apps die standaard gebruiken Weergave elements werken standaard met het Autofill Framework, hoewel er extra stappen zijn die ontwikkelaars kunnen nemen 

optimaliseren voor automatisch aanvullen om ervoor te zorgen dat alle aangepaste weergaven van de app automatisch kunnen worden gevuld.

Wanneer een automatisch aanvulbare weergave in beeld komt, zal het Autofill Framework een automatisch aanvulverzoek oproepen. De autofill-service reageert door bepaalde Autofill-gegevenssets terug te sturen (zoals de gebruikersnaam, het wachtwoord, het adres, creditcardnummers, enz.) die de gebruiker vervolgens kan selecteren. De autofill-service wordt door de gebruiker opgegeven in Instellingen --> Apps en meldingen --> Standaardapps --> Autofill-app.

App voor automatisch aanvullen in Android O. Credits: Laatste pas.

De uitleg van het nieuwe Autofill Framework hierboven is slechts een korte samenvatting van wat er gebeurt aan de kant van zowel de aanvragende app als de autofill-service. Wat hier het belangrijkst is voor uw begrip zijn niet de exacte details van hoe automatisch aanvullen werkt in Android O, maar het feit dat de apps voor wachtwoordbeheer zelf kunnen niet langer detecteren wanneer een weergave automatisch kan worden ingevuld.


Aanbevolen lectuur: AgileBits laat zien hoe het Autofill Framework van Android O eruit zal zien


Automatisch aanvullen vóór Android O

Vergelijk dat eens met hoe automatisch aanvullen werkte vóór Android O. Voordat wachtwoordbeheerders een officiële methode hadden om te detecteren wanneer een weergave automatisch kon worden ingevuld, waren dat allemaal de enige applicatie moest een toegankelijkheidsservice implementeren om de huidige weergave te scannen om automatisch aanvulbaar te vinden velden.

Het gebruik van een Toegankelijkheidsdienst kan dat wel resulteren in een aanzienlijke vertraging onder bepaalde omstandigheden. De vertraging die gepaard gaat met de toegankelijkheidsservice van uw typische wachtwoordbeheerder is echter zo duidelijk dat populaire services zoals LastPass zelfs ondersteuningspagina's op over de kwestie. Deze ondersteuningspagina's vertellen u doorgaans dat uw enige oplossing voor het omgaan met overmatige vertraging veroorzaakt door hun Toegankelijkheidsservice is om de toegankelijkheidsservice uit te schakelen of over te schakelen naar het gebruik van hun eigen aangepaste invoer methode. Hoe dan ook, je verliest elke vorm van automatisch aanvullen.

Maar waarom lijkt de toegankelijkheidsservice van LastPass, of de toegankelijkheidsservice van een andere wachtwoordbeheerder, zoveel vertraging te veroorzaken? De reden hiervoor is de manier waarop deze wachtwoordbeheerders toegankelijkheidsservices moeten gebruiken om invoervelden te detecteren. Een toegankelijkheidsservice attributen zijn gedefinieerd in een XML-bronbestand binnen de APK, zodat we kunnen zien hoe de Service werkt door het APK-bestand te decompileren.

Hieronder vindt u het bronbestand afkomstig van het decompileren van de 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 />

Hieruit kunnen we de volgende informatie halen: De toegankelijkheidsservice van LastPass vraagt ​​om twee gebeurtenistypen om te monitoren: TYPE_VIEW_FOCUSED en TYPE_WINDOW_CONTENT_CHANGED. Het doet dit omdat het moet weten wanneer de inhoud van een app/webpagina verandert of in beeld komt, en vervolgens de huidige vensterinhoud ophaalt om te zoeken naar eventuele wachtwoordinvoervelden. Maar omdat de service dit voortdurend doet bij twee extreem frequent geactiveerde toegankelijkheidsgebeurtenissen, resulteert dit in vertraging. Voor een meer diepgaande discussie over hoe toegankelijkheidsservices vertraging kunnen veroorzaken, verwijs ik naar mijn vorige artikel over deze kwestie.


Aanbevolen lectuur: "Werken zoals bedoeld" - Een onderzoek naar de toegankelijkheidsvertraging van Android


Android O doodt twee vliegen in één klap

Vóór Android O konden ontwikkelaars van wachtwoordmanagers niet echt veel doen om deze vertraging te verzachten. Dat komt omdat wachtwoordbeheerders niet konden weten wanneer een automatisch invulbaar invoerveld op het scherm stond zonder dat een toegankelijkheidsservice er voortdurend op kon letten. Maar dankzij het nieuwe Autofill Framework in Android O kunnen deze wachtwoordbeheerders nu hun toegankelijkheidsservices stopzetten. In plaats daarvan zullen de apps die zelf gegevens moeten invoeren, het Autofill Framework verzoeken om de autofill-service aan te roepen die vervolgens de gegevens zal verzenden. Dankzij dit nieuwe raamwerk wordt het invoeren van wachtwoorden niet alleen veel eenvoudiger voor gebruikers, omdat ze niet langer afhankelijk zijn van een extra invoermethode, maar de vertraging die gepaard gaat met het inschakelen van de toegankelijkheidsservices van wachtwoordbeheerders zal een probleem zijn verleden.

Ik weet dat dit feit voor sommigen van jullie misschien niet baanbrekend is, maar ik dacht dat, omdat de discussie rond de Toegankelijkheidsdienst zo stil was, dit onderwerp wellicht de moeite waard zou zijn om opnieuw aan te wakkeren. Even wat stof tot nadenken dit weekend!


Wat vind je van het nieuwe Autofill Framework van Android O? Laat het ons weten in de reacties hieronder!