Как заставить сервисы Google Play и другие системные приложения из белого списка по умолчанию дремать?

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

(Нажмите на изображение, чтобы увеличить)

ИЗОБРАЖЕНИЕ:

Я уже видел этот ответ , и, как отмечено в комментарии , он не работает для приложений, занесенных в белый список системой.

На данный момент это приложения, внесенные в белый список Android 6.0.1 в моем Nexus 6 с root-доступом:

ИМГ

Меня больше всего интересует удаление com.google.android.gms .

Ответы (2)

Реквизиты

  • Android с root-доступом

Необязательный:

  • Полная резервная копия ПЗУ, сделанная через кастомное рекавери. Это для вашего же удобства. Если что-то, предложенное в следующем разделе, вызывает проблемы с загрузкой или сбои системы/приложения, у вас будет что-то хорошее, чтобы вернуться к более раннему состоянию.

  • Оптимизация сервисов Play может привести к непредвиденным последствиям (в том числе к некорректной работе диспетчера устройств Android или приложений для отслеживания устройств). Вам рекомендуется рассчитать количество установленных приложений, которые зависят от Google Cloud Messaging и на которые повлияет этот шаг . Ответы здесь могут помочь: есть ли способ узнать, какие приложения используют GCM?

    Я предпочел свой собственный ответ для простоты.


ДЛЯ ИЗБЕЖАНИЯ ПРОБЛЕМ

Если вы ориентируетесь только на сервисы Google Play и хотите избежать проблем с редактированием системных файлов , вы можете использовать модуль Enable Doze для GMS или SysConfig Patcher Magisk. Вам понадобится фреймворк Magisk и Magisk Manager .


Как я уже отмечал здесь , сервисы Google Play внесены в белый список Google через файл google.xml , расположенный в /system/etc/sysconfig/ . Среди прочего в файле отмечается:

<!-- GmsCore всегда должен иметь доступ к сети для GCM и прочего. -->
< пакет энергосбережения = "com.google.android.gms" />

Закомментируйте выделенную строку, используя <!--в начале и -->в конце. Теперь строка должна выглядеть так:

<!-- < allow-in-power-save package="com.google.android.gms" /> -->

(Нажмите на картинку чтобы увеличить ее)

ИЗОБРАЖЕНИЕ: ИЗОБРАЖЕНИЕ:

Перезагрузите устройство и увидите, что сервисы Google Play теперь недоступны на вкладке « Не оптимизировано », но доступны для оптимизации.

(Нажмите на картинку чтобы увеличить ее)

ИЗОБРАЖЕНИЕ: ИЗОБРАЖЕНИЕ:

Я заметил, что список приложений тоже уменьшился:

ИМГ

Примечание. Я использовал ES File Explorer для перехода в каталог /system/etc/sysconfig и использовал QuickEdit для редактирования google.xml . Использование этих инструментов не является обязательным. Вы можете использовать все, что считаете удобным.

Теперь, чтобы узнать об остальных именах в списке, обратитесь к соответствующим файлам, указанным ниже:

  • com.android.providers.downloads: /system/etc/permissions/platform.xml
  • com.android.vending: /system/etc/sysconfig/google.xml — я заметил, что работа с сервисами Google Play автоматически удаляет Play Store из списка.
  • com.google.android.apps.tycho : /system/etc/sysconfig/google_build.xml
  • com.android.omadm.service : /system/etc/sysconfig/whitelist_com.android.omadm.service.xml .

Закомментируйте соответствующую строку, перезагрузитесь и ваш твик должен заработать.

Примечание. Здесь я экстраполировал свои выводы на сервисы Google Play.

SystemConfig.java используется для чтения конфигурации из каталога /system/etc/permissions и /system/etc/sysconfig . Итак, если у вас есть системное приложение из белого списка, не добавленное вручную и не описанное в этом ответе, сначала сосредоточьте поиск на этих двух каталогах.

Привет @Firelord. Я попробовал это решение в Android 7.1.1 до такой степени, что в конечном итоге удалил строку для GMS безрезультатно. Любые идеи о том, что изменилось в Android Nougat относительно того, как это реализовано? Спасибо.
@user42850. Мне жаль это слышать. Но в моем распоряжении нет Android Nougat, поэтому я не в состоянии помочь вам в этом случае. :(
Я позаботился о вашей заботе в этом редактировании: android.stackexchange.com/posts/143248/revisions (хотя я опоздал на год).
adb shell dumpsys deviceidle whitelist -"com.yourcompany.yourapp"

Используя эту команду в adb, вы можете удалить приложения из исключений энергосбережения, протестированные в Oreo, без рута. И используя знак плюс (+) вместо минуса, вы можете добавить приложения в список исключений.

Редактирую снова. Ошибка. Это не работает всегда

Он не может удалить стандартный набор приложений из белого списка. Может ли он удалить сервисы Google Play? Пожалуйста, предоставьте доказательства, подтверждающие ваше утверждение. Кстати, мой вопрос был задан в отношении Android 6.0, хотя я не возражал бы, если бы ваш ответ работал для Android Oreo для каждого приложения.