Фильтрация приложений в Google Play Market


  Манифест     Фильтр     Функции     Разрешения     XML  

О проблемах с PlayMarket

Google Play (прежнее название Android Market) - это магазин приложений, а также игр и книг от компании Google. Этот магазин доступен через браузер либо из приложения Google Play Mаркет (PlayMarket) на любом устройстве с ОС Android.

При старте приложения PlayMarket оно передает на сервер Google Play информацию об особенностях устройства, на котором оно запущено. Эта информация используется и учитывается сервером при поиске или выборе запрошенных приложений таким образом, чтобы не показывать приложения, которые не подходят для данного устройства или не смогут на нем выполняться из-за отсутствия необходимого функционала.

Пользователи ТВ-боксов достаточно часто сталкиваются с ситуацией, когда при обновлении прошивки (или сразу в стоковой прошивке) обнаруживается странное поведение приложения PlayMarket, которое проявляется в том, что из него как бы пропадают многие привычные и полезные приложения. И при попытке поиска того или иного нужного приложения найти его невозможно.

На самом деле, с самим приложением PlayMarket ничего не произошло, однако при обновлении изменились XML-файлы (их набор или содержимое), имеющиеся в папке Permissions.

Например, в папке /vendor/etc/permissions структура файлов имела вид:

  • android.hardware.bluetooth.xml
  • android.hardware.bluetooth_le.xml
  • android.hardware.camera.external.xml
  • android.hardware.camera.flash-autofocus.xml
  • android.hardware.camera.front.xml
  • android.hardware.ethernet.xml
  • android.hardware.hardware_keystore.xml
  • android.hardware.keystore.app_attest_key.xml
  • android.hardware.opengles.aep.xml
  • android.hardware.reboot_escrow.xml
  • android.hardware.touchscreen.multitouch.xml
  • android.hardware.usb.accessory.xml
  • android.hardware.usb.host.xml
  • android.hardware.vulkan.compute.xml
  • android.hardware.vulkan.level.xml
  • android.hardware.vulkan.version.xml
  • android.hardware.wifi.direct.xml
  • android.hardware.wifi.passpoint.xml
  • android.hardware.wifi.xml
  • android.software.backup.xml
  • android.software.ipsec_tunnels.xml
  • android.software.midi.xml
  • android.software.opengles.deqp.level.xml
  • android.software.pppoe.xml
  • android.software.verified_boot.xml
  • android.software.vulkan.deqp.level.xml
  • id.hardware.camera.xml
  • tv_core_hardware.xml

Но после обновления версии прошивки из этой папки пропал файл android.hardware.touchscreen.multitouch.xml.

И в результате резко изменилось в худшую сторону поведение PlayMarket, который перестал находить и показывать нужные приложения. ( При этом некоторые пользователи ТВ-боксов даже воспринимают это как замену в прошивке приложения PlayMarket на некий урезанный вариант.)

Если посмотреть содержимое этого файла, то мы увидим, что в нем лежат всего три строки, которые сопровождаются таким комментарием:

"Это стандартный набор функций для сенсорного экрана, который поддерживает базовый мультитач с поддержкой жестов, но не полностью независимое отслеживание пальцев."


<permissions>
  <feature name="android.hardware.touchscreen" />
  <feature name="android.hardware.touchscreen.multitouch" />
  <feature name="android.hardware.faketouch" />
  </permissions>

Если открыть любой другой XML-файл в этой папке, то в нем также обнаружатся одна или несколько строк аналогичного формата.

Попробуем теперь разобраться в механизме влияния этих файлов и содержащихся в них строк на поведение приложения PlayMarket, а также некоторых других приложений.

Если совсем упрощенно: в манифесте любого приложения имеются элементы <uses-feature>, в которых объявлены функции устройства, необходимые для нормальной работы этого приложения. В свою очередь, в XML-файлах конкретного устройства прописаны функции, которые доступны в данном устройстве и могут быть выполнены. Приложение PlayMarket при запросе на установку (или в поиске) какого-либо приложения, имеющегося в его хранилище, сравнивает функции приложения и устройства на предмет соответствия желаемого действительному.

В приведенном выше примере из-за удаления файла android.hardware.touchscreen.multitouch.xml описанные в нем функции для работы с тачскрином (сенсорным экраном) тоже исчезли. Поэтому для плей-маркета такое устройство (тв-бокс) становится непригодным для установки приложений, требующих (если это объявлено в их манифестах) для своей нормальной работы наличие тачскрина. Хотя при этом многие из этих приложений будут на этом тв-боксе продолжать нормально работать, если их установить из другого источника.

Более подробно и в деталях эти процессы описаны здесь в разделах:

  • Манифест - как объявляются функции в приложениях
  • Фильтр - как PlayMarket осуществляет фильтрацию
  • Функции - справочник используемых функций
  • Разрешения - справочник используемых разрешений
  • XML - все функции в XML-файлах PERMISSIONS

    Приведенная здесь справочная информация основана на первоисточнике: Использование элементов feature

    Примечания

    1. На самом деле, этот документ (по ссылке) адресован, в первую очередь, разработчикам приложений, но содержащаяся в нем информация может быть полезна для понимания проблем, возникающих на конкретном устройстве (например, ТВ-боксе) при использовании плей-маркета или других приложений.

    2. В оригинальном доументе используется термин Features ("фичи", особенности и т.д.), которые здесь переведены как Функции.