Google truer med at fjerne apps med tilgængelighedstjenester fra Play Butik

Google sender e-mails, der advarer udviklere om ikke at bruge tilgængelighedstjenester uden for tilsigtet brug, ellers vil deres apps blive fjernet fra Play Butik.

Opdatering: LastPass har netop svarede til denne nyhed og siger, at der ikke vil være "ingen øjeblikkelig effekt" for deres Android-apps. Hvorvidt dette betyder, at andre ansøgninger vil blive givet lempelse eller ej, skal vise sig.

Nogle af de mest innovative applikationer i Play Butik er bygget på at bruge API'er på måder, som Google aldrig havde tænkt sig. Der er apps, der kan omdanne dine lydstyrketaster til at springe musiknumre over, optage og afspille berøringsinput på websider eller spil, og endda give alternative navigationstaster, så du kan bruge hele din enhed skærmen. Alle disse eksempler, som jeg lige har nævnt, er afhængige af Androids Accessibility API'er. Men det kan snart ændres, da Google Play Butik-teamet udsender e-mails til udviklere og fortæller dem, at de kan ikke længere implementere tilgængelighedstjenester, medmindre de følger Googles retningslinjer.


Hvad er en tilgængelighedstjeneste?

For at forstå, hvorfor dette er vigtigt, skal vi først forklare, hvad tilgængelighed er i forhold til Android. Generelt henviser tilgængelighed til at gøre en Android-app mere tilgængelig for brugere med visse handicap, såsom dem, der er synshandicappede. Selvom det er i enhver udviklers bedste interesse at gøre deres apps mere tilgængelige for brugere med handicap, er der en særlig klasse af applikationer, der er designet til at forbedre anvendeligheden af ​​alle Android-apps for brugere med handicap. Disse kaldes tilgængelighedstjenester.

En tilgængelighedstjeneste, almindeligvis omtalt som a11y, er en app, som systemet kan tilføre visse oplysninger afhængigt af, hvad begivenheder Tilgængelighedstjenesten tilmelder sig at lytte efter. En app, der ønsker at implementere en tilgængelighedstjeneste, skal tilføje android.permission.BIND_ACCESSIBILITY_SERVICE tilladelse til AndroidManifest-filen, så kun systemet kan binde sig til appens tjeneste.

For eksempel hvis en tilgængelighedstjeneste er bygget til at lytte efter TYPE_VIEW_CLICKED begivenheder, så vil denne tjeneste modtage information fra systemet om eventuelle knapper, som brugeren måtte trykke på. En tilgængelighedstjeneste kan også reagere på og forbruge visse bevægelser og KeyEvents, før andre apps modtager dem. Endelig kan en tilgængelighedstjeneste også injicere visse KeyEvents, såsom tilbage-, split-screen- eller seneste apps-knappen.

Således kan Accessibility Services være ekstremt kraftfuld og nyttig. Flere af de mest populære, innovative applikationer i Google Play Butik er afhængige af a11y for at udføre deres opgaver. Her er blot nogle af de få eksempler, jeg fandt på fra toppen af ​​mit hoved:

  • AutoInput - opsnappe KeyEvents og udføre tryk/swipe-bevægelser
  • Button Mapper - opsnappe KeyEvents og omdanne dem til andre KeyEvents
  • Grøngør - automatisk dvale apps ved at tvinge dem til at lukke, før skærmen slukker
  • Indtastning+ - Registrer, når tastaturappen er åben, for at vise den flydende handlingsknap
  • LastPass - scan sider for brugernavn/adgangskode (nødvendigt før Android Oreo)
  • Skift hurtigt - send KeyEvent for tilbage-knappen
  • Tasker - Registrer, når apps er åbne, så du kan udføre enhver brugerdefineret handling
  • Type Maskine - optag al tekstinput, så du aldrig mister nogen tekstindtastning

Ingen af ​​disse applikationer bruger på den måde Google havde til hensigt, nemlig at hjælpe brugere med handicap. Jeg vil vædde på, at langt de fleste applikationer, der implementerer en tilgængelighedstjeneste, gør det til funktioner uden for Googles område. Men det er det smukke ved Android og API'er som tilgængelighed – Google begrænser normalt ikke, hvad udviklere kan og ikke må. Den lemfældige tilgang med brugen af ​​tilgængelighedstjenester ser dog ud til at ændre sig, efterhånden som Google Play Butiksteamet har sendt e-mails til udviklere og advaret dem om kommende ændringer af deres politik vedr om 11 år.


