Продлеваем работу смартфона: Отключение wakelock без root

Продлеваем работу смартфона: отключение wakelock без rootВы наверняка замечали, что смартфоны начинают разряжаться заметно быстрее спустя каких-то пару месяцев после покупки. В наихудшем случае вы можете получить полностью разряженный гаджет на утро или 15-20% заряда аккумулятора к концу рабочего дня при считанных минутах работы дисплея. И дело здесь вовсе не в батарее, а в установленных приложениях, которые препятствуют уходу смартфона в экономичный спящий режим. Выявить пожирателей батарейки и умерить их аппетиты даже без root-доступа вам поможет наша статья.

На сколько вырастет автономность?

Вопрос, который, скорее всего, сразу возник у вас в голове: «а какой, собственно, прирост автономности даст выполнение этой инструкции?». Всё зависит от того, какие именно приложения установлены у вас на гаджете. Если вы только купили смартфон и успели установить на него только пару-тройку программ, то, скорее всего, никакого прироста не будет. Но если у вас десятки программ, добрая половина из которых выполняет какие-то действия, пока гаджет спит, разница может быть вполне заметной. Так, в нашем случае, наиболее активными программами, не дававшими смартфону заснуть, оказались VoIP-приложение от Tele2, клиент Dropbox с автоматической синхронизацией фотографий и Wearable Widgets. После остановки этих программ разница в разряде смартфона за примерно одинаковое время составила примерно 8%.

Продлеваем работу смартфона: отключение wakelock без root Продлеваем работу смартфона: отключение wakelock без root

Что такое wakelock?

Android построена на ядре Linux, благодаря чему предлагает самые широкие возможности как обычным пользователям, так и любителям копаться в системе. В отличие от ОС для компьютеров, которые переводят устройства в энергоэффективный спящий режим после длительного бездействия, Android предназначен для устройств, большую часть времени находящихся в «спячке». Ради увеличения автономной работы Android-устройства при любой возможности должны переходить в экономичный режим. Но когда приложения выполняют важные действия, система не должна уходить в сон. Для этого был придуман механизм wakelock’ов. К сожалению, он и стал основной причиной слабой автономности Android-устройств.

Продлеваем работу смартфона: отключение wakelock без root

Нажимая кнопку питания работающего смартфона, вы переводите его в режим Suspend, аналог режима ACPI S3 на настольных компьютерах — или, попросту говоря, в спящий режим. При переходе в Suspend полноценным потребителем энергии остаётся только оперативная память, которая хранит весь системный контент, а остальные компоненты работают в дежурном режиме, потребляя минимум энергии. Благодаря этому энергопотребление в Suspend может составлять всего 1% от номинального. Это актуально для планшетов, но в смартфонах приходится держать включенным ещё и радиомодуль — иначе гаджет не сможет принимать звонки.

Именно так всё должно работать в идеальном мире. Но где он, тот идеальный? В реальном же на сцену выходит механизм wakelock, из-за которого наши гаджеты почти никогда не «спят» полноценно. С английского имя этого деятеля переводится как «прерывание сна». Данное событие может быть вызвано либо ядром системы (Kernel Wakelock, KWL), либо пользовательским приложением (Partial Wakelock, PWL). Последние часто также называют «частичными wakelock». Причины могут быть самыми разными. Среди KWL вы наверняка увидите «будильники», связанные с Wi-Fi и сотовой сетью, а среди PWL — события фоновой синхронизации различных программ.

Продлеваем работу смартфона: отключение wakelock без root

Когда отключение может навредить

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

Важно понимать, что именно частичные «будильники» (PWL) часто становятся причиной wakelock’ов ядра. Поэтому бездумное отключение вызовов вэйклоков ядра вместо борьбы с источниками частичных не только не улучшит автономность смартфона, но и может стать причиной быстрого разряда аккумулятора. Наглядный пример: отключение Wi-Fi при большом количестве wakelock’ов под названием wlan_rx_wake заставит приложения, запрашивающие передачу данных, делать это через сотовую сеть. Даже при отсутствии соединения с ней это вызовет более частые просыпания гаджета — и, как следствие, большее энергопотребление.

Продлеваем работу смартфона: отключение wakelock без root

Однако и с отключением «будильников» от обычных приложений стоит быть внимательным. Если речь идёт о мессенджере или другой подобной программе, вы рискуете не получить важное сообщение или уведомление. При выполнении этой инструкции стоит выяснить и точно понять, какие именно последствия вызовут те или иные действия.

Инструкция по отключению

Главный инструмент в борьбе с программами-источниками wakelock’ов — приложение BetterBatteryStats, которое хоть и платное, но стоит каждой потраченной на него копейки. Дополнительную информацию и тонкости работы с приложением можно узнать на нашем форуме.

Для того, чтобы программа могла работать без root-прав, нам потребуется дать ей некоторые системные разрешения вручную. Для этого на ПК придётся установить adb (Android Debug Bridge) — утилиту для взаимодействия с Android-устройствами. Её можно загрузить в составе пакета Platform Tools с официального сайта Android.

Шаг 1. Подготовка adb. Разархивируйте Platform Tools в любую папку на компьютере и перейдите в неё в Проводнике. После этого откройте командную строку Windows. Для этого кликните правой кнопкой мыши по пустому месту в окне Проводника с зажатой клавишей Shift и выберите пункт «Открыть окно команд». Для запуска консольной программы из командной строки Windows достаточно ввести её название (в нашем случае — adb). Если вы используете командную оболочку PowerShell, для запуска приложения потребуется указать к нему относительный путь, например, .adb.

Шаг 2. Подключение смартфона к ПК через adb. Для управления смартфоном с компьютера необходимо разрешить работу adb на самом гаджете. В настройках аппарата найдите пункт «Об устройстве», внутри которого семь раз коснитесь пункта «Номер сборки».

Продлеваем работу смартфона: отключение wakelock без root

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

Продлеваем работу смартфона: отключение wakelock без root

Для проверки работы adb в консоли введите команду

adb devices

Если всё сделано правильно, в появившемся списке вы увидите своё устройство.

Продлеваем работу смартфона: отключение wakelock без root

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

Продлеваем работу смартфона: отключение wakelock без root

Шаг 3. Предоставление системных разрешений. Теперь самое время дать приложению BetterBatteryStats системное разрешение для доступа к данным батареи. Это делается всего одной командой, которую необходимо ввести в консоль:

adb -d shell pm grant com.asksven.betterbatterystats android.permission.BATTERY_STATS

Если всё прошло правильно, вы не увидите вывода команды в консоли (курсор просто переместится к следующей строке), а в самой BetterBatteryStats пропадёт надпись «Нет доступа к вэйклокам ядра» при выборе категории Kernel Wakelock.

Продлеваем работу смартфона: отключение wakelock без root

Шаг 4. Анализ wakelock’ов. После установки BetterBatteryStats и предоставления ей разрешений программе может понадобиться некоторое время для сбора статистики. Для этого просто пользуйтесь смартфоном в штатном режиме несколько часов. Когда будет собрана достаточная статистика, запустите приложение и выберите режим отображения Partial Wakelock. Из скриншота видно, что смартфон работал автономно чуть больше часа, и 25 минут из этого часа аппарату не давал заснуть клиент Dropbox. Нетрудно догадаться, что спустя сутки именно эта программа станет основной причиной разряда аккумулятора, когда смартфон находится в спящем режиме.

Продлеваем работу смартфона: отключение wakelock без root

Шаг 5.  Отключение wakelock’ов через adb. В большинстве приложений проблему с активной генерацией «будильников» можно решить, не залезая вглубь системы. Для этого нужно прикинуть, какая из настроек программы может вызывать нежелательное поведение. В случае с Dropbox это автоматическая синхронизация фотографий с облаком.

Более радикальный способ — удаление программы, которая вэйклоки вызывает. Именно так проще всего избавиться от разряда батареи клиентом Facebook и его мессенджером.

Если же изменение настроек программы результатов не принесло, но и отказываться от приложения вы не готовы, можете попробовать отключить wakelock’и от него вручную. Для этого сперва понадобится узнать название пакета. Чтобы сделать это, достаточно нажать на иконку программы в списке BetterBatteryStats. Так, из скриншота ниже видно, что полное название пакета Dropbox — com.dropbox.android.

Продлеваем работу смартфона: отключение wakelock без root

Теперь, чтобы запретить программе генерировать wakelock’и, достаточно ввести в консоль adb следующую команду, подставив нужное название пакета:

adb -d shell cmd appops set название_пакета WAKE_LOCK ignore

В нашем случае команда будет выглядеть так:

adb -d shell cmd appops set com.dropbox.android WAKE_LOCK ignore

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

Шаг 5. Альтернативный способ: отключение wakelock’ов через GUI. Если вы хотите за один раз навести порядок в своём смартфоне, не обязательно вводить команды adb: всё можно сделать и с помощью бесплатных мобильных приложений App Ops и Shizuku Manager. Первым делом запустите Shizuku Manager и отправьте на смартфон следующую команду:

adb shell sh /sdcard/Android/data/moe.shizuku.privileged.api/files/start.sh

В зависимости от модели смартфона она может выглядеть по-разному, поэтому лучше свериться с текстом, который Shizuku Manager показывает в главном окне. Если всё сделано правильно, на вашем смартфоне будет запущен собственный сервер adb, который позволяет выполнять команды с повышенными привилегиями в обход ПК.

Продлеваем работу смартфона: отключение wakelock без root

Теперь запустите App Ops и согласитесь с настройками по умолчанию. Если adb сервер был запущен, вы увидите список программ, установленных на смартфоне.

Продлеваем работу смартфона: отключение wakelock без root

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

Продлеваем работу смартфона: отключение wakelock без root Продлеваем работу смартфона: отключение wakelock без root

Борьба с другими причинами пробуждения смартфона

Не все wakelock’и стоит отключать сторонними методами. О некоторых стандартных способах борьбы с ними (например, изменением настроек приложений) мы уже упомянуль, но хотим вам предложить ещё несколько действенных методов.

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

2. Выключайте услуги местоположения. Помимо множества сторонних программ доступ к местоположению постоянно требуют и сервисы Google. Поэтому, когда вам не нужно определение местоположения напрямую (например, во время навигации), отключайте эту услугу. К счастью, сделать это в современных смартфонах очень просто — достаточно нажать на соответствующую иконку в панели уведомлений.

3. Оптимизируйте работу программ в фоне. Помимо непосредственно приложений, которые вы видите на экране, программы для Android могут запускать различные службы для выполнения фоновых задач. Подробно о том, как службы влияют на автономность смартфона, и как оптимизировать их энергопотребление, вы можете узнать в нашей статье Правда или нет? Фоновые приложения нужно закрывать.

 

Добавить комментарий

Ваш e-mail не будет опубликован.