Google заплашва да премахне приложения с услуги за достъпност от Play Store

Google изпраща имейли, предупреждаващи разработчиците да не използват услугите за достъпност извън предвидената употреба, или техните приложения ще бъдат премахнати от Play Store.

Актуализация: LastPass току-що отговори към тази новина и заявява, че няма да има „незабавно въздействие“ за техните приложения за Android. Дали това означава или не, че други приложения ще бъдат смекчени, остава да видим.

Някои от най-иновативните приложения в Play Store са изградени върху използването на API по начини, които Google никога не е планирал. Има приложения, които могат да пренасочат вашите клавиши за сила на звука, за да пропускат музикални записи, да записват и възпроизвеждат въведени с докосване на уеб страници или игри и дори предоставят алтернативни клавиши за навигация, за да можете да използвате цялото устройство екран. Всички тези примери, които току-що споменах, разчитат на API за достъпност на Android. Но това може скоро промяна, тъй като екипът на Google Play Store изпраща имейли до разработчиците, като им казва, че могат

вече не прилагат услуги за достъпност, освен ако не следват указанията на Google.


Какво е услуга за достъпност?

За да разберем защо това е важно, първо трябва да обясним какво е достъпност във връзка с Android. Като цяло, достъпността се отнася до това да направите приложение за Android по-достъпно за потребители с определени увреждания, като например тези с увредено зрение. Въпреки че е в интерес на всеки разработчик да направи своите приложения по-достъпни за потребители с увреждания, има специален клас приложения, които са предназначени да подобрят използваемостта на всички приложения за Android за потребителите с увреждания. Те се наричат ​​услуги за достъпност.

Услугата за достъпност, обикновено наричана a11y, е приложение, към което системата може да подава определена информация в зависимост от събития услугата за достъпност се регистрира, за да слуша. Приложение, което иска да внедри услуга за достъпност, трябва да добави android.permission.BIND_ACCESSIBILITY_SERVICE разрешение за файла AndroidManifest, така че само системата да може да се свърже с услугата на приложението.

Например, ако е създадена услуга за достъпност, която да слуша TYPE_VIEW_CLICKED събития, тогава тази услуга ще получи информация от системата за всички бутони, които потребителят може да натисне. Услугата за достъпност може също така да реагира и използва определени жестове и KeyEvents, преди други приложения да ги получат. И накрая, услугата за достъпност може също така да инжектира определени KeyEvents като бутон за заден екран, разделен екран или бутон за скорошни приложения.

По този начин услугите за достъпност могат да бъдат изключително мощен и полезен. Няколко от най-популярните, иновативни приложения в Google Play Store разчитат на a11y, за да изпълняват своите задължения. Ето само някои от малкото примери, които измислих от главата си:

  • Автоматично въвеждане - прихващане на ключови събития и извършване на жестове с докосване/плъзгане
  • Картограф на бутони - прихващане на KeyEvents и пренасочване към други KeyEvents
  • Озеленяване - автоматично хибернация на приложения чрез принудителното им затваряне, преди екранът да се изключи
  • Въвеждане+ - открива кога приложението за клавиатура е отворено, за да покаже плаващия бутон за действие
  • LastPass - сканиране на страници за потребителско име/парола (необходимо преди Android Oreo)
  • Бързо превключване - изпращане на KeyEvent за бутона за връщане назад
  • Tasker - откриване кога приложенията са отворени, за да можете да извършвате всяко дефинирано от потребителя действие
  • Тип машина - записвайте целия въведен текст, така че никога да не загубите въведен текст

Нито едно от тези приложения не използва a11y по начина, по който Google е предвидил, а именно да помага на потребители с увреждания. Бих се обзаложил, че по-голямата част от приложенията, които прилагат услуга за достъпност, го правят за функции извън обхвата на Google. Но това е красотата на Android и API като Accessibility – Google обикновено не ограничава какво могат и какво не могат да правят разработчиците. Този небрежен подход с използването на услугите за достъпност обаче изглежда се променя, както и Google Play Екипът на магазина изпраща имейли до разработчиците, предупреждавайки ги за предстоящи промени в тяхната политика относно a11y.