Hvad laver Google helt præcist?

Virksomheden informerer udviklere om, at hvis deres applikation bruger en tilgængelighedstjeneste af andre årsager end at hjælpe brugere med handicap, så skal fjerne brugen af ​​denne tilladelse inden for 30 dage, ellers fjernes deres applikation fra Play Butik. Manglende overholdelse af dette krav kan resultere i en overtrædelse af en udviklers Play Butik-konto, hvilket kan i sidste ende føre til kontoopsigelse.

For de få apps, der bruger a11y til at hjælpe brugere med handicap, oplyser Google, at disse udviklere skal blot tilføje en fremtrædende, brugervendt afsløring af årsagen til, hvorfor deres app har brug for tilladelse. Men som jeg nævnte før, bruges tilgængelighedstjenester langt oftere i apps, der ville ende med at overtræde denne nye politik.

Fuld e-mail sendt til udviklere

Hej udviklere hos ****,

Vi kontakter dig, fordi din app, ****, med pakkenavn **** anmoder om "android.permission. BIND_ACCESSIBILITY_SERVICE.' Apps, der anmoder om tilgængelighedstjenester, bør kun bruges til at hjælpe brugere med handicap med at bruge Android-enheder og -apps. Din app skal overholde vores Tilladelser politik og de fremtrædende oplysningskrav i vores Brugerdata politik.

Handling påkrævet: Hvis du ikke allerede gør det, skal du forklare brugerne, hvordan din app brugerandroid.permission. BIND_ACCESSIBILITY_SERVICE' for at hjælpe brugere med handicap med at bruge Android-enheder og apps. Apps, der ikke opfylder dette krav inden for 30 dage, kan blive fjernet fra Google Play. Alternativt kan du fjerne eventuelle anmodninger om tilgængelighedstjenester i din app. Du kan også vælge at fjerne udgivelsen af ​​din app.

Hvis du har brug for at foretage ændringer i dine apps, skal du følge disse trin:

  • Læs igennem Tilladelser og Brugerdata politikker for at få flere detaljer, og sørg for, at din app overholder alle politikker, der er angivet i Programpolitikker for udviklere.
  • Hvis du ikke har brug for BIND_ACCESSIBILITY_SERVICE-tilladelsen i din app, eller tilladelsen bliver brugt til andet end at hjælpe brugere med handicap med at bruge Android-enheder og -apps:
    1. Fjern din anmodning om denne tilladelse fra din apps manifest.
    2. Log ind på din Play Console og upload din ændrede, politik-kompatible APK.
  • Eller hvis du har brug for BIND_ACCESSIBILITY_SERVICE-tilladelsen i din app for at hjælpe brugere med handicap med at bruge Android-enheder og apps:
    1. Inkluder følgende uddrag i beskrivelsen af ​​din apps butiksfortegnelse: "Denne app bruger tilgængelighedstjenester."
    2. Giv en fremtrædende brugervendt afsløring af denne brug, før du beder brugeren om at aktivere denne tilladelse i din app. Din videregivelse skal opfylde hvert af følgende krav:
      • Oplysning skal ske via Android: resumé og Android: beskrivelse elementer i AccessibilityServiceInfo-klassen
      • Offentliggørelse skal beskrive den funktionalitet, som Accessibility Service-tilladelsen aktiverer for din app. Hver funktion, der bruges sammen med anmodningen om tilgængelighedstjeneste, skal angives i din offentliggørelse med begrundelse.

Alternativt kan du vælge at fjerne udgivelsen af ​​appen.

Alle overtrædelser spores. Alvorlige eller gentagne overtrædelser af enhver art vil resultere i lukning af din udviklerkonto og undersøgelse og mulig lukning af relaterede Google-konti.

Hvis du har gennemgået politikken og føler, at vi kan have taget fejl, bedes du kontakte vores politisk supportteam. En af mine kollegaer vil vende tilbage til dig inden for 2 hverdage.

Med venlig hilsen

Google Play-anmeldelsesteamet

Læs mere


Hvorfor fjerner Google tilgængelighedstjenester fra Play Butik?

