- Android от А до Я: Что такое открытый исходный код и открытое ПО (open source)
- Беседка №97. Открытый код спасёт Android
- Илья Субботин
- Открытый код — это модель разработки
- Открытый код обеспечивает нулевую фрагментацию
- «Закрытое» ПО не поможет
- Хаос в Linux.
- Что является причиной фрагментации?
- Совсем не обязательно «закрывать» Android
- Вывод
- Погружаемся в opensource-экосистему Android
- Несколько причин, почему стоит об этом задуматься
- Google Play далеко «не торт»
- Низкое качество приложений в google play, засилие рекламы, телеметрий, шпионских модулей, уязвимостей
- Энергопотребление
- Вторая жизнь старым устройствам без большого количества ОЗУ и/или места на диске?
- Несколько подводных камней, с которыми ничего не сделать
- Немного матчасти
- На каких устройствах это будет работать?
- MicroG
- NanoLX NanoDroid
- Установка приложений из google play
- Очень небольшой начальный набор из качественных opensource-приложений
- Вместо выводов
Android от А до Я: Что такое открытый исходный код и открытое ПО (open source)
Открытое программное обеспечение (open-source software) предназначено для свободного доступа к исходному коду для всех желающих. Существуют разные лицензии с разными условиями использования от GPL (GNU General Public License) и до более лояльной Apache License. Первая разрешает бесплатное распространение при условии использования этой же лицензии для последующей продукции. Вторая не требует обязательного распространения готового продукта и открытости исходного кода. Android использует обе. Внутри продолжение рассказал об открытом исходном коде и открытом ПО.
Ядро Linux, которое используется в ОС, попадает под действие GPL. Это означает, что все изменения исходного кода должны быть доступны общественности после официального выхода софта. На практике это должно выглядеть следующим образом: такие производители как HTC, Samsung, Motorola, выпуская новое устройство, обязаны делать открытый доступ к исходному коду с моменты выпуска этого устройства. В большинстве своем производители железа немного затягивают с этим.
Исходный код для ОС Android как правило попадает под действие Apache License. Каждый может загрузить исходный код и изменить его, при этом нет необходимости делать код доступным для всех. По этой причине Android не могут изменить или усовершенствовать HTC Sense или MotoBlur. Несмотря на то, что подобная ситуация не нравится многим пользователям, она не может быть изменена в силу коммерческих причин. Если бы производители делали доступными все свои секреты, то отпала бы финансовая причина создавать различные инновации для опережения соперников в конкурентной борьбе. Таким образом, использование более лояльной лицензии является полностью оправданным. Выпуск новых устройств регулярно подтверждает это.
Источник
Беседка №97. Открытый код спасёт Android
Илья Субботин
Мнение, диаметрально противоположное высказанному в прошлой Беседке. Так ли всё печально в ситуации с открытым кодом?
Адриан Кингсли-Хьюз в рамках своего материала на ресурсе ZDNet поделился интересными взглядами по поводу Android, назвав фрагментацию главной проблемой ОС. Однако, сам факт, является ли она на самом деле проблемой, зависит от того, кому адресован этот тезис. Среднестатистические пользователи не испытывают неудобств из-за фрагментации, т.к. Google решила проблему, разделив операционную систему и приложения / сервисы.
Пользователи даже устаревших версий Android могут спокойно получать обновления сервисов Google и приложений. На моём Nexus 7 2012 года и устройствах Samsung Galaxy установлены новейшие версии приложений и игр, включая Netflix, Plex, YouTube и HBO Now. Версия приложений на упомянутых устройствах совпадает с таковой на моих новинках — Pixel C и Nexus 6P. Подобная ситуация бросает тень на iOS, где новейшие версии приложений недоступны для сравнительно более старых смартфонов и планшетов, делая эти устройства менее безопасными и менее практичными.
Кингсли-Хьюз задаётся вопросом, что можно сделать для устранения проблемы, и выдвигает предположение о том, что возможным решением станет превращение Android в систему с закрытым исходным кодом. Я считаю такой подход неправильным, о причинах далее.
Открытый код — это модель разработки
Люди склонны неправильно интерпретировать понятие «открытый код». Оно обозначает модель разработки ПО, а не способ его развертывания на устройства и не бизнес-модель. Разработка Android и «выкатывание» обновлений на устройствах — совершенно разные вещи.
Открытый код обеспечивает нулевую фрагментацию
Chrome OS является операционной системой с открытым кодом, как и Android. Но с самого начала Google использовала другой механизм для «доставки» обновлений на устройства с Chrome OS. Был использован подход с промежуточным образом: на устройство устанавливались два образа операционной системы, один из которых обеспечивал работу систему, второй же просто находился «на фоне». При наличии обновления оно замещало неактивный и устаревший образ ОС. После перезагрузки устройство переключалось на новую версию. Таким образом, устройство всегда имело актуальную версию ПО без каких-либо усилий со стороны пользователя.
Ту же модель использует Core OS, дистрибутив на базе Linux для серверов. Браузер Chrome имеет в своей основе открытый код, который также обновляется. Подобным образом обновляются Mozilla Firefox и Thunderbird. Используя ПО с открытым кодом, вы можете осуществлять планомерное обновление устройств.
«Закрытое» ПО не поможет
Неоправданным и необоснованным выглядит и убеждение о магической способности ПО с закрытыми исходниками справляться с фрагментацией. Примером максимально проприетарного ПО является Windows, фрагментация в случае этой ОС носит ужасающий характер: Windows XP — 10%, Windows 7 — 49%, Windows 8 — 2.45%, Windows 8.1 — 8%, Windows 10 — 19%. Хуже всего то, что 95% процентов банкоматов по всему миру до сих пор работают на Windows XP, что говорит отнюдь не об их безопасности. Что касается фрагментации Internet Explorer, то и тут всё далеко не радужно, несмотря на проприетарный характер продукта. Даже Apple, имея полный контроль над аппаратным и программным обеспечением своих продуктов, испытывает трудности при обновлении iOS и macOS.
Хаос в Linux.
В своём сравнении Android с Linux автор выдвинул следующее мнение:
..На примере Android можно на практике увидеть, в какой хаос превратилась бы Linux, если бы она пользовалась повсеместной популярностью у производителей аппаратного обеспечения. Кто-то где-то должен взять управление ситуацией на себя и поставить интересы платформы выше доли рынка и прибыли…
Автор удивится, но Linux на самом деле пользуется популярностью у OEM-производителей «железа». Linux имеет значительный вес во всём, кроме версий для ПК. Всё же, расстановка сил понемногу меняется, по мере того, как Chrome OS активно отъедает долю у Microsoft. Популярность Linux дошла до того, что Microsoft разработала операционную систему, основанную на Linux и предназначенную для работы с Azure. Не будем забывать, что доля компьютеров на базе Linux для Azure выросла с 25 до 33 процентов. Так что Linux успешно развивается даже на «территории» Microsoft. На базе Linux работает почти всё: суперкомпьютеры, роутеры, принтеры, Comcast X1, Tesla и т.д.
Несмотря на распространенность Linux в различных отраслях и всю противоречивость этого факта мнению Кингсли-Хьюза, Linux на самом деле не мешало бы привести в порядок. Благодаря открытой модели разработки, самые активные представители сообщества по разработке ядра Linux продолжают выпускать заплатки для уязвимостей ОС, выпуская обновление раз в два месяца. До сих пор можно найти системы на базе устаревших и неподдерживаемых версий Linux. В интервью с Грегом Кроа-Хартманом, ведущим разработчиком ядра Linux, им было высказано мнение о том, что компаниям необходимо создать механизм для поддержки обновления систем до актуальной версии. Он также высоко оценил способ обновления Chrome OS и Core OS.
Повторюсь, открытый код никак не связан с обновлениями ПО. Совершенно разные области.
Что является причиной фрагментации?
Корень проблемы — в желании OEM-производителей дифференцировать себя от конкурентов путём использования собственных тем оформления и ПО. Операторы связи используют множество предзустановленных программ как дополнительный источник дохода. Процесс обновления таких устройств тормозится: производителям и операторам необходимо протестировать свой «фуфлософт» на предмет его стабильной работы с новой версией Android. А раз обновлению до новой версии ОС не способствует финансовый стимул, то они его откладывают. Они зарабатывают на продажи устройств, а не на их обновлении. Был бы финансовый стимул — были бы и своевременные обновления. Так что если Google хочет покончить с проблемой фрагментации Android, то ему необходимо найти способ исключить этих игроков из процесса обновлений, что Google и собирается сделать.
Совсем не обязательно «закрывать» Android
Хоть в Google и решили проблему обновления приложений на устройствах с устаревшими версиями ПО в обход производителей и операторов, сейчас в компании работают над способом обновления Android, подобным таковому в Chrome OS. В рамках релиза новой версии Android Nougat обновление по мере доступности будет загружаться на устройство подобно образу в Chrome OS и после перезапуска системы уже будет работать без сучка и задоринки.
Вывод
В конечном итоге, открытый характер системы на самом деле лучше «приспособлен» для решения проблемы фрагментации, чем любое проприетарное ПО в мире. Перед тем, как размышлять о превращении Android в подобный софт, стоит взглянуть на ужас, творящийся с фрагментацией Windows и IE. Открытый код не убивает Android: ОС процветает и продолжает теснить iOS и Windows.
Вполне адекватный и обоснованный контраргумент. Как мы можем видеть, понемногу проблема с фрагментацией по версиям Android постепенно сглаживается, да и такого беспокойства, как раньше, проблема не вызывает. Новый механизм обновлений? Ну почему бы и нет, если он на самом деле избавит Android от фрагментации и устранит, то поклонники Android будут только за. Понравился пассаж про предустановленное ПО, у некоторых производителей ситуация с подобными приложениями переходит все рамки разумного, причем грешат этим вполне крупные игроки. Итак, два мнения об открытом коде: какое ближе вам? Считаете ли вы фрагментацию всё еще актуальной проблемой?
Источник
Погружаемся в opensource-экосистему Android
Каждый выбирает свой «уровень погружения». Вам не обязательно следовать каждому пункту из этого поста. Моя цель — показать, насколько хорошо развита экосистема на данный момент и чего вы можете и не можете от неё получить. Делайте выводы самостоятельно. Хотите — меняйте прошивку полностью и переходите на microg. Хотите — просто поставьте на свой телефон f-droid прямо рядом с gplay. Хотите — не делайте ничего.
Давайте поговорим об экосистеме приложений свободных приложений с открытым исходным кодом на Android. Попробуем установить MicroG — свободную реализацию сервисов Google на Android. Посмотрим, как и зачем со всем этим жить.
Несколько причин, почему стоит об этом задуматься
Google Play далеко «не торт»
Далеко ходить не нужно, в соседних постах можно найти множество примеров того, как разработчиков выгоняют из Google Play по тем или иным причинам, заставляя общаться с ботами без возможности реальной аппеляции. Некоторые типы приложений теперь принципиально невозможно распространять (например, блокировщики рекламы, да и в принципе приложения обхода любых ограничений).
Мне, как параноику, не нравится, что у стороннего лица появляется практически полный доступ к моему устройству. Google способен как минимум удалить с моего телефона любое приложение в любой момент и собрать с него произвольные данные. Более того, google play service — это огромное (стандартная поставка — 600Мб, минимальная — 95Мб) количество постоянно обновляющегося кода, часть которая работает с системными привилегиями. Для сравнения, дистрибутив MicroG может весить всего 4Мб.
Низкое качество приложений в google play, засилие рекламы, телеметрий, шпионских модулей, уязвимостей
Я, конечно, и раньше был не очень высокого мнения о среднестатистическом приложении для андроида, но был серьёзно удивлен своим новым телефоном одного китайского производителя. После покупки, мне пришлось три дня ходить со стоковой прошивкой из-за ограничений разблокировки (вот она — еще одна причина не доверять свои устройства компаниям). Я честно не понимаю, почему этим пользуются и почему это любят. Мне постоянно (несколько раз в час) приходили непонятные уведомления (дайте разрешение, обновите меня, реклама). Что-то постоянно обновлялось. Стоковый браузер в один момент просто перестал работать.
Энергопотребление
Исходит из предыдущего тезиса. Если приложения не загружают рекламу, не отправляют статистику и не следят за вами, они потребляют меньше электроэнергии. Это же касается gapps: зачастую, они являются главным потребителем электроэнергии. Да, Google в последнее время серьёзно работает над энергопотреблением. Однако, во-первых, не у всех есть возможность использовать актуальные версии Android. Во-вторых, даже в этих условиях замена gapps на более простое и минималистичное решение позволит вам еще сильнее продлить жизнь от батарейки.
Вторая жизнь старым устройствам без большого количества ОЗУ и/или места на диске?
Тоже логичное продолжение предыдущих моментов. Случалось ли с вами такое, что на бюджетном устройстве после очередного обновления gapps вообще не остается места ни на приложения, ни на пользовательские данные? Даже если на вашем не очень свежем устройстве еще достаточно свободных ресурсов, избавление от gapps позволит освежить его.
Несколько подводных камней, с которыми ничего не сделать
Немного матчасти
Google Play Services, gapps, Google Play. Включают в себя как базовые сервисы, необходимые для работы push-уведомлений, геолокации, синхронизации различных данных с Google так и остальной пользовательский софт, использующий всё это (например, Gmail).
Тип уведомлений, работающий через сторонний сервер. Позволяет значительно экономить батарейку, т.к. устройство может полностью заснуть и просыпаться через небольшие промежутки времени, проверяя только одно сетевое соединение на наличие новых событий.
По умолчанию, устройства на Android идут с заблокированным загрузчиком. Обычно, требуется произвести эту процедуру, чтобы иметь возможность устанавливать любые другие прошивки. Разблокировка загрузчика обычно не только даёт возможность модифицировать системные разделы, но и отключает проверку подписи ядра при загрузке.
Права суперпользователя. Точно так же, по умолчанию обычно их нет и необходимо их получать тем или иным способом. Либо установкой прошивки (для lineageos есть addon-su), либо magisk. Обычно в инструкциях предлагают ставить проприетарный и купленный китайцами SuperSU (мы их слушать не будем и поставим опенсорсный magisk). В особо тяжелых случаях иногда приходится использовать эксплоиты (вроде KingRoot).
Позволяет устанавливать прошивки и их модификации в виде zip-архивов. Обычно это TWRP, тоже проект с открытым исходным кодом.
Помимо предоставления root, имеет встроенный модуль для скрытия этого самого root от некоторых приложений (полезно для банк-клиентов) и большое множество сторонних модулей. В контексте этого поста для нас будет самым полезным модуль для установки Xposed.
Если Magisk предоставляет модули для модификации базовой системы, то xposed предоставляет модули для модификации и патчинга на лету самого Android. В контексте этого поста будет полезным модуль FakeGapps. Рекомендую ставить его через Magisk, и для конкретной API-версии (соответствующей вашей версии android). К сожалению, обычно поддержка прошивок отстает на одну версию android.
Каталог открытого ПО для Android. Можно использовать как официальный репозиторий, так и сторонние.
Флагман среди opensource-прошивок. Бывший Cyanogenmod.
На каких устройствах это будет работать?
Условно все устройства можно поделить на следующие классы (в порядке убывания удобности):
- Устройства с официальной поддержкой lineageos. Наличие официального порта обычно является не только гарантией более-менее нормальной работы, но и наличия множества других прошивок под это устройство. Естественно, лучше проверять информацию (и о наличии прошивок, и о возможных сюрпризах) на 4pda/xda до покупки. К сожалению, совсем новых устройств вы там обычно не увидите.
- Устройства с неофициальными портами lineageos/других прошивок. Обычно, немного хуже, но жить все равно можно.
- Устройства без сторонних прошивок, но с root. Сложнее избавляться от bloatware и gapps (однако, с NanoDroid это теперь можно делать в автоматическом режиме). Никаких гарантий, что вы удалили все вредоносные приложения от производителя.
При выборе устройства так же нужно смотреть на:
- Собственно покрытие прошивками. Хорошее коммьюнити вокруг телефона обычно дает более крепкие гарантии на обновление прошивки, чем типичный производитель.
- Некоторые производители ограничивают возможность разблокировки загрузчика.
- Например, у xiaomi присутствует задержка от нескольких дней до недель от привязки телефона к аккаунту до первой разблокировки.
- Huawei недавно в принципе перестала выдавать коды разблокировки (особо не разбирался, как минимум для нескольких устройств). Фу на них, но за несколько долларов до сих пор можно купить код разблокировки на стороне.
MicroG
MicroG — открытая реализация gapps. Обеспечивает работу push-уведомлений, api геолокации в использующих это приложениях. Список поддерживаемых api.
Для работы требуется функциональность подделки подписи в прошивке. Способы установки, примерно соответствующие градации устройств выше:
Можно установить LineageOS for MicroG и получить практически все перечисленное практически из коробки. Самый простой и удобный способ из всех, рекомендую использовать именно его, если ваше устройство есть в списке поддерживаемых.
Можно установить MicroG вручную на любую прошивку, не идущую в комплекте с gapps (почти любая не стоковая прошивка). Однако, в прошивке требуется поддержка подмены подписей (Signature Spoofing).
- Смотрите инструкции. В довольно большом списке прошивок эта функциональность есть из коробки, достаточно только поставить сверху 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.
После установки и перезагрузки, необходимо зайти в настройки microg и пройтись по чеклисту, дать все необходимые разрешения. Мне на Android 9 понадобилось набрать *#*#2432546#*#* , без этого регистрация пуш-уведомлений не производилась. Тестировать работу можно при помощи Push notifications tester.
NanoLX NanoDroid
Пожалуй, самый простой и удобный способ установить MicroG. Помимо основных возможностей (удаление gapps и установка 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-приложений
Update: только что появился пост с более широким обзором приложений.
Вместо выводов
Лично мне переход на MicroG, F-Droid и AuroraStore дал тот Android, о котором я всегда мечтал. С удобными приложениями, не напичканными рекламой и телеметрией, позволяющие мне не делиться своими данными с Google, но при этом работающими push-уведомлениями, позволили перестать мечтать о недостижимом (смене мобильной ОС на Sailfish/ubuntu phone/etc, где все бы равно для полноценной работы приходится использовать слой для поддержки Android-приложений) и начать жить.
Надеюсь, эта инструкция поможет вам понять, нужно ли вам это в принципе и успешно повторить этот результат.
Источник