Хабрахабр

Погружаемся в opensource-экосистему Android

Disclaimer о том, что пост не призывает к радикальным формам фанатизма

Вам не обязательно следовать каждому пункту из этого поста. Каждый выбирает свой "уровень погружения". Делайте выводы самостоятельно. Моя цель — показать, насколько хорошо развита экосистема на данный момент и чего вы можете и не можете от неё получить. Хотите — просто поставьте на свой телефон f-droid прямо рядом с gplay. Хотите — меняйте прошивку полностью и переходите на microg. Хотите — не делайте ничего.

Попробуем установить MicroG — свободную реализацию сервисов Google на Android. Давайте поговорим об экосистеме приложений свободных приложений с открытым исходным кодом на Android. Посмотрим, как и зачем со всем этим жить.

Несколько причин, почему стоит об этом задуматься

Google Play далеко "не торт"

Некоторые типы приложений теперь принципиально невозможно распространять (например, блокировщики рекламы, да и в принципе приложения обхода любых ограничений). Далеко ходить не нужно, в соседних постах можно найти множество примеров того, как разработчиков выгоняют из Google Play по тем или иным причинам, заставляя общаться с ботами без возможности реальной аппеляции.

Google способен как минимум удалить с моего телефона любое приложение в любой момент и собрать с него произвольные данные. Мне, как параноику, не нравится, что у стороннего лица появляется практически полный доступ к моему устройству. Для сравнения, дистрибутив MicroG может весить всего 4Мб. Более того, google play service — это огромное (стандартная поставка — 600Мб, минимальная — 95Мб) количество постоянно обновляющегося кода, часть которая работает с системными привилегиями.

Низкое качество приложений в google play, засилие рекламы, телеметрий, шпионских модулей, уязвимостей

После покупки, мне пришлось три дня ходить со стоковой прошивкой из-за ограничений разблокировки (вот она — еще одна причина не доверять свои устройства компаниям). Я, конечно, и раньше был не очень высокого мнения о среднестатистическом приложении для андроида, но был серьёзно удивлен своим новым телефоном одного китайского производителя. Мне постоянно (несколько раз в час) приходили непонятные уведомления (дайте разрешение, обновите меня, реклама). Я честно не понимаю, почему этим пользуются и почему это любят. Стоковый браузер в один момент просто перестал работать. Что-то постоянно обновлялось.

Энергопотребление

Если приложения не загружают рекламу, не отправляют статистику и не следят за вами, они потребляют меньше электроэнергии. Исходит из предыдущего тезиса. Да, Google в последнее время серьёзно работает над энергопотреблением. Это же касается gapps: зачастую, они являются главным потребителем электроэнергии. Во-вторых, даже в этих условиях замена gapps на более простое и минималистичное решение позволит вам еще сильнее продлить жизнь от батарейки. Однако, во-первых, не у всех есть возможность использовать актуальные версии Android.

Вторая жизнь старым устройствам без большого количества ОЗУ и/или места на диске?

Случалось ли с вами такое, что на бюджетном устройстве после очередного обновления gapps вообще не остается места ни на приложения, ни на пользовательские данные? Тоже логичное продолжение предыдущих моментов. Даже если на вашем не очень свежем устройстве еще достаточно свободных ресурсов, избавление от gapps позволит освежить его.

Несколько подводных камней, с которыми ничего не сделать

  • Далеко не для всего софта есть opensource-аналоги. Иногда они принципиально невозможны (те же банковские приложения). Иногда привычки слишком сложно поменять. Мой личный подход — пробовать использовать открытый аналог и потом, если он не устроит, переходить на закрытый.
  • Ничего не сделать с тем, что, возможно, придется "красноглазить". Однако, с момента первого моего поста на эту тему, все сильно изменилось в лучшую сторону.
  • Все может сломаться, и вы не получите своё push-уведомление с одноразовым паролем на проведение банковской операции, которую нужно сделать удавись, но прямо сейчас (увы, у меня такое было). Хотя, в последнее время, пуши ломаются только из-за РКН.
  • Некоторый проприетарный софт может не заработать. Или сломаться от обновления в самый неподходящий момент. К примеру, я очень долго без всяких проблем использовал Яндекс.Такси на старом телефоне, но при установке на новый оказалось, что приложение падает на логине.
  • Радикальным FSF-фанатиком быть не получится. Любая даже опенсорсная прошивка содержит огромное количество проприетарных блобов и компонентов. С этим ничего не сделать. Так что мы сосредоточимся на переходе на opensource-компоненты там, где это возможно.

Немного матчасти

  • Что такое gapps?

Включают в себя как базовые сервисы, необходимые для работы push-уведомлений, геолокации, синхронизации различных данных с Google так и остальной пользовательский софт, использующий всё это (например, Gmail). Google Play Services, gapps, Google Play.

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

  • Разблокировка загрузчика?

Обычно, требуется произвести эту процедуру, чтобы иметь возможность устанавливать любые другие прошивки. По умолчанию, устройства на Android идут с заблокированным загрузчиком. Разблокировка загрузчика обычно не только даёт возможность модифицировать системные разделы, но и отключает проверку подписи ядра при загрузке.