Mens brugen af ​​tilgængelighedstjenester er kendt for at forårsage en del forsinkelse, er den egentlige grund til, at Google begynder at slå ned på disse apps, sandsynligvis relateret til det voksende problem med udnyttelser, der udnytter a11y. Selvom de apps, som jeg nævnte ovenfor, bruger meget til gavnlige formål, kan de nemt udnyttes af ondsindede udviklere til ondsindede formål. For eksempel en tilgængelighedstjeneste kan bruges til at implementere en keylogger, ransomware-angreb eller phishing-udnyttelse.

Googles indsats for at beskytte brugere mod ondsindede tilgængelighedstjenester har for det meste drejet sig om offentliggørelse. Aktiverer i øjeblikket en tilgængelighedstjeneste, der tilmelder sig visse arrangementer som f.eks TYPE_VIEW_TEXT_CHANGED vil resultere i en advarselsdialog om, at appen kan stjæle dine adgangskoder. Du tror måske, at en sådan besked ville være effektiv til at forhindre brugere i uansvarligt at give apps adgang. Der har dog været masser af dokumenterede tilfælde af apps, der narrede brugere til at give a11y. Nogle angreb går endnu længere, som f.eks Kappe og Dolk udnyttelse og Toast Message Overlay angreb som socialt manipulerer brugeren til at give a11y ved at misrepræsentere, hvad det er, de interagerer med på skærmen.

Angreb som disse er effektive på langt de fleste Android-enheder. Google har gjort store fremskridt med at forhindre overlejring eller toast-meddelelsesangreb (som det kan ses i AOSP, hvis du søger efter a11y), men tingene er nået til det punkt, hvor Google besluttede, at det var bedre at begrænse brugen af ​​tilgængelighedstjenester helt. Det giver mening, men det virkelig stinker fordi dette træk vil dræbe funktionaliteten af ​​en masse innovative apps.


Hvad kan udviklere gøre?

Desværre der er ikke meget udviklere kan gøre som reaktion på disse ændringer. Udviklere kan enten overholde Googles krav ved at fjerne deres tilgængelighedstjeneste eller stå over for truslen om, at deres app bliver fjernet og deres konto muligvis lukkes. Blot at tilføje en afsløring af, hvorfor deres app bruger a11y, ville kun fungere, hvis deres app lovligt var rettet mod at hjælpe brugere med handicap, hvilket ikke beskriver de fleste apps, der i øjeblikket bruger a11y.

Refaktorering af apps til ikke længere at bruge en tilgængelighedstjeneste er muligt for nogle, men ikke alle, af de apps, vi har nævnt. Adgangskodeadministratorer såsom LastPass kan migrere til Autofill Framework, men kun hvis brugeren kører Android 8.0 Oreo og nyere. Hvis en app bruger a11y til at overvåge, når andre apps er åbne, kan den app i stedet skrives med en polling-tjeneste ved hjælp af UsageStats API. Apps som Tasker kan overleve sådan en ændring. Andre som Button Mapper og AutoInput er uheldige – uden root er der ingen god måde at opsnappe KeyEvents.

Selvom vi erkender faren ved at tillade en ondsindet app adgang til Accessibility API'erne, er det en skam at se nogle virkelig nyttige apps blive kastreret af Google. Vi håber, at den politik, Google har udstukket, er omvendt, eller også hævder de blot, at den er blevet fejlfortolket. Som det står, er ordlyden i e-mailen ret klar - overhold vores retningslinjer, eller kom ud af Play Butik. Det er en dyster påmindelse om, at Google har al magten over, hvilke apps der hører hjemme i Play Butik, og de kan til enhver tid trække tæppet ud under dig.


Opdatering 1: Forvirrende udviklerdokumentation

Googles udviklerdokumenter til opbygning af en tilgængelighedstjeneste synes at modsige dette nye fokus fra Google Play Butik-teamet. Siden har følgende ordlyd i skrivende stund:

En tilgængelighedstjeneste er en applikation, der giver brugergrænsefladeforbedringer til at hjælpe brugere med handicap, eller som muligvis midlertidigt ikke er i stand til at interagere fuldt ud med en enhed. For eksempel kan brugere, der kører bil, tager sig af et lille barn eller deltager i en meget højlydt fest, have brug for yderligere eller alternativ interface-feedback.

Desuden, hvis du sammenligner formuleringen på siden med en arkiveret version af siden fra juli, vil du opdage, at noten om at bygge tilgængelighedstjenester kun for at hjælpe brugere med handicap ikke eksisterer.

Tak João Dias for at kontakte os med disse oplysninger.