Опубликован скандальный рейтинг производителей смартфонов –
убийц приложений в фоновом режиме. Разбираемся в причинах, следствиях, ищем
решения.
Если вернуться к истокам понятия «смартфон», то на ум сразу
приходит использование сторонних приложений, которые имеют доступ к аппаратному
оборудованию телефона. Такому как экран и клавиатура, оперативная память и
накопитель, центральный процессор и микрофон с динамиком, модемы сотовой связи
и Wi-Fi.
С течением времени к этому базовому перечню присоединилась
многозадачность, способность КПК (карманный персональный компьютер) и
коммуникатора (КПК с телефонным модулем) одновременно запускать несколько
сторонних приложений и не прерывать их работу. Те производители начала 2000-х,
которые не подержали тренд на многозадачность и работу запущенного приложения в
фоновом режиме, ушли со сцены, потребитель от них отказался. Возможно,
кто-нибудь помнит, что сайты по продаже или обмену б/у коммуникаторов и КПК
того времени были переполнены сообщениями о продаже или обмене «Пальмы».
Один из последних КПК Palm – модель 2005 года LifeDrive, работающая на Palm OS Garnet 5.4.8, многозадачности нет и в помине
Во времена Android
10 кажется, что разработчики взяли обратный курс, без оглядки убивая запущенные
в фоне приложения и превращая умный телефон снова в глупый. Чтобы убедиться в
этом, достаточно воспользоваться сторонним приложением (не Google) «Будильник», «Трекер здоровья»
или «Календарь». Экран погаснет, и спустя какое-то время смартфон остановит ваше
приложение (смартфоны Nokia на Android Pie делают это через 30 минут), и вы
проспите завтрак, не узнаете расход калорий или не отправите важное письмо по
расписанию. Конечно, если вы не знаете, как настроить работу приложения в
оболочке конкретного бренда. Мотивы производителей смартфонов заведомо понятны,
но их поведение мешает всей индустрии. Давайте на конкретном примере разберем
суть конфликта между производителями смартфонов и сторонними поставщиками ПО.
Мотивы
производителей
Производители смартфонов достаточно долго слушали жалобы и стоны пользователей для того, чтобы сделать выводы. Увы, выводы часто делают не инженеры, а маркетологи, и именно их мнение в итоге превращается в прямые технические задания для инженеров и программистов. Так случилось и с ограничением работы приложений в фоновом режиме, а повлияло на это стремление производителя победить конкурентов по параметру автономности, где часы работы смартфона от одной зарядки аккумулятора конвертируются в звонкую монету, в прямой доход. Лично мне куда больше импонируют те производители, которые не изменяют прошивку в худшую сторону, а просто устанавливают более емкий аккумулятор. Но если ты А-бренд или стремишься стать им, то «тонкость» смартфона играет не менее важную роль, а значит, выход один – ограничить «умность» смартфона и тем уменьшить расход электричества.
«Рекордсмены» автономности за все время. Данные в нижней строке соответствуют часам проигрывания H.264 видео в MX Player при включенном «Режиме полета». Принимая решение о покупке смартфона и ориентируясь на такие таблички, можно остаться без нормально работающих в фоновом режиме сторонних приложений. График: Лондонская компания ExpertReviews, 24 июля 2020 года
Конечно, в случае совсем репрессивного подхода смартфон с «выключенным» фоновым режимом не будет лицензирован Google и не сможет продаваться в большинстве стран мира. Чтобы обойти это досадное недоразумение, борцами за автономность была придумана собственная система допуска приложений, представляющая собой условный «белый список» (пример Xiaomi), наполнение которого зависит от пользователя.
Это квест, который необходимо пройти для внесения в белый список штатного (!) приложения Xiaomi. Только представьте, что придется сделать для настройки стороннего
То, что это ненужный костыль, приводящий к хаосу, первыми прочувствовали
сторонние производители ПО после прочтения многочисленных жалоб пользователей на
«кривое» приложение в комментариях Google Play.
Жалобы
сторонних программистов
Все жалобы программистов на вмешательство производителей смартфонов в стандарты Android слились в одну жгучую реляцию, опубликованную на IssueTracker (штатная «курилка» Google для разработчиков Android). Приведу ее целиком, исправив лишь стилистические ошибки:
Пишу это от чистого сердца. Пожалуйста, примите это во внимание. Как компания мы разрабатываем библиотеку, которая собирает данные с датчиков смартфона и информацию о его местоположении, отправляет их на нашу платформу и преобразует в значимую информацию о пользователе (пользовательские привычки, процедуры и т.д.). В последние годы было крайне сложно поддерживать китайские OEM-устройства (Huawei, Xiaomi и другие). Эти OEM-производители модифицируют Android OS таким образом, что это нарушает работу его основных функций. Поведение этих устройств по умолчанию — это запрет только что установленным приложениям на отправку и получение широковещательных сообщений, на работу после отключения экрана (wakelocks), на запуск служб, на фоновую работу стороннего будильника и т.д. Все эти проблемы всплывают внезапно, после выключения экрана смартфона, если пользователь заранее не внесет приложение в белый список. Проблема с этим подходом в том, что пользователи не очень сообразительны и не знают об этом. Таким образом, в глазах пользователей вина автоматически ложится на нас, разработчиков. В ходе решения проблемы нам необходимо определить производителя смартфона и помочь пользователю внести наше приложение в белый список. Поддерживать наше приложение таким образом — это значит знать особенности оболочки всех производителей (и всех версий. – Прим. авт.), и это кошмар. Кроме того, эти OEM-производители предварительно загружают (и удаленно настраивают) белый список пакетов, которым разрешено свободно выполнять указанные действия. Разве это справедливо по отношению ко всем остальным? Честно говоря, не понимаю, как Google сертифицирует эти устройства, если основная функциональность не работает из коробки?
Если вы считаете, что на OEM-производителей жалуются только неизвестные и неопытные производители ПО, то вы ошибаетесь. Вот высказывание представителя VLC (медиапроигрыватель) от 2018 года в ответ на жалобу в Twitter:
Huawei отказывается вносить наше приложение в белый список, ломает наше приложение, но при этом вносит в белый список наших конкурентов. От нас ничего не зависит. Так что вы можете называть нас как хотите, но не ленивыми.
Борьба VLC за свои права закончилась тем, что разработчики приложения
внесли компанию Huawei в свой собственный черный список. Однако подобные жалобы от
разных разработчиков на разных производителей длятся и по сей день, их слишком
много, чтобы приводить их в одном материале. В итоге эта скрытая война привела к
тому, что многие разработчики приложений под Android OS вынуждены
создавать специальные сайты и разделы на них, объясняющие, как пользователь
может обойти нелепые ограничения оболочки смартфона конкретного бренда.
Реакция
общественности на самодеятельность производителей смартфонов
Негодование программистов и пользователей, которые в итоге оказались по одну сторону баррикад, росло и вылилось в смешной по названию, но очень полезный по смыслу проект “Don’t Kill My App” («Не убивайте мое приложение»). У проекта есть сайт и приложение в Google Play, а создала его команда Urbandroid, судя по наполнению портфолио – одна из пострадавших от вероломных «китайцев». На сайте проекта ведется свой рейтинг брендов, опасных для нервов пользователя, который в какой-то мере опровергает устоявшиеся представления о лучших смартфонах.
Идеальными параметрами Android OS являюся те, которые по умолчанию позволяют работать приложению так, как было задумано его создателем. Включая настройку отдельных служб любого приложения. Например, доступ в Internet навигационного приложения при выключенном экране
Данные и статистика собираются с помощью фирменного приложения (и по отзывам пользователей), суть работы которого проста. После установки и запуска приложения (бенчмарка, по своей сути) пользователь может запустить тест, предварительно выставив длительность его проведения (от 1 часа и дольше).
Жмем на кнопку Старт
Выбираем время проведения теста и пользуемся телефоном в обычном режиме
Приложение работает в фоне и фиксирует попытки операционной
системы его отключить. Если иконка запущенного “Don’t Kill My App” исчезла из
верхнего бара, значит, у ОС получилось его прибить или время теста завершено.
Надпись 100% говорит о том, что в моем стареньком Sony все в порядке, репрессии не проводились
Репрессии Huawei
По истечении указанного времени пользователь должен вновь запустить приложение, после чего он получает отчет и советы по обходу ограничений. После удаления приложения системные настройки ОС не удаляются вместе с ним, так как приложение глубоко идейное. Стоит указать, что апплет находится в раннем доступе и некоторые функции могут работать не очень хорошо (выдача советов, например). Но самая главная функция — отправка отчета на сайт борцов с ограничениями работает исправно. Чтобы отправить отчет нажмите на значок «поделиться» («расшарить») в верхней правой части экрана и выберите сайт движения из списка.
Заключение
О проблеме остановки фоновых процессов в некоторых смартфонах около месяца назад уже писал Константин Иванов в своем материале. Здесь же хотелось более подробно рассмотреть общую проблему современных смартфонов, которая заключается в излишней простоте получения сертификата Google, в слишком резиновых стандартах.
На дворе середина 2020 года, в лабораториях Google тестируется
уже второй предрелизный билд Android
11, а строгого стандарта работы приложений в фоновом режиме для всех игроков
рынка так и не появилось. Настройка работы сторонних приложений в MIUI может
удивить своим длинным списком действий даже прожженного пользователя Android, но настоящим «злодеем»
является вовсе не Xiaomi.
Нет, это всем известные бренды, OnePlus,
Huawei
и Samsung,
чемпионы по автономности. Не очень сообразительные пользователи тоже никуда не
делись, а значит и рекомендовать им к покупке смартфоны этих брендов не стоит.
Надеюсь, что этот материал был полезен, а на прощание прошу
нажать на колокольчик, ударить в гонг или отбить склянку. Есть что добавить?
Прошу в комментарии.