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

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

 

Запрос полномочий

«В Android 6.0 наконец-то появилась система запроса полномочий приложений, не прошло и десяти лет». Примерно в таком ключе отзывались пользователи об одном из главных новшеств Android 6.0 — тех самых окошках с вопросом: «Приложение XXX хочет получить доступ к камере. Разрешить?» Дескать, наконец-то у юзеров появился контроль над сторонними приложениями, какой у пользователей iPhone был еще в iOS 6.

Действительно, на первый взгляд очень нужное и правильное нововведение. Но если копнуть глубже, окажется, что его полезность стремится к нулю. Начнем с того, зачем такая система вообще нужна. А нужна она для очень простой вещи — позволить пользователю контролировать, к каким функциям смартфона приложение может получить доступ, а к каким нет. И здесь возникает первая проблема: если каждое установленное приложение начинает запрашивать права на доступ к чему-либо, очень скоро пользователь привыкает давать добро машинально.

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

Второе: сама система запроса прав очень обобщена. Фактически десятки различных разрешений, которые могут получить приложения, здесь сведены всего к семи. Это значит, что, если, например, мессенджер хочет получить возможность перехватывать СМС для получения кода авторизации (стандартная практика), он запрашивает у пользователя разрешение на доступ к функциональности СМС, которая автоматически открывает ему доступ к отправке СМС и чтению базы СМС. И если раньше при установке приложения пользователь мог увидеть таблицу со всеми разрешениями и убедиться, что приложение действительно желает всего лишь перехватывать СМС, то все, что ему остается теперь, — это дать приложению полный доступ ко всем функциям СМС сразу.

Третье: новая система запроса полномочий не работает со старым софтом. Это значит, что если приложение не было собрано для Android 6.0 и выше (targetSdkVersion=23), то оно вообще не будет запрашивать полномочия у пользователя для получения доступа к нужным функциям. То есть все будет ровно так, как и было до версии 6.0. А самое главное, что возможность собрать приложение с targetSdkVersion ниже 23 никуда не делась (и не денется в ближайшие годы), любой желающий может скачать самую свежую Android Studio и собрать с ее помощью приложение для Android 5.1, которое будет прекрасно работать в Android 6/7 и не требовать от пользователя подтвердить свои полномочия.

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

Запрос на доступ к камере и все разрешения приложения «Камера»
Запрос на доступ к камере и все разрешения приложения «Камера»
Запрос на доступ к камере и все разрешения приложения «Камера»
Запрос на доступ к камере и все разрешения приложения «Камера»
Запрос на доступ к камере и все разрешения приложения «Камера»
 

Энергосбережение

Главное преимущество Android в сравнении с другими мобильными ОС — полнота доступных разработчикам приложений инструментов. Другими словами, Android по своему духу намного ближе к полноценной настольной ОС, чем iOS и Windows Mobile. Приложения здесь могут спокойно работать в фоне, сторонние приложения по минимуму ограничены в действиях и могут использовать возможности системы наравне со стоковым софтом. Диалер, домашний экран, камеру, приложение для обмена сообщениями — все это пользователь может заменить на сторонний софт безо всяких ограничений.

Но где есть свобода, там есть и ответственность. Как только Android начал набирать популярность, всплыла довольно серьезная проблема: многие разработчики просто злоупотребляли возможностями системы и создавали софт, который в том числе мог серьезно снижать продолжительность работы устройства от батареи. Сделать это несложно — достаточно просто написать фоновую службу, которая будет захватывать wakelock (не позволяет устройству уснуть) и постоянно делать какую-то работу.

В большинстве случаев такой софт был результатом простого профанства, в некоторых — злым умыслом. Но как бы там ни было, именно такой софт закрепил за Android репутацию прожорливой до батареи системы, что заставило Google отреагировать. Поначалу меры борьбы были довольно мягкими: отзыв слишком продолжительных вейклоков, объединение задач, принудительное завершение слишком долго работающих служб. Но в конце концов все это привело к появлению режима агрессивного энергосбережения Doze в Android 6.0.

Принцип работы Doze довольно прост. Если в течение часа не включать смартфон и не брать его в руки (в Android 6.0), система отключает доступ в интернет и усыпляет все приложения и службы, независимо от того, имеют они вейклоки или нет. Затем время от времени смартфон просыпается (сначала через час, затем реже), позволяя службам сделать свою работу, и снова засыпает. В дополнение к Doze также существует механизм App Standby, делающий примерно то же самое, но в отношении отдельно взятых фоновых служб и вне зависимости от того, включил ты смартфон или нет.

