Feature flags что это android
Android 9 Pie Feature Flags: What is it and how to enable it
Mobile devices have sure come a long way from what they were initially intended to offer – means to communicate on the go with no strings attached. Today, smartphones are the most personal form of technology that you can find on the face of this planet, and thanks to the innovation brought forward by Android OS in the past few years, we’ve been able to do a whole lot more than just call and text.
With the release of Android 9 Pie, Google is stepping up its game one more time to bring you a suite of features that not only boost the overall productivity but offer something new altogether. Apart from all of the obvious changes in the latest version of Android, there are some hidden gems in there too, one of them being the Feature Flags menu that has been tucked away in the Developer Options.
What are Feature Flags?
If you’ve been using the Google Chrome browser long enough, you should be familiar with the fact that a bunch of experimental features is packed into the Chrome Flags menu. Google is trying to do somewhat of a similar thing with the Android 9 Pie update as well, by bringing in an entire menu of experimental features under the wing of Feature Flags.
How to enable Feature Flags?
The Feature Flags menu is a part of the Developer Options of the Android 9 Pie system, so you will need to enable the Developer Options before you can proceed any further.
Now that you have the Developer Options enabled from the Settings, you will be able to access it and then activate the Feature Flags as well.
Trying out the Feature Flags options
At the moment, the list of features that you can experiment within the Feature Flags menu is strictly limited. However, you can expect the list of features to grow substantially as newer updates are released for the eligible devices soon enough.
What is the purpose of Feature Flags?
Probably the most revered feature in the Google Android ecosystem is the stock feel that comes with it. Google has maintained this for years, but with the addition of Featured Flags, you can expect the inclusion of additional ways for users to change the functionality, look and feel of the system from a single menu.
Although the number of options available under the Feature Flags is considerably limited right now, it would not be altogether surprising to see the list to grow out as large as the Chrome Flags we see in the mobile browser. We’ll be updating the Featured Flags list of commands as they come out with each update pushed out by Google.
What are your thoughts on the Featured Flags option menu that is tucked away in the Android 9 Pie system? Do let us know down below in the comments section.
Feature Flags и фабрика ПО
Наши команды практикуют подход Trunk Based Development – новый код сразу добавляется в мастер-ветку, сторонние ветки живут максимум несколько дней. А чтобы коммиты не мешали друг другу, разработчики используют фича-флаги (Feature Flags) – переключатели в коде, которые запускают и останавливают работу его компонентов.
Рассмотрим обычную итерацию разработки: планирование, уточнение требований, создание задач в трекере, разработка. По мере готовности задачи разворачиваются на тестовом окружении для проверки, релизная ветка стабилизируется. Потом наконец наступает выпуск, и команда может наконец получить реальную обратную связь от пользователей.
Если вы стремитесь сокращать Time-to-Market, это недопустимо долго. Чем раньше вы получите обратную связь от пользователей, тем скорее вы исправите ошибки, тем меньше времени вы тратите на неудачные идеи, тем больше ресурсов можете уделить идеям удачным.
Чтобы обновления быстрее доезжали до прода, одна итерация должна включать одну фичу. Именно поэтому нужно сокращать срок жизни веток.
Проблемы долгоживущих веток
Конфликты между коммитами (Merge hell). Откладывание релиза, интеграция с внешней системой, прочие внешние факторы могут привести код в нерабочее состояние.
Трудности с шарингом кода. Другим членам команды может потребоваться код из новой ветки, если фичи зависят друг от друга. Приходится стартовать ещё одну ветку только ради доступа к этому коду.
Проблемы тестового окружения. Если тестовый сервер один, а фиче-веток много, параллельно тестировать задачи не получится.
Тяжело откатить изменения. Проблемы после релиза – обычное дело, и если из-за новой фиче-ветки начинаются сбои, разработчикам приходится выбирать между хотфиксом и ревертом, лезть в исходный код, заново выкладывать решение.
Как Trunk Based Development решает эти проблемы
Trunk Based Development (от англ. trunk – «ствол дерева») – метод разработки кода на основе одной главной ветки. В отличие от подхода Gitflow, TBD позволяет разработчикам добавлять новые модули сразу в master. Второстепенные feature-ветки также могут создаваться, но они имеют короткий срок жизни.
Trunk Based Development предполагает только одну ветку для разработки, которая называется trunk. В любой момент эту ветку можно развернуть её на проде, а разработка, как и прежде, идёт в отдельных фича-ветках. Только теперь эти ветки живут не более двух дней.
Все изменения в trunk вливаются через пул-реквесты. Изменения небольшие, поэтому процесс ревью не затягивается. Попадание нового кода в trunk запускает процессы автоматического билда, тестов и развёртывания на необходимые окружения.
Но как вести разработку в одной ветке, если какие-то фичи ещё не готовы, а релиз завтра? Тут нам на помощь приходят Feature Flags.
Как работают Feature Flags
По сути своей, это IF-блок, который запускает кусок кода при выполнении некого условия. Самое простое – разработчик сам прописывает, включать или выключать код. Могут быть параметры посложнее: например, по расписанию или только для пользователей с такими-то уровнем доступа. Или наоборот – фича отключается, если нагрузка на систему превышает заданный порог.
В точке переключения мы обращаемся к переключателю (toggle router), который определяет состояние фичи. Чтобы понять, какой нужен флаг, роутер обращается к его конфигурации и контексту. Первая определяет общую стратегию включения флага (основные условия для его работы), второй включает любую дополнительную информацию (например, имя пользователя, который отправил запрос, текущее время и т.д.).
Как использовать Feature Flags
Технически фиче-флаги работают одинаково, а по способу применения их можно разделить на следующие категории:
Релизные (release toggles): скрывают неготовые фичи, уменьшают количество веток, открепляют запуск фичи от даты деплоя. Основной тип флагов.
Экспериментальные (experiment toggles): используются для A/B тестирования, позволяют таргетировать функции на разные группы пользователей. Таким образом вы можете развернуть новый сервис на Х% аудитории, чтобы оценить нагрузку или собрать первые отзывы.
Разрешающие (permission toggles): открывают доступ к платным фичам или закрытым функциям администратора. Такие флаги могут жить очень долго, быть очень динамичными и менять своё состояние при каждом запросе.
Операционные (ops toggles): отключают ресурсоёмкие функции. Например, так можно регулировать работу приложения на слабых смартфонах или застраховаться от падения производительности при запуске новой функциональности – флаг отключит модуль до того, как тот вызовет критический сбой.
### Что дают Feature Flags
Непрерывная доставка фич со стабильным качеством – возможность отключить нерабочий код снижает риски в релизной версии.
Тестирование новых фич в боевых условиях – фиче-флаги позволяют постепенно внедрять сервисы, контролируя риски при релизе на реальную аудиторию.
Возможность развивать несколько версий ПО параллельно – TBD и фичефлаги позволяют предлагать разные функции разным группам пользователей, при этом поддерживать все эти версии ПО может всё та же одна команда.
Как управлять флагами
Проприетарные решения: LaunchDarkly, Bullet-Train, Unleash. Каждый продукт предлагает какие-то свои преимущества, каждый по-своему удобный. Но за лицензию придётся платить, а гибкость настройки зависит от разработчика системы.
Open source решения: Moggles, Esquilo. Это бесплатные решения, но чтобы они заработали у вас, потребуется над ними поколдовать. Кроме того, придётся подбирать продукт с таким набором функций, который вас устроит.
Собственная система управления: вариант, которым пользуемся мы. Это единственное в своём роде решение, которое целиком нас устраивает. В будущих постах расскажем подробнее.
Как флаги работают у нас
Feature Flags Portal (FF-Portal): Web + REST API приложение для манипулирования состоянием флагов. Напрямую работает с хранилищем флагов.
Feature Flags Storage (FF-Storage): персистентное хранилище с настройками флагов и их статусами.
Kubernetes ConfigMap (FF-configmap): k8s ConfigMap ресурс, который собирается на основе данных, которые хранятся в FF-Storage в удобном формате для конечного приложения. Изменение данных флагов через FF-Portal также влечёт к изменению FF-configmap.
Microservice (MS): Микросервис, который использует FF-configmap как источник конфигурации при старте приложения. При изменений FF-configmap, микросервис делает перезагрузку своей конфигурации.
Приложение считывает конфигурацию флагов с FF-ConfigMap, который монтируется к Pod-у как файл. При изменении ConfigMap, k8s обновит и файл, далее приложение среагирует на изменение файла и перегрузит конфигурацию флагов.
Изменение флагов происходит через портал, который отправляет интеграционное сообщение в шину при обновлении статуса. Компонент Config Updater обновляет значения флагов в FF-ConfigMap через K8S API.
Напоследок о тестировании
Возникает вопрос, как тестировать продукт с фиче-флагами? На первый взгляд, флаги усложняют в этот процесс – если переключателей становится много, то и количество всевозможных состояний резко растёт.
Но не всегда флаги зависят друг от друга. Поэтому мы для релиза тестируем два предельных случая: 1) все новые флаги выключены и 2) все флаги включены.
Практика показывает, что обычно этого достаточно.
Обзор Android 10 Q Developer Preview Beta 1
Наконец вышел первый официальный билд Android 10 Q. На данный момент опробовать будущую версию Android могут владельцы смартфонов Google Pixel.
На первый взгляд может показаться, что Android Q не сильно то и отличается от Android Pie. Но при детальном рассмотрении становится понятно, что Android Q будет отличаться от прошлых версий большим количеством новых функциональных возможностей и доработкой старых.
Сегодня мы более детально разберём особенности первой бета-версии Android Q.Те особенности, о которых вы прочитаете в сегодняшнем материале, не были упомянуты в официальном обзорном посте на сайте Google. Начнём.
Тёмная тема оформления
Пожалуй, это одна из самых ожидаемых функций Android Q. Пользователи просили о её введении ещё во времена Android Lollipop в 2014 году, когда был представлен обновлённый Material Design с обилием белого цвета. Google уже пытались добавить тёмный режим для всего интерфейса ещё в первых билдах Android Marshmallow, но по непонятным причинам, этот режим не дожил до полноценного выхода операционки. Та же история произошла и с Android Nougat.
Частично, черная тема была добавлена в Android 8.1 Oreo. Когда вы устанавливали тёмные обои рабочего стола – некоторые элементы интерфейса становились тёмными. В Android Pie у пользователей появилась возможность включать/отключать смену на тёмное при оформлении при установке обоев. Но это нельзя было назвать полноценным тёмным режимом, так как большинство частей интерфейса оставались белыми.
В Android Q вы наконец сможете применить тёмную тему оформления почти ко всему интерфейсу, а также некоторым приложениям. Включить тёмный режим, на данный момент, можно, активировав энергосберегающий режим. В утёкшей пару месяцев назад альфа-версии Android Q для включения тёмного режима был отдельный пункт в настройках, но его почему-то убрали. Если же вы не хотите, чтобы был включен энергосберегающий режим, вы можете активировать/деактивировать тёмную тему при помощи ADB-команд. Для этого вам понадобится компьютер.
Кастомизация интерфейса
Уже все привыкли к тому, что когда речь заходит о кастомизации интерфейса, то имеется ввиду установка сторонних прошивок (EMUI, TouchWiz, CyanogenMod и др.) или лаунчеров. Владельцам устройств с чистым Android приходилось довольствоваться тем, что есть.
С выходом Android Q у пользователей появится возможность несколько изменить внешний вид своего интерфейса (цвет значков, шрифт), без установки сторонних программ. Особо тут не разгуляешься, на выбор доступно всего 4 цвета: чёрный, зелёный, синий и фиолетовый. Но даже несмотря на такой скудный набор, это говорит о том, что в Google обратили внимание на возможность кастомизации интерфейса. Так что стоит ожидать появления большего количества возможностей в будущем. Также небольшой апгрейд получили иконки в меню быстрых настроек и панель поиска Google: для них была добавлена поддержка адаптивных иконок.
Ещё вы сможете выбрать шрифт для заголовков значков. Их не так много: Google Sans, Roboto, Noto Serif и Source Sans Pro.
Больше системных настроек
В Android Pie был добавлен новый подраздел в настройках “Для разработчиков” – Feature flags (системные настройки/флаги). Этот подраздел останется и в Android Q, получив несколько новых “flags”:
Воспроизведение звука
Наиболее интересная функция из представленных “Feature flags” – кнопка для переключения устройства вывода звука. Включить эту функцию можно зайдя в настройки “Для разработчиков” – “Feature Flags”, и активировав “settings_audio_switcher”.
Поддержка десктопного режима на системном уровне
Ещё одна крутая новинка Android 10 – это поддержка десктопного режима. Эта функция уже реализована в некоторым виде у Huawei и Samsung, и можно предположить, что она будет выглядеть примерно так же, как в Chrome OS.
Пока что это всё работает довольно криво, но Google наверняка “допилят” эту функцию к полноценному релизу Android Q. На рабочем столе вы сможете добавлять иконки приложений, менять обои, а все приложения открываются в отдельном окне.
Специальные возможности
В меню “Специальные возможности” появилась парочка новых функций. Одна из них: “Время на чтение”, которая позволяет настроить время отображения Push-уведомлений, и “Время на выполнение действий”, регулирующая время отображения информационных сообщений.
Активировав функцию setting_bluetooth_hearing_aid в подразделе “Feature flags”, в меню спец. возможностей появится новая функция, которая пока именуются как Hearing aids (добавление слухового аппарата). Эта функция предназначена главным образом для людей, имеющих проблемы со слухом.
Батарея
Умный режим энергопотребления.
Это очень полезная функция, которая была добавлена уже очень давно. Активировав её, система начинает сама регулировать все фоновые процессы, например автонастройка загрузки процессора и сети позволяет значительно продлить срок жизни батареи.
В Android Q этот режим был несколько улучшен. Теперь, когда стал доступен тёмный режим оформления интерфейса, система автоматически будет переключаться на него, если активируется умный режим энергопотребления. Как смена цветового оформления сможет повлиять на сохранность заряда аккумулятора? Google провели исследование, в результате которого удалось выяснить, что при тёмном оформлении удаётся сохранить до 60% заряда.
На этом изменения в режиме энергопотребления не закончились. Стоит отметить, что и сам режим стал “умнее”. В Android Pie вы могли активировать автоматический переход в этот режим, и если заряд опускался до 15-20%, то он тут же включался. Теперь же, благодаря усовершенствованию AI системы, она будет анализировать то, как вы пользуетесь смартфоном в течение дня, и подбирать подходящее время для включения энергосберегающего режима.
Отображение оставшегося время работы смартфона.
Если ваш смартфон не заряжается, то в меню быстрых настроек вы увидите примерное время, до которого ваш смартфон израсходует свой оставшийся заряд. Если же он заряжается, то будет отображаться процент заряда батареи.
Изменения в дизайне интерфейса
Монобровь и закруглённые углы в скриншотах.
В последние несколько лет появилась тенденция делать округлыми различные элементы интерфейса смартфона: это касается как флагманских, так и бюджетных устройств. Также стала нормой так называемая “монобровь”, или вырез в центре вверху экрана. Все эти вырезы и закругления уже поддерживаются в Android на системном уровне, но только не в скриншотах, по крайней мере, они выглядят довольно странно именно при открытии скриншотов экрана. В Android Q это будет исправлено.
Теперь все вырезы и закруглённые углы будут отображаться в скриншотах, как занятое чёрное пространство. Очень спорное нововведение. Некоторые люди могут воспринять эти чёрные пятна как какой-то глюк. Смотрите примеры таких скриншотов выше в статье.
Изменение меню “Информация о приложении”.
Меню “Информация о приложении” было полностью переделано. Была добавлена новая кнопка, с помощью которой можно запустить приложение. Новый пункт “Уведомления” показывает среднее количество присылаемых приложением уведомлений в сутки.
Значки в главном меню “Настройки”.
Все значки главного меню “Настройки” были обновлены в соответствии с новым Material Design 2.
Закруглённые углы в меню уже запущенных приложений.
В продолжение темы о закруглённых углах стоит отметить, что выделенное вами окно приложения в меню уже запущенных приложений имеет закруглённые углы. Вероятно, это небольшое изменение будет работать только на устройствах Google Pixel.
Подключение к Wi-Fi через QR-код
Как правило, чтобы подключиться к чужой Wi-Fi сети необходимо ввести пароль. Но этот способ не защищает вашу сеть на 100%. Не исключён даже тот вариант, что какой-нибудь человек случайно подберёт пароль к вашей сети. В Android Q добавили ещё один способ защиты Wi-Fi – QR-код.
Этот способ сможет обезопасить вашу сеть от случайных подключений, а с другой стороны, он облегчит подключение тем людям, с которыми вы хотите поделиться своим Wi-Fi. Неясно одно, будет ли эта функция доступна для старых версий Android, или же только для Android Q.
Запись происходящего на экране
Раньше записать происходящее на экране можно было только с помощью сторонних приложений, например, AZ Screen Recorder. Хотя эти приложения выполняют свою работу достаточно хорошо, у них есть один большой недостаток: вы не можете записать звук с их помощью. К слову, на других популярных операционных системах, таких как iOS, функция записи происходящего на экране поддерживается на системном уровне.
С выходом Android Q эта функция появится и у Android-пользователей. Чтобы воспользоваться функцией записи экрана, вы должны активировать настройку settings_screenrecord_long_press в подразделе “Feature flags” в настройках “Для разработчика”. После этого вы сможете записывать происходящее на экране, сделав долгий тап по кнопке “Скриншот”. Пока эта функция работает очень криво, но к официально выходу Android Q ситуация должна измениться.
Быстрые ответы на сообщения из уведомлений
Google начали экспериментировать с этой функцией еще давно. Суть быстрых ответов заключалась в следующем: система анализировала сообщение и генерировала возможные варианты ответов, которые можно было отправить собеседнику одни нажатием. Эта функция была перенесена в такие приложения, как Messages и Gmail, а в прошлом году они даже выпустили приложение, которое добавляло функцию быстрых ответов ко всем мессенджерам.
Судя по первому официальному билду Android Q, эта функция будет поддерживаться на системном уровне, так что не придётся скачивать сторонние приложения, чтобы воспользоваться ею.
Быстрые ответы в Android Q
В зависимости от содержания сообщения, вы сможете не только отправить быстрый ответ. В некоторых случаях эта функция может выдать прямую ссылку, по которой вы сможете перейти на соответствующую страницу в Google Chrome, Twitter, Instagram и т.д.
Отключение разрешений
Сегодня очень много внимания уделяется безопасности, особенно если это касается сохранности наших личных данных. По этой причине в Android Q была добавлена возможность отключения разрешений ещё до установки приложений.
Вы также можете отключить разрешения на определённое время, например ограничить сбор геолокационных данных во время работы какого-либо приложения. Таким образом, приложения больше не будут жить своей жизнью. Google также накладывает различные ограничения на те приложения, которые собирают ваши личные данные: IMEI, серийный номер вашего устройства и др.
В последующих бета-версиях Android Q должно появиться больше информации об обновлённой системе безопасности, поэтому следите за появлением свежих новостей на нашем сайте.
Обновлённый диспетчер файлов
Мало кто пользуется встроенными файловыми менеджерами, подавляющее большинство людей скачивают сторонние приложения: Solid Explorer, MiXplorer, FX File Explorer – альтернатив очень много.
Хоть у Android есть свой файловый менеджер, особой популярностью он не пользуется. До выхода Android Oreo он был вообще скрыт в настройках. Главными же его недостатками считаются малый функционал, неудобный интерфейс, и хотя он получил довольно много обновлений за последние пару лет, обновления эти были не такими значительными.
Похоже, что в Google наконец решили взяться за свой файловый менеджер. Он получил новый дизайн в стиле обновлённого Material Design 2. Была также добавлена поисковая панель, а ещё добавили возможность сортировки по типу файлов: изображения, документы, аудио, по имени и т.д.
Поисковая строка в подразделе “Приложения и уведомления”
Google добавили строку поиска в подраздел “Приложения и уведомления”, что позволит найти нужное вам приложение гораздо быстрее. Активируется эта строка нажатием специальной кнопки в виде лупы.
Значок для отображения новых уведомлений
Теперь только что пришедшие уведомления будут помечаться специальным значком в виде колокольчика. Новый значок будет отображаться в течение 30 секунд с момента получения уведомления.
Обновлённое меню уведомлений
Следующее изменение может вызвать много споров среди пользователей. В Android Pie вы могли убрать любое уведомление свайпом влево/вправо. Теперь же свайп вправо будет удалять уведомление, а свайп влево – отключать его.
Было также обновлено всплывающее меню, которое вызывалось при долгом нажатии по конкретному уведомлению. В Android Q старые кнопки были заменены на следующие: “Отключить”, “Без звука”, “Со звуком”. Всё остальное осталось как прежде.
Сортировка уведомлений
В Android Pie сортировка уведомлений по критерию “Отключены” была убрана. Эту возможность вернули в Android Q.
Отмена совершённого действия (шаг назад)
Если вы случайно удалили ярлык с рабочего стола или виджет, то после совершения подобного действия появится вспомогательное окно с возможностью отмены действия.
Режим “Не беспокоить”
Меню настроек этого режима было переработано. Теперь основных разделов всего два. Все исключения для режима “Не беспокоить” были помещены на одну страницу.
Мелкие изменения и баг-фиксы
В Android Q есть множество мелких изменений, которые хоть и не заслуживают отдельного внимания, но о них нужно знать. Среди них:
Были также исправлены некоторые баги: баг с регулировкой громкости и режимом “Не беспокоить”.