Какво точно прави Google?

Компанията информира разработчиците, че ако тяхното приложение използва услуга за достъпност по някаква причина, различна от подпомагане на потребители с увреждания, тогава те трябва да премахнат използването на това разрешение в рамките на 30 дни или тяхното приложение ще бъде премахнато от Play Store. Неспазването на това изискване може да доведе до нарушение на акаунта на разработчика в Play Store, което може в крайна сметка да доведе до прекратяване на акаунта.

За малкото приложения, които използват a11y за подпомагане на потребители с увреждания, Google заявява, че тези разработчици трябва просто да добавят видно, насочено към потребителя разкриване на причината, поради която тяхното приложение се нуждае от разрешение. Въпреки това, както споменах преди, услугите за достъпност се използват много по-често в приложения, които в крайна сметка биха нарушили тази нова политика.

Пълен имейл, изпратен до разработчиците

Здравейте разработчици от ****,

Свързваме се с вас, защото вашето приложение, ****, с име на пакет **** изисква „android.permission. BIND_ACCESSIBILITY_SERVICE.' Приложенията, изискващи услуги за достъпност, трябва да се използват само за подпомагане на потребителите с увреждания да използват устройства и приложения с Android. Вашето приложение трябва да отговаря на нашите Разрешения политика и изискванията за ясно разкриване на нашата Потребителски данни политика.

Изисква се действие: Ако все още не го правите, трябва да обясните на потребителите как приложението ви използва „android.permission. BIND_ACCESSIBILITY_SERVICE“, за да помогне на потребителите с увреждания да използват устройства и приложения с Android. Приложенията, които не отговарят на това изискване в рамките на 30 дни, могат да бъдат премахнати от Google Play. Като алтернатива можете да премахнете всички заявки за услуги за достъпност в приложението си. Можете също да изберете да отмените публикуването на приложението си.

Ако трябва да направите промени в приложенията си, моля, изпълнете следните стъпки:

  • Прочетете Разрешения и Потребителски данни правила за повече подробности и се уверете, че приложението ви отговаря на всички правила, изброени в Програмни правила за разработчици.
  • Ако не се нуждаете от разрешението BIND_ACCESSIBILITY_SERVICE в приложението си или разрешението се използва за нещо различно от подпомагане на потребителите с увреждания да използват устройства и приложения с Android:
    1. Премахнете заявката си за това разрешение от манифеста на приложението си.
    2. Влезте в своята Play Console и качете своя модифициран, съвместим с правилата APK.
  • Или, ако имате нужда от разрешението BIND_ACCESSIBILITY_SERVICE в приложението си, за да помогнете на потребителите с увреждания да използват устройства и приложения с Android:
    1. Включете следния фрагмент в описанието на малката обява в магазина на вашето приложение: „Това приложение използва услуги за достъпност“.
    2. Осигурете на видно място разкриване на това използване, преди да помолите потребителя да активира това разрешение в приложението ви. Вашето разкриване трябва да отговаря на всяко от следните изисквания:
      • Разкриването трябва да бъде предоставено чрез android: резюме и android: описание елементи от класа AccessibilityServiceInfo
      • Разкриването трябва да описва функционалността, която разрешението за услугата за достъпност активира за вашето приложение. Всяка функция, използвана със заявката за услугата за достъпност, трябва да бъде декларирана във вашето разкриване с обосновка.

Като алтернатива можете да изберете да отмените публикуването на приложението.

Всички нарушения се проследяват. Сериозни или повтарящи се нарушения от каквото и да е естество ще доведат до прекратяване на вашия акаунт на програмист и до разследване и евентуално прекратяване на свързани акаунти в Google.

Ако сте прегледали правилата и смятате, че може да сме сгрешили, моля, свържете се с нашия екип за поддръжка на политики. Един от моите колеги ще се свърже с вас в рамките на 2 работни дни.

За разбирането,

Екипът за преглед на Google Play

Прочетете още


Защо Google премахва услугите за достъпност от Play Store?