Точно так же, по умолчанию обычно их нет и необходимо их получать тем или иным способом. Права суперпользователя. Обычно в инструкциях предлагают ставить проприетарный и купленный китайцами SuperSU (мы их слушать не будем и поставим опенсорсный magisk). Либо установкой прошивки (для lineageos есть addon-su), либо magisk. В особо тяжелых случаях иногда приходится использовать эксплоиты (вроде KingRoot).

Обычно это TWRP, тоже проект с открытым исходным кодом. Позволяет устанавливать прошивки и их модификации в виде zip-архивов.

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

В контексте этого поста будет полезным модуль FakeGapps. Если Magisk предоставляет модули для модификации базовой системы, то xposed предоставляет модули для модификации и патчинга на лету самого Android. К сожалению, обычно поддержка прошивок отстает на одну версию android. Рекомендую ставить его через Magisk, и для конкретной API-версии (соответствующей вашей версии android).

Можно использовать как официальный репозиторий, так и сторонние. Каталог открытого ПО для Android.

Бывший Cyanogenmod. Флагман среди opensource-прошивок.

На каких устройствах это будет работать?

Условно все устройства можно поделить на следующие классы (в порядке убывания удобности):

  • Устройства с официальной поддержкой lineageos. Наличие официального порта обычно является не только гарантией более-менее нормальной работы, но и наличия множества других прошивок под это устройство. Естественно, лучше проверять информацию (и о наличии прошивок, и о возможных сюрпризах) на 4pda/xda до покупки. К сожалению, совсем новых устройств вы там обычно не увидите.
  • Устройства с неофициальными портами lineageos/других прошивок. Обычно, немного хуже, но жить все равно можно.
  • Устройства без сторонних прошивок, но с root. Сложнее избавляться от bloatware и gapps (однако, с NanoDroid это теперь можно делать в автоматическом режиме). Никаких гарантий, что вы удалили все вредоносные приложения от производителя.

При выборе устройства так же нужно смотреть на:

  • Собственно покрытие прошивками. Хорошее коммьюнити вокруг телефона обычно дает более крепкие гарантии на обновление прошивки, чем типичный производитель.
  • Некоторые производители ограничивают возможность разблокировки загрузчика.
    • Например, у xiaomi присутствует задержка от нескольких дней до недель от привязки телефона к аккаунту до первой разблокировки.
    • Huawei недавно в принципе перестала выдавать коды разблокировки (особо не разбирался, как минимум для нескольких устройств). Фу на них, но за несколько долларов до сих пор можно купить код разблокировки на стороне.

MicroG

Обеспечивает работу push-уведомлений, api геолокации в использующих это приложениях. MicroG — открытая реализация gapps. Список поддерживаемых api.

Способы установки, примерно соответствующие градации устройств выше: Для работы требуется функциональность подделки подписи в прошивке.

Самый простой и удобный способ из всех, рекомендую использовать именно его, если ваше устройство есть в списке поддерживаемых. Можно установить LineageOS for MicroG и получить практически все перечисленное практически из коробки.

Однако, в прошивке требуется поддержка подмены подписей (Signature Spoofing). Можно установить MicroG вручную на любую прошивку, не идущую в комплекте с gapps (почти любая не стоковая прошивка).

  • Смотрите инструкции. В довольно большом списке прошивок эта функциональность есть из коробки, достаточно только поставить сверху MicroG.
  • Остальные прошивки придется тем или иным способом патчить.
    • Самый удобный способ — модуль для XPosed FakeGapps. Не требует модификации самой системы.
    • Способы с модификацией системы. Не рекомендую, т.к. у меня это приводило к проблемам с производительности, но не могу сказать, правило это или исключение. Необходимо повторять после каждого обновления.
      • Способы патчинга на самом телефоне (nanodroid-patcher) занимают достаточно много времени (перекомпиляция достаточно жирного системного файла), но являются вторыми по удобству. У меня это приводило к проблемам с производительности, не рекомендую.
      • Способы патчинга с участием компьютера. Еще менее удобны, но при этом быстры, т.к. пересборка происходит на ПК. Требуют подключения телефона к ПК.

Не планировал описывать полную инструкцию, но опыт предыдущего поста показывает, что придется.

Про установку при помощи NanoDroid чуть ниже, здесь описана ручная процедура: Процесс установки зависит от способа.

  • Удалить gapps, если они есть. Например, при помощи приложения /d/gapps
  • Установить собственно необходимые apk. Из репозитория microg или NanoLx.
    • GmsCore.apk ("MicroG Services core" из репозитория). На Android 7 и выше это приложение нужно сделать системным (при помощи приложения или модуля magisk systemize), если вы хотите пользоваться бекендами поиска местоположения.
    • GmsProxy.apk ("MicroG Services Framework proxy" из репозитория)
    • Одну из реализаций PlayStore (это обязательно)
      • Приложение-заглушку FakeStore. Заглушке в настройках необходимо дать доступ на подделку подписей. В последний раз у меня с этим возникли какие-то проблемы, поэтому можно сделать adb shell pm grant com.android.vending android.permission.FAKE_PACKAGE_SIGNATURE с ПК или просто pm grant com.android.vending android.permission.FAKE_PACKAGE_SIGNATURE с телефона.
      • Переподписанный Google Play Store. Да, это возможно! Но такой apk предоставляет только репозиторий NanoLX.
    • Бекенды местоположения, если нужно. Например, MozillaNlpBackend. Позволяет телефону быстро определять своё местонахождение без GPS.

