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

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

Сбербанк не даст использовать себя без знания PIN-кода, при первом запуске он обязательно проверит смартфон на наличие прав root и, если они есть, не даст переводить деньги куда угодно, ограничив функциональность шаблонами (правда, этот механизм довольно легко обойти). У него есть встроенная клавиатура, которая защищает от шпионских приложений, реализованных в виде сторонних клавиатур. Для общения с сервером он, естественно, использует токены и зашифрованный канал.

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

 

В чем проблема?

Первая проблема мобильного Сбербанка — это его размер. APK-файл с приложением весит ни много ни мало 41 Мбайт. Для сравнения: игра Smash Hit с отличной трехмерной графикой весит 80 Мбайт, игра Geometry Dash с кучей уровней и музыкальных треков — 48 Мбайт, а Google Chrome — те же 41 Мбайт. Заметь, что в данном случае мы сравниваем сложный комплексный софт с клиентским приложением, единственная задача которого — получать данные с сервера и отправлять их обратно в ответ на действия пользователя.

$ ls -lh *.apk
-rw-r--r-- 1 j1m j1m 41M апр 26 08:21 com.android.chrome.apk
-rw-r--r-- 1 j1m j1m 41M апр 25 07:20 ru.sberbankmobile.apk

ОK, я согласен, что при текущих объемах встроенной памяти и скоростях интернета размер приложения не имеет особого значения, однако его вес также влияет и на количество оперативной памяти, потребляемой приложением. На разных устройствах с разным объемом RAM и разными настройками Low Memory Killer размер приложения в оперативке может варьироваться от 40 до 80 Мбайт. Опять же для сравнения: одно из самых прожорливых на оперативку приложений Google Chrome с одной открытой вкладкой потребляет ~90 Мбайт. А самое печальное, что в отличие от того же Chrome, который будет вытеснен из памяти через некоторое время после закрытия, Сбербанк останется в ней висеть в виде сервиса на все время работы смартфона. Если ты его убьешь — он перезапустится, если перезагрузишь смартфон — он запустится при загрузке, применишь таск-киллер — получишь пинг-понг под названием «Прощай, батарея»: таск-киллер убивает сервис, система его запускает, и так продолжается бесконечно.

Ну ладно, висит и висит, может быть это такая оптимизация для ускорения запуска или еще что, на современных смартфонах с тремя гигами памяти 80 Мбайт — это ерунда. Но нет же, сервис не просто висит в памяти, он регулярно будит смартфон, чтобы обновить информацию о местоположении устройства и выполнить какие-то другие свои дела. Еще раз: приложение, которым ты пользуешься раз в неделю, чтобы положить деньги на телефон или проверить баланс, постоянно висит в фоне и регулярно будит смартфон! Если тебе кажется это странным, тогда читай дальше, и ты узнаешь, что такое действительно «странно».

За двенадцать часов Сбербанк разбудил смартфон 27 раз. Не мешай ему режим энергосбережения в Android 6.0, он делал бы это еще чаще
За двенадцать часов Сбербанк разбудил смартфон 27 раз. Не мешай ему режим энергосбережения в Android 6.0, он делал бы это еще чаще
 

«Банк заботится о вашей финансовой безопасности»

Именно такой ответ я получил от @sberbank в твиттере, когда показал им приведенный ниже скриншот. Что это такое? Это сообщение встроенного в Сбербанк антивируса Касперского. Да, дорогой читатель, Сбербанк не только висит в фоне и постоянно будит смартфон, он еще и просыпается каждый раз, когда ты устанавливаешь новое приложение, а еще у него есть определенный распорядок проверки. Ты сидишь, читаешь книжку — и вдруг просыпается Сбербанк и начинает сканировать систему. Как это влияет на батарейку, я думаю, пояснять не надо.

Продолжение статьи доступно только подписчикам

Вариант 1. Оформи подписку на «Хакер», чтобы читать все статьи на сайте

Подписка позволит тебе в течение указанного срока читать ВСЕ платные материалы сайта, включая эту статью. Мы принимаем оплату банковскими картами, электронными деньгами и переводами со счетов мобильных операторов. Подробнее о подписке

Вариант 2. Купи одну статью

Заинтересовала статья, но нет возможности оплатить подписку? Тогда этот вариант для тебя! Обрати внимание: этот способ покупки доступен только для статей, опубликованных более двух месяцев назад.


9 комментариев

Подпишитесь на ][, чтобы участвовать в обсуждении

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

Check Also

LUKS container vs Border Patrol Agent. Как уберечь свои данные, пересекая границу

Не секрет, что если ты собрался посетить такие страны как США или Великобританию то, прежд…