Докато използването на услугите за достъпност са известно, че причинява доста забавяне, истинската причина, поради която Google започва да предприема мерки срещу тези приложения, вероятно е свързана с нарастващия проблем с експлойтите, които се възползват от a11y. Въпреки че приложенията, които споменах по-горе, използват a11y за полезни цели, те могат лесно да бъдат експлоатирани от злонамерени разработчици за нечестиви цели. Например услуга за достъпност може да се използва за реализиране на кийлогър, ransomware атака или фишинг експлойт.

Усилията на Google за защита на потребителите от злонамерени услуги за достъпност се въртят предимно около разкриването. В момента се активира услуга за достъпност, която се регистрира за определени събития, като напр TYPE_VIEW_TEXT_CHANGED ще доведе до диалогов прозорец с предупреждение, че приложението може да открадне вашите пароли. Може би си мислите, че такова съобщение би било ефективно за предотвратяване на безотговорно предоставяне на приложения на потребителите. Въпреки това има много документирани случаи на приложения, подвеждащи потребителите да предоставят a11y. Някои атаки отиват дори по-далеч, като например Подвиг на Cloak and Dagger и Toast Message Overlay атаки които социално проектират потребителя да предостави a11y чрез погрешно представяне на това, с което взаимодействат на екрана.

Атаки като тези са ефективни при по-голямата част от устройствата с Android. Google направи големи крачки в предотвратяването на атаки с наслагване или тост съобщения (както може да се види в AOSP, ако търсите a11y), но нещата стигнаха до точката, в която Google решиха, че е по-добре да ограничат използването на услугите за достъпност изцяло. Има смисъл, но наистина е гадно защото този ход ще убие функционалността на много иновативни приложения.


Какво могат да направят разработчиците?

За съжаление, там разработчиците не могат да направят много в отговор на тези промени. Разработчиците могат или да се съобразят с изискванията на Google, като премахнат своята услуга за достъпност, или да се изправят пред заплахата приложението им да бъде премахнато и акаунтът им евентуално да бъде прекратен. Простото добавяне на разкриване защо приложението им използва a11y ще работи само ако приложението им е законно насочено към подпомагане на потребители с увреждания, което не описва повечето приложения, които в момента използват a11y.

Рефакторингът на приложенията, за да не използват повече услуга за достъпност, е възможен за някои, но не всички, от приложенията, които споменахме. Мениджърите на пароли като LastPass могат мигрирайте към рамката за автоматично попълване, но само ако потребителят работи с Android 8.0 Oreo и по-нова версия. Ако дадено приложение използва a11y, за да наблюдава кога други приложения са отворени, това приложение може вместо това да бъде написано с услуга за анкетиране с помощта на API на UsageStats. Приложения като Tasker могат да преживеят такава промяна. Други като Button Mapper и AutoInput нямат късмет - без root няма добър начин за прихващане на KeyEvents.

Въпреки че осъзнаваме опасността от разрешаването на достъп на злонамерено приложение до API за достъпност, жалко е да видим някои наистина полезни приложения да бъдат кастрирани от Google. Надяваме се, че политиката, изложена от Google, е обърната или те просто твърдят, че е била изтълкувана погрешно. В сегашния си вид формулировката в имейла е доста ясна – съобразете се с нашите указания или излезте от Play Store. Това е мрачно напомняне, че Google разполага с цялата власт относно принадлежността на приложенията към Play Store и те могат да извадят килима изпод вас по всяко време.


Актуализация 1: Объркваща документация за разработчици

Документи за разработчици на Google за изграждане на услуга за достъпност изглежда противоречат на този нов фокус от екипа на Google Play Store. Към момента на писане на страницата има следната формулировка:

Услугата за достъпност е приложение, което предоставя подобрения на потребителския интерфейс, за да помогне на потребители с увреждания или които може временно да не могат да взаимодействат напълно с дадено устройство. Например потребители, които шофират, грижат се за малко дете или посещават много шумно парти, може да се нуждаят от допълнителна или алтернативна обратна връзка за интерфейса.

Освен това, ако сравните формулировката на страницата с архивирана версия на страницата от юли, ще откриете, че бележката за изграждане на услуги за достъпност само за подпомагане на потребители с увреждания не съществува.

Благодаря на Жоао Диас, че се свърза с тази информация.