Мне на Android 9 понадобилось набрать *#*#2432546#*#*, без этого регистрация пуш-уведомлений не производилась. После установки и перезагрузки, необходимо зайти в настройки microg и пройтись по чеклисту, дать все необходимые разрешения. Тестировать работу можно при помощи Push notifications tester.

NanoLX NanoDroid

Помимо основных возможностей (удаление gapps и установка microg) имеет несколько приятных фич: Пожалуй, самый простой и удобный способ установить MicroG.

  • Удаление стандартных приложений и замена их на opensource-аналоги. Удобно, когда у вас телефон на условном MTK с сильно замусоренной стоковой прошивкой.
  • Установка Fdroid, YalpStore/AuroraStore с системными правами
  • Возможная установка патченного Google Play, совместимого с microG.

Достаточно установить несколько из следующих файлов:

  • NanoDroid: основной установщик. Устанавливает всё.
  • NanoDroid-setupwizard: графическая настройка основного установщика. Позволяет выбрать, какие компоненты будут установлены и какие действия будут совершены. Работает только на устройствах с arm/arm64.
  • NanoDroid-BromiteWebView: заменяет системный WebView на BromiteWebView со встроенной блокировкой рекламы.
  • NanoDroid-OsmAnd: устанавливает OsmAnd+.
  • NanoDroid-microg: устанавливает только microG.
  • NanoDroid-fdroid: устанавливает только FDroid и расширение, позволяющее устанавливать и обновлять приложения в фоновом режиме.
  • NanoDroid-patcher: включает поддержку Signature Spoofing (см выше).
  • NanoDroid-uninstaller: удаление ранее установленного.

Установка приложений из google play

Как было отмечено выше, есть несколько способов решения проблемы.

  • Можно установить патченную версию оригинального Google Play и жить, как обычно. Должно работать всё, включая микроплатежи в приложениях.
  • Aurora Store. Прекрасное, красивое, быстрое приложение. Может многое (из основного нужного — установка, обновление бесплатных приложений). Пока в бете и имеет некоторые проблемы со скачиванием через анонимный аккаунт (используйте свой неанонимный или пока обойтесь Yalp Store, это практически то же самое, но без красивого интерфейса и с еще более скромными системными требованиями (до сих пор поддерживается Android 2+)
  • PlayMaker позволяет на вашем сервере развернуть f-droid репозиторий с нужными вам приложениями из google play. Управление скачиваемыми приложениями производится через веб-интерфейс. Имеет очевидные ограничения, но очень удобен, если вы нечасто устанавливаете новые приложения и нуждаетесь лишь в способе их удобного обновления.
  • 4pda app&game: Безумное приложение, однако, предоставляющее быстрый доступ к обновлению ваших приложений. Может быть полезным тем, что на 4pda обычно выкладывают не только оригинальные версии, но и модифицированные (например, с удаленной рекламой). Лично я не одобряю, но знаю, что этим пользуются.
  • APKPure Сторонний сервис-зеркало Google Play. Не был замечен за перепаковкой приложений (подписи совпадают с оригинальными), но нет никаких гарантий, что так будет продолжаться и дальше.

Очень небольшой начальный набор из качественных opensource-приложений

  • K-9 Mail — почтовый клиент.
  • Bromite — форк Chromium со встроенной блокировкой рекламы и несколькими фичами для улучшения приватности. К сожалению, их fdroid-репозиторий частично заблокирован в Россиии, что несколько добавляет головной боли.
  • DAVx⁵ — синхронизация контактов и календаря с вашим owncloud/nextcloud сервером.
  • GadgetBridge — поддержка умных браслетов и часов. И даже умного вибратора Vibratissimo.
  • NewPipe — минималистичный клиент для YouTube. Умеет воспроизводить видео в фоновом режиме как музыку, загружать файлы.
  • KDE Connect — различные возможности по интеграции устройства на Android с десктопом под KDE (и не только!). Позволяет синхронизировать уведомления, просматривать и передавать файлы, а так же эмулировать тачпад и клавиатуру.

Update: только что появился пост с более широким обзором приложений.

Вместо выводов

С удобными приложениями, не напичканными рекламой и телеметрией, позволяющие мне не делиться своими данными с Google, но при этом работающими push-уведомлениями, позволили перестать мечтать о недостижимом (смене мобильной ОС на Sailfish/ubuntu phone/etc, где все бы равно для полноценной работы приходится использовать слой для поддержки Android-приложений) и начать жить. Лично мне переход на MicroG, F-Droid и AuroraStore дал тот Android, о котором я всегда мечтал.

Надеюсь, эта инструкция поможет вам понять, нужно ли вам это в принципе и успешно повторить этот результат.

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть