Сегодня в выпуске: рассказ о решении некоторых проблем безопасности в Android Q, разбор работы новой системы обновления Android APEX, реверс северокорейского смартфона, введение в контекстно ориентированное программирование на Kotlin, а также советы по работе с GitHub и работе с Google Play Console.
 

Почитать

 

Чего ожидать в Android Q

Android Q May Block Background Clipboard Reads, Better Protect Your Media Files, Support Downgrading Apps, and more — журналисты XDA Developers продолжают изучать непонятно как попавшую к ним раннюю сборку Android Q.

Ранее они уже рассказывали о новом шрифте, изменяемых цветовых схемах, темной теме интерфейса, а также о новом полномочии для приложений, которое позволит отключать доступ к местоположению, когда приложение находится в фоне (разрешение ACCESS_BACKGROUND_LOCATION, примерно такое же есть в iOS).

Теперь они рассказывают о более низкоуровневых вещах:

  1. Запрет на чтение буфера обмена в фоне. В Android любое приложение может прочитать буфер обмена безо всяких разрешений. Это security-фейл из-за ошибки проектирования: читать буфер обмена приложениям нужно, чтобы пользователь смог скопировать текст в их поле ввода. Судя по всему, инженеры Google не придумали, как безболезненно устранить этот недочет, поэтому решили хотя бы частично обезопасить пользователей, введя новое разрешение — READ_CLIPBOARD_IN_BACKGROUND. Без этого разрешения приложения не смогут читать буфер обмена, находясь в фоне, а получить его может только системный софт из состава прошивки.
  2. Возможность даунгрейдить приложения. В Android Q появятся доступные только приложениям из комплекта прошивки разрешения PACKAGE_ROLLBACK_AGENT и MANAGE_ROLLBACKS, а у команды pm, позволяющей устанавливать и удалять приложения из командной строки, появится флаг --enable-rollback. Это свидетельство, что добавится возможность откатиться до старых версий приложения.
  3. Ограничение на доступ к файлам на карте памяти. Сейчас, имея разрешения READ_EXTERNAL_STORAGE и WRITE_EXTERNAL_STORAGE, приложения могут читать всю карту памяти целиком, включая любые файлы, не принадлежащие самому приложению. Так сделано потому, что в картах памяти используется файловая система без разграничения полномочий, а также потому, что бесполезно разграничивать доступ на носителе, который в любой момент можно вынуть и прочитать все данные. Android Q позволит разграничить доступ к файлам на уровне их типов; появятся разрешения READ_MEDIA_AUDIO, READ_MEDIA_VIDEO и READ_MEDIA_IMAGES.
 

Модульный Android

APEX in Android Q: What Could Be The Biggest Thing Since Project Treble — статья об APEX, новой подсистеме Android, которая должна смягчить проблему с обновлениями ОС в будущем.

Как мы все знаем, Google испытывает огромные проблемы с обновлениями Android. Только малая часть производителей соглашается поддерживать устройства в течение хотя бы двух лет. Остальные же выпускают на рынок смартфон и переходят к разработке нового. А старое устройство если уж и обновляется, то с очень большими задержками.

Чтобы как-то решить эту проблему, Google уже реализовала идею патчей безопасности и инициировала Project Treble. Последний разделяет Android на две независимые части, которые можно обновлять отдельно друг от друга. Идея здесь в том, что обычно проблемы с обновлениями возникают из-за производителей оборудования, которые отказываются обновлять драйверы своих устройств для новых версий Android. Project Treble позволяет обновлять ОС, не затрагивая драйверы и ядро Android.

Однако на этом Google не остановилась. В Android Q Google собирается внедрить подсистему APEX, которая позволит обновлять куски Android даже в обход производителя устройства. По своей сути APEX — это пакетный менеджер, очень похожий на тот, что используется в дистрибутивах Linux и новой операционке Google Fuchsia. Работает он примерно так: допустим, по очередному указу правительства в России вновь изменяют часовые пояса. Команда разработчиков Android формирует новую версию пакета с часовыми поясами и выкладывает ее в Google Play. Пользователи получают обновление — все счастливы.

Содержимое пакета APEX
Содержимое пакета APEX

Таким же образом могут быть обновлены библиотеки и целые подсистемы. Уже сейчас в AOSP доступны пакеты с рантаймом ART («виртуальная машина», ответственная за запуск приложений) и библиотека криптографических алгоритмов conscrypt. В теории в пакет APEX можно упаковать практически любой компонент системы, и пользователи смогут обновить его независимо от производителя смартфона.

Интересно, что APEX не производит обновление «на живую», когда старый компонент заменяется на новый. Раздел /system в Android недоступен для записи, поэтому APEX использует трюк с монтированием. Все обновляемые файлы внутри пакета APEX находятся в образе файловой системы ext4. Когда происходит «установка» пакета, система монтирует этот образ поверх раздела /system в режиме bind. В результате файлы пакета как бы заменяют оригинальные файлы Android, хотя в реальности все остается на своих местах.

Точно такой же трюк использует Magisk для установки модификаций Android без изменения раздела /system. И его автор уже сказал, что APEX станет проблемой для Magisk.

Процесс «установки» пакета APEX
Процесс «установки» пакета APEX

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score! Подробнее

Вариант 2. Открой один материал

Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.


Check Also

Корпоративный КоПИРАТ. О конфликтах между работодателями и сотрудниками по исключительным правам

Программисты, меняя компанию-нанимателя, порой уносят с собой из старого офиса не только а…

1 комментарий

  1. Аватар

    AseN

    11.02.2019 at 22:15

    «Ограничение на доступ к файлам на карте памяти. Сейчас, имея разрешения READ_EXTERNAL_STORAGE и WRITE_EXTERNAL_STORAGE, приложения могут читать всю карту памяти целиком»

    Забыли про SAF?

Оставить мнение