Содержание статьи
- Введение
- Удаление/отключение встроенных и ненужных приложений
- Выноски: INFO
- Настройка энергосбережения и использование параметров разработчика
- Ускорение приложений
- Отключение сканирования мультимедиа
- Ускорение отдельных устройств — советы и секреты
- Greenify
- ART
- Заключение
- Легковесные программы для Android
- Что дает root? (слово редактора)
Будем честны: большинство интересных возможностей по настройке Droid-девайсов спрятаны и требуют рутования устройства. Тем не менее получать root предпочитают не все — кто-то из боязни потерять гарантию, другие из-за банальной лени. Мы решили рассмотреть альтернативные способы ускорения устройств на платформе от Google, для которых не нужно прав суперпользователя.
Введение
Google непрестанно повышает быстродействие своей системы. Но «чистый» Android сейчас встречается достаточно редко — производители, как правило, модифицируют прошивки, что не всегда положительно сказывается на производительности. К тому же помимо нее хорошо бы позаботиться об энергосбережении, а это зачастую вещи взаимоисключающие. Тем не менее такие возможности есть даже в нерутованном Android, хоть их и не очень много.
Удаление/отключение встроенных и ненужных приложений
До выхода четвертой версии Android отключать встроенные приложения, не имея прав root, было нельзя. Это приносило покупателям брендовых гаджетов неудобства, ибо каждый производитель норовит запихнуть в прошивку как можно больше программ, которые конечному пользователю попросту не нужны и в сумме кушают приличное количество ресурсов. В четвертой же версии гуглооси такая возможность появилась. Для отключения какого-либо встроенного приложения нужно зайти в «Настройки -> Общие -> Приложения -> Все», выбрать нужную софтину и в «Сведениях о приложении» нажать кнопку «Отключить» (либо «Удалить обновления», а затем уже «Отключить»). Для включения необходимо перейти на вкладку «Отключенные» и выполнить похожую процедуру.
Однако не все так радужно, как кажется на первый взгляд. Во-первых, отключение не влияет на постоянную память — приложение как было установлено, так и остается. Во-вторых, можно отключить отнюдь не все. Лишь некоторые приложения позволяют проделать с собой такой фокус. Я не буду давать много конкретных советов по отключению приложений, поскольку на каждом устройстве их список отличается. Вот краткий список того, что большинству пользователей не нужно, но постоянно висит в системе и отнимает память:
- «Браузер» — зачем, если есть более удобные и легкие альтернативы?
- «Календарь» и «Память календаря» — не замечал, чтобы кто-то активно ими пользовался.
- «Email» и «Службы Exchange» — вроде все уже сидят на Gmail.
- «Поиск Google» — достаточно бесполезная функция при наличии браузера (осторожно, отключает также и Google Now).
- «Google Keep», «Google+» и другие не всегда нужные приложения от Google.
Помимо этого, рекомендую выключить (удалить) виджеты и живые обои. Кроме того, что эта функциональность требует памяти и процессорного времени, она еще и жрет батарею. Так что для увеличения скорости лучше подобные вещи вырубать. Можно выключить и эффекты на экране блокировки. В моем случае (Samsung со стандартной прошивкой) они находятся в «Настройки -> Устройство -> Экран блокировки -> Эффект при разблокировке».
К слову, о Home Screen — рекомендуется использовать как можно меньше главных экранов. В самом деле, зачем тебе 100500 экранов, если редко используемые приложения можно вызвать и из меню?
Выноски: INFO
Как работает отключение приложений. После нажатия на кнопку «Отключить» вызывается метод setApplicationEnabledSetting() класса PackageManager, который изменяет состояние приложения на COMPONENT_ENABLED_STATE_DISABLED_USER (кстати говоря, он появился еще в первом Android).
Настройка энергосбережения и использование параметров разработчика
Для ускорения работы гаджета можно также подкорректировать параметры энергосбережения. Конечно, это уменьшит время работы от аккумулятора, но ускорить может достаточно существенно. Для этого (в моем случае) нужно перейти в «Настройки -> Общие -> Энергосбережение» и либо сдвинуть переключатель, который находится в правом верхнем углу, либо поснимать нужные чекбоксы.
Работает это на разных платформах по-разному, и публичного API не существует — есть, конечно, PowerManager API, но к энергосбережению это имеет лишь очень косвенное отношение. Однако на Samsung Galaxy Note 10.1 (впрочем, как и для остальных Droid-девайсов южнокорейского гиганта) энергосбережением управляют через DVFS — Dynamic Voltage and Frequency Scaling, того самого, с помощью которого Samsung «фальсифицировал» результаты бенчмарков (замечу в скобках, что это была не настоящая фальсификация — просто для некоторых бенчмарков и приложений устройство работало на пределе своих возможностей).
Для отключения системной анимации (анимация в приложениях останется) нужно зайти в меню параметров разработчика, которое по умолчанию скрыто. Чтобы получить к нему доступ, семь раз тапни на пункте «Номер сборки», который находится в меню «Об устройстве / О телефоне». Затем перейди в появившееся меню и повыключай всю анимацию: параметры «Масштаб анимации окна», «Масштаб анимации перехода» и «Шкала длительности перехода» установи в «Анимация отключена» (в прошивках других производителей данные опции могут иметь несколько другое название).
В этом же меню можно ограничить количество фоновых процессов. Последнее, впрочем, следует делать с осторожностью — вместо ускорения возможно замедление работы из-за того, что часто используемые процессы будут прибиваться и вновь запускаться. Потому же, кстати, не рекомендуются всяческие таск-киллеры.
Ускорение приложений
Для ускорения отдельно взятых приложений можно почистить их кеш. Делается это в том же месте, где их можно отключать/удалять, то есть «Настройки -> Общие -> Диспетчер приложений -> Все», выбрать нужное тебе приложение и нажать кнопку «Очистить кеш».
Имеет также смысл ставить менее ресурсоемкие приложения — например, в моем случае Smart Launcher забирает меньше памяти, чем это делает родной самсунговский TouchWiz. Во врезке будут приведены конкретные советы, но особо следовать им я не рекомендую, поскольку все зависит от твоих потребностей. Главное в этом случае — подобрать нужное соотношение размер/функциональность.
Для определения потребления памяти можно использовать такой метод: устанавливаем какой-нибудь терминал с Busybox, определяем PID нужного процесса (с помощью 'ps w') и смотрим файл /proc//status. При этом, правда, нужно учитывать архитектуру Android — приложение может быть разнесено по нескольким процессам.
Если для тебя этот метод слишком трудный и ты не хочешь заморачиваться с каждым приложением — в маркете есть несколько графических аналогов утилиты top. Мне понравился один из них, под названием Process Explorer, реализация которого, правда, показалась непонятной — зачем для просмотра списка процессов использовать браузер?
Кстати, у сервиса Google Play есть привычка внезапно обновлять кучу приложений, что, понятно, съедает ресурсы. Отключить данный сервис не представляется возможным, но можно отключить само обновление. Для этого заходим в Play Маркет, вызываем меню (хинт: если не выходит вызвать с помощью софт-клавиш, «потяни» с левого края), выбираем «Настройки» и ставим в «Автообновление приложений» «Никогда».
Точно так же имеет смысл отключить и синхронизацию учетных записей (что, в дополнение к возможному увеличению быстродействия, потешит твою паранойю). Для этого заходим в «Настройки» и ищем, где находится пункт «Учетные записи», затем выбираем учетную запись и отключаем синхронизацию (как вариант, можно отключить только отдельно взятые и ненужные типы синхронизации, такие как, например, контакты Google+ или календарь. — Прим. ред.).
Отключение сканирования мультимедиа
По умолчанию Android сканирует все внешние накопители (SD-карты) на предмет мультимедиафайлов. Данная функция, хотя и полезна, достаточно сильно тормозит систему. Отключить ее можно. Для новых накопителей создаем пустой файл .nomedia в корне. Но чтобы отключить отображение уже имеющихся файлов в Android 4.0 и позднее, нужно, помимо создания данного файла в нужной тебе папке, произвести очистку данных и кеша для приложений «Галерея» и «Хранилище мультимедиа» и принудительно их остановить. После следующего запуска все мультимедиафайлы проиндексируются уже с учетом созданных файлов .nomedia.
Ускорение отдельных устройств — советы и секреты
Приведу несколько советов по самым известным брендам. Стоит отметить, что советы эти годятся только для официальных прошивок, поэтому если у тебя модифицированная прошивка — можешь смело пропускать раздел.
Samsung
Если ты владелец какого-либо из устройств данного бренда, то наверняка обратил внимание, что переход на основной экран по нажатию кнопки Home немного тормозит. Связано это с тем, что по двойному нажатию запускается S Voice — система распознавания речи. Если ты ею не пользуешься, можно отключить эту функцию, сняв чекбокс «Откр. клавишей „Домой“». Кроме того, если ты случайно включил команду пробуждения, лучше ее отключить — использование этой опции влияет на заряд батареи довольно сильно.
Кроме того, на некоторых устройствах Samsung имеется возможность отключения эффектов лаунчера. Для этого сделай долгий тап по пустому месту на домашнем экране, выбери «Настройки домашнего экрана» (Home screen settings) и в подменю «Эффект перехода» (Transition effect) выбери «Нет» (None).
HTC
В отдельных случаях на устройствах HTC может тормозить служба сообщений об ошибках. Хотя подобные вещи и не рекомендуется трогать, можно отключить данную опцию, зайдя в «Настройки -> О телефоне -> Отправлять HTC» (Tell HTC) и поснимав там соответствующие чекбоксы.
Sony
На Sony Xperia SP бывает ситуация, когда телефон внезапно начинает тормозить. Проблему можно попытаться исправить, удалив обновления для Google Chrome: «Настройки -> Приложения -> Chrome -> Удалить обновления».
Greenify
Приложение Greenify позволяет принудительно усыпить ненужные процессы (которые ты можешь выбрать) в то время, когда устройство спит, и запретить их вызов из сторонних процессов. Этим оно отличается от таск-киллеров, которые никак не препятствуют перезапуску фоновых приложений от внешних событий (по таймеру, требованию другого приложения или системному событию). К сожалению, часть функциональности доступна только на рутованных телефонах — в частности, самая важная функция засыпания приложений спустя несколько минут после засыпания устройства.
Причина в том, что метод forceStopPackage(), который позволяет Greenify перевести приложения в неактивное состояние, внутренний и доступен только системным приложениям или тем, что работают с правами root. В не-root-режиме остается использовать только метод killBackgroundProcesses(), который не выгружает процесс из памяти полностью, так что тому продолжают приходить системные события и «будить» его, что совсем не соответствует идеологии Greenify.
Поэтому для реализации функциональности в не-root-режиме разработчик Greenify пошел по совершенно другому и весьма изобретательному пути. При установке приложение регистрируется как Accessibility Service, получая таким образом доступ к интерфейсу системы, а затем просто вызывает диспетчер приложений и нажимает на нужные кнопки для убийства приложения через стандартное меню настроек Android. Во время спящего режима эта операция, к сожалению, невозможна, поэтому на нерутованных смартфонах Greenify может усыплять приложения только после того, как пользователь нажмет соответствующую кнопку.
ART
В Android 4.4 появилась замена Dalvik — ART, Android Runtime. Она обеспечивает AOT-компиляцию. Для того чтобы разобраться, что это такое и в чем состоит преимущество ART, придется сделать краткий экскурс в историю.
Во времена, когда закладывался фундамент под Android, в качестве языка программирования был выбран Java — в наибольшей степени из-за того, что предполагалось использовать ОС на самых разных платформах. И всем-то он был хорош, кроме одного — скорость работы Java-приложений была достаточно низкой. Происходило это потому, что код фактически интерпретировался.
Шло время. В Android 2.2 в виртуальную машину Dalvik добавили JIT-компиляцию. Это позволило добиться довольно значительного прироста скорости, но всех проблем не решило. И вот в версии KitKat появилась ART, позволяющая компилировать приложения даже не во время исполнения — во время установки. Включить ее можно в том же самом меню разработчика, где мы отключали эффекты. Это, с одной стороны, увеличивает время установки и размер, а также при первом включении требуется значительное время для преобразования всех уже установленных приложений в нативный код. С другой же стороны, увеличение скорости после ее включения в среднем составляет 50%, а для отдельных приложений и того больше (в частности, прокрутка стала гораздо более плавной).
Но есть у ART и недостатки. Некоторые из них очевидны — например, несовместимость с отдельными обфускаторами и приложениями. На отдельных же просто не концентрируют внимание, хотя стоило бы. К таковым я отнесу возможные проблемы с безопасностью. Проведенные относительно недавно (на майской конференции HITB) эксперименты показывают, что в случае подсовывания специально сформированного DEX-файла транслятор (dex2oat) вылетает. Кроме того, если найти уязвимости в самой ART, появится возможность создавать user-mode-руткиты. Помимо этого, образ boot.oat, генерируемый транслятором, имеет фиксированный базовый адрес (0x700000), что позволяет при некоторых условиях обойти ASLR.
В то же время с точки зрения реверс-инжиниринга статический анализ OAT-файлов пока что затруднен — по той причине, что привычных нам имен методов в коде попросту нет. Оно и понятно. Зато, поскольку формат OAT-файлов фактически представляет собой ELF, можно использовать инструменты, предназначенные для последнего, такие как GDB. Что же до динамического... Инструментарий для него как таковой отсутствует.
ART будет включена по умолчанию в пятой версии ОС от Google (а Dalvik, соответственно, будет удалена). На мой взгляд, с учетом потенциальных проблем с безопасностью полностью отказываться от Dalvik рановато, так что тут я с политикой Google не согласен. Однако (с учетом этого) тем более стоит включить ART на KitKat, чтобы протестировать нужные приложения.
Заключение
Несмотря на гибкость платформы Android, без использования кастомных и/или рутованных прошивок ускорить работу твоего девайса трудно. Но не невозможно, доказательством чего служит данная статья. Напоследок дам тебе универсальный совет: устанавливай только те приложения, которые ты реально будешь использовать, всем же остальным говори твердое «Нет».
Легковесные программы для Android
Приведу краткий список легковесных аналогов нужных программ для Android. Список этот минимальный, включающий только самое, на мой взгляд, необходимое:
- Вместо Google Maps можно использовать RMaps. Мало того что это приложение легковеснее, так еще и гораздо более функционально.
- Громоздкий Adobe Reader можно заменить Mupdf.
- Читалок достаточно много. Из легковесных могу посоветовать AlReader и FBReader.
- Из браузеров можно поставить Lighthing Browser, де-факто представляющий собой облегченный стандартный.
- Чрезвычайно тяжелый клиент RSS-ридера Feedly лучше заменить на легкий FeedMe (осторожно, только для смартов).
Что дает root? (слово редактора)
Примерно год назад я написал статью об ускорении работы новых версий Android на устаревших аппаратах. В ней я рассказал о нескольких требующих прав root приемах, с помощью которых можно поднять производительность смартфона путем выгрузки из оперативной памяти всех некритичных для работы компонентов системы. Если кратко, то в статье было приведено пять основных методов:
- Тюнинг механизма Low Memory Killer с целью научить систему выгружать фоновые приложения из памяти устройства быстрее, чем это происходит по умолчанию. Трюк требует модификации параметров ядра, а потому доступен только на рутованном устройстве. Используемые приложения: Auto Memory Manager или MinFree.
- Удаление всех ненужных системных приложений из каталогов /system/app и /system/priv-app. Можно сделать с помощью любого файлового менеджера с поддержкой root.
- Отключение ненужных системных приложений с помощью Bloatware Freezer, отключение их автозагрузки с помощью Autostarts.
- Установка оптимизированного кастомного ядра и активация механизма Zram, а также алгоритма контроля насыщения TCP westwood. Разгон процессора.
- Тюнинг подсистемы виртуальной памяти ядра с целью обеспечить более быструю выгрузку данных из кешей.