В теории Doze позволяет свести затраты энергии смартфона к минимуму и не беспокоиться о том, что на утро заряд смартфона снизится процентов эдак на десять. Но есть две проблемы. Первая: эффект от включения Doze будет заметен, только когда на смартфон установлено большое количество не очень качественного софта, жадного до батареи. Для пользователей, которые следят за тем, что они устанавливают, и не пытаются инсталлировать любой, необходимый только один раз в год софт, он не даст практически никакого эффекта.

Вторая проблема: Doze убивает функциональность целого класса приложений, которые необходимы многим пользователям. Фактически весь «серверный» софт, позволяющий обратиться к смартфону по сети и получить от него ответ, летит в трубу. SSH-сервер, веб-сервер, приложения для отслеживания устройства и удаленного управления им — все это благодаря Doze будет работать крайне нестабильно и с чудовищными задержками ответа (в один-два часа и более).

Для решения этой проблемы Google предлагает разработчикам два варианта: либо использовать высокоприоритетные push-уведомления, чтобы разбудить устройство, либо просить пользователей добавить приложения в исключения режима Doze. Проблема первого метода в том, что он работает через сервер Google и, как следствие, требует, чтобы на устройстве были установлены сервисы Google. И это та самая причина, почему мессенджер Signal не будет работать на планшетах и смартфонах Amazon: он использует push-уведомления только для того, чтобы разбудить смартфон. Более того, push-уведомления не решают проблему запрета на доступ в интернет. Другими словами, получив push-уведомление, приложение не сможет отправить ответ на сторонний сервер до тех пор, пока пользователь не включит устройство либо не появится «окно выхода из режима Doze».

Второй вариант плох тем, что сам интерфейс исключения приложения из режима Doze находится довольно глубоко (Батарея → Кнопка «Меню» → Экономия заряда батареи → Все приложения) и не до всех пользователей удается донести информацию о том, как это сделать. К тому же исключение приложения из режима Doze вовсе не гарантирует, что оно будет нормально функционировать в фоне. Оно получит возможность захватывать вейклоки и работать с сетью, но совсем не факт, что система разбудит его в нужный момент. А это опять же возвращает нас к push-уведомлениям: сначала смартфон надо разбудить.

Вообще, борьба за аккумуляторы пользователей для Google в последнее время стала святой. Теперь они напрямую призывают разработчиков отказаться от использования фоновых служб в пользу так называемого JobScheduler’а, системы, сильно напоминающей механизм, доступный приложениям в iOS: вместо того чтобы работать в фоне, приложение добавляет свои задачи в JobScheduler, информируя его, при каких условиях эти задачи следует запускать (время, подключение к сети, подключение к заряднику и так далее).

Сам по себе JobScheduler — отличная идея, но, если в будущем Google станет еще больше урезать возможности системы в плане работы приложений в фоне, они убьют одну из лучших черт Android как операционной системы.

Панель управления режимом Doze
Панель управления режимом Doze
Панель управления режимом Doze
Панель управления режимом Doze
Панель управления режимом Doze
 

Закрытие исходных текстов

Android — операционная система с открытым исходным кодом. И это один из основных аргументов Google в пользу выбора ее ОС. Действительно, коды Android полностью открыты, любой желающий может их изучить или даже собрать собственную прошивку на их основе, как это делают разработчики CyanogenMod (теперь уже LineageOS) и других кастомных прошивок.

Более того, даже компании-производители не обязаны лицензировать Android у Google и платить ей роялти — бери и пользуйся, с тем лишь требованием, что вместе с Play Store производитель обязан установить на смартфон большую часть других приложений Google плюс соблюсти требования Google к аппаратной и программной части (например, реализовать безопасный сканер отпечатков пальцев, соблюдая правила, описанные в документе, не нарушать API Android, оснастить смартфон необходимыми сенсорами и датчиками).

В целом вполне обоснованные требования компании, которая распространяет ОС абсолютно бесплатно, а деньги зарабатывает на предоставлении доступа к сервисам. Вот только чем больше внимания Google уделяет своим фирменным приложениям, тем сильнее она забывает об их открытых аналогах в Android. После появления Google Keyboard стандартная клавиатура Android практически перестала развиваться, функциональность стандартной камеры Android даже близко не дотягивает до функциональности Google Camera, та же история с диалером, СМС-приложением, почтовым клиентом и домашним экраном, а поисковая строка Google, замененная на закрытый Google Now, так и вообще застряла во времени Android 2.3.

Ну ладно, это всего лишь приложения. Все-таки все их можно заменить, главное, что сама система остается открытой, так что сообщество может продолжать пилить чистые кастомные прошивки. Но и здесь засада. Огромный пласт функциональности, которая может показаться стандартной для Android, — это вовсе не Android, а Google Mobile Services — компонент системы, устанавливаемый вместе с маркетом и Google-софтом.

Сервисы Google отвечают за множество самых разных системных функций: подключение к аккаунту Google, аутентификацию (в том числе двухфакторную и по снимку лица), синхронизацию календаря и контактов, поиск украденного смартфона, push-уведомления, работу системы онлайн-проверки приложений на вирусы и огромное множество других.

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

Итого. Мы имеем формально открытую систему, которую Google в любой момент может закрыть благодаря используемой лицензии Apache 2.0, многие компоненты которой уже не развиваются или находятся в заброшенном состоянии, а другие существуют только в виде проприетарных библиотек без возможности создания альтернативы.

Сервисы Google
Сервисы Google
Сервисы Google
Сервисы Google
Сервисы Google
 

Выводы

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

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

  1. Михаил Абеленцев

    10.02.2017 at 13:59

    Уже третий год как «вертел я на…» сервисы google.
    Xiaomi Mi5 Pro девайс, поставил mokee (6 адройд) чистую без gaps’ов. F-droid и Yalp Store полностью удовлетворяют любые потребности, а для платных pro-версий программ или игр существует 4pda.
    Результат: неделями не выключаю смартфон, 440мб оперативки занято из 4гигов. За ночь съедает 1-2% заряда.
    За день (звонки, сёрфинг, игры, общение) около 20%. Делайте выводы. Не так страшен чёрт, как его малюют.
    Главный «ВРАГ» Android’а это сервисы Google.
    Ставьте чистый кастом и используйте F-droid и Yalp Store и Ваш смартфон заживёт новой жизнью.
    Также из любой чистой кастомной прошивки, рекомендую сразу снести системный календарь, живые обои, виджеты экранов блокировок и прочую лабуду, заменив это всё дело на лёгкие аналоги из F-droid с открытым исходным кодом. Рекомендую Simple Mobile Tools. Обновлять кастомы я советую только реализными версиями, а не бета. После обновления прошивки по воздуху просто запустите Root Explore и за один заход удалите заного системный софт, предварительно составим для себя «список удаления». Root права в кастомных прошивках уже встроены, включаются через меню разработчиков.
    После чего через кастомное рекавери вайпните далвик и арт кэш.
    Данная процедура займёт не более 20 минут, но она того стоит. Телефон скажет Вам спасибо

    • Sarum

      10.02.2017 at 15:45

      у меня тоже ми5,протестирую вашу сборку 🙂

    • pancho

      13.02.2017 at 23:24

      Как решать проблему гики и так знают… Проблема с остальными 90 с лишним %
      Слова «ставьте чистый кастом …» вызывают у них если не панику то ступор точно

      • Михаил Абеленцев

        28.02.2017 at 09:49

        Ну надо же на ком то гуглу зарабатывать и соберать о Вас все данные. На гиках уже не получается, они оказались хитры. Остальны 90% пользователей и сколько ты там насчитал — не парьтесь и получайте удовольствие от пристального внимания к вашей персоне

    • Mak33

      14.02.2017 at 09:48

      Расскажите, как это «После чего через кастомное рекавери вайпните далвик и арт кэш» перевести моей бабушке, которая в принципе неплохо освоила смартфон?

      • Михаил Абеленцев

        28.02.2017 at 09:47

        TWRP рекавери установи для своей модели телефона. Войди в него и выбери «очистка» Dalvik/art cache свайпом внизу выполни очистку и перезагрузись в систему. Загугли подробно в интернете если не понял

  2. baragoz

    10.02.2017 at 15:06

  3. pancho

    13.02.2017 at 23:43

    Статья задела описанной проблематикой. 3 причины это только верхушка айсберга.
    Моё мнение сейчас Гугл пытается нащупать баланс между корпорацией добра и корпорацией бабла. Пока деньги приносит подавляющее большинство которое иллюзией безопасности и жизнью «возле розетки» будет происходить постепенное «закрытие» андроида
    Альтернативы у большинства все равно нет… В эпл очень высокий порог вхождения, микрософт в дань моде тоже клепает андроиды, попытки прочей мелочи не менее гиковые чем «чистый кастом»

    • baragoz

      14.02.2017 at 10:38

      С другой стороны вспомните, сколько раньше стоили карты и навигационный софт. Переводчики? Карты? Понятно, что никто все равно за Промпт не платил, но ценник ниче так был. За PocketGpsPro впрочем тоже никто не платил. Но прайс был огого.

  4. baragoz

    14.02.2017 at 10:39

    Это к вопросу о корпорациях добра и бабла, если что

  5. Mr-r00t

    05.04.2017 at 19:11

    Мда-да, начните еще собирать из исходников сами и не забудьте эти самые исходники проверить до последнего байта, вдруг там что утаили. (Тело RMN3PRO. FW последний RR)

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

Check Also

Злой дебаг. Исследуем и взламываем приложения для Android при помощи отладчика

Мы уже неоднократно рассказывали о взломе приложений для Android. Несколько раз мы вскрыва…