Как сделать из смартфона кирпич

Обновлено: 02.05.2024

Facebook Если у вас не работает этот способ авторизации, сконвертируйте свой аккаунт по ссылке ВКонтакте Google RAMBLER&Co ID

Авторизуясь в LiveJournal с помощью стороннего сервиса вы принимаете условия Пользовательского соглашения LiveJournal

Bootloader, pit файл и как сделать из телефона кирпич.

Сегодня был не самый лучший день для могих пользователей Samsung Galaxy S2. При попытке поставить на него утекшую прошивку с использованием утилиты Odin, у многих телефоны превратились в "кирпичи". Пользуясь случаем, хочу рассказать, как это все работает, и откуда появляется риск "окирпичивания" телефона.

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

C: бутлоадер, он же загрузчик.
D: ядро
E: recovery
F: система/платформа
G: кэш
H: данные пользователя
I: модем

Предназначения партиций D-H мы уже обсуждали. Давайте теперь поговорим про бутлоадер.

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

Но сейчас нам интересен бутлоадер. А умеет он больше, чем просто загружать ядро:

- Он умеет "общаться" с ядром через общую маленькую партицию. Таким образом, он может запускать телефон в разных режимах: нормальной работы, восстановления (recovery), загрузки прошивки (download) и т.п.

- Также он "понимает" определенные комбинации клавиш, чтобы загружать телефон в вышеупомянутых режимах.

- Он понимает структуру разбивки на партиции, то есть он знает, где какая партиция начинается и где она заканчивается.

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

- Более того, он может принять и новую таблицу партиций и в соответствии с ней переразбить хард драйв и записать на новые партиции новые образы прошивок.

- На некоторых телефонах он умеет "опозновать" свое ядро и загружать только его. (secure bootloader)

А вот теперь представим, что что-то пошло не так при заливке, и новый бутлоадер у вас не запислался. Понятно, что пока он загружен в память, что-то еще можно делать. А вот когда перезпустим телефон - получим кирпич. Телефон как положено, считает байты с того же адреса и начнет их запускать. А новые байты окажутся испорченными и бесполезными. Где ядро, они не знают, как общаться с загрузочной программой - тоже. То есть "режим заливки" пропадет, и прошивку мы уже никак не сможем загрузить - телефон просто в него больше не грузится. В таком случае восстановить телефон можно в сервис центре при помощи программатора JTAG. На плате телефона есть специальные контакты, позволяющие "прошить" те же образы прошивки в телефон, минуя загрузку и общение с загрузочной программой.

Еще один хороший способ испортить бутлоадер и брикнуть телефон - это запортить процесс перебивки хард драйва на новые партиции. Так как при этом информация на диске становится бесполезной (размеры партиций могут поменяться, и/или информация просто может оказаться недоступной после разбивки), при репартиции все надо прошивать заново, и любая ошибка при репартиции или последующей пршивке бутлоадера будет фатальной.

В самсунговских упаковках прошивок, бутлоадер (их там на самом деле три, и они разные) обычно включенв комплект, и я рекомедую его оттуда убирать перед прошивкой. И .pit файлом (файлом переразбивки прошивок) я рекомендую пользоваться в крайнем случае. Шанс того, что новые ядро и платформа уместятся в старые партиции, довольно высок. А если не уместятся - пока вы можете телефон загрузить в загрузочный режим, вы его сможете сами восстановить, бутлоадер же не тронут и прошьет что надо куда надо.

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

Что понимается под словом «кирпич» в мире смартфонов?

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

Поэтому и принято говорить, что аппарат превратился в «кирпич» – обычную вещь, не представляющую какой-либо ценности. В большинстве случаев такое состояние наступает во время неправильной прошивки или системного сбоя. К примеру, когда аккумулятор полностью разряжается или телефон неожиданно отключается от компьютера. И если обновление не было выполнено до конца, то есть шанс вообще не запустить смартфон.

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

Можно ли «оживить кирпич»?

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

  • Использование режима Fastboot . И этот вариант используют в подавляющем большинстве случаев, чтобы восстановить поврежденное устройство. Суть способа заключается в установке заводской прошивки посредством Fastboot и консоли. Но метод подходит не для всех аппаратов, а только для тех, где был разблокирован загрузчик.
  • С помощью программы QFIL. Такой вариант актуален только для телефонов и планшетов Android, где установлен процессор от Qualcomm. Приложение устанавливается на компьютер, а после позволяет «оживить» поврежденное устройство. В этом случае также выполняется загрузка заводской прошивки.
  • Сброс до первоначального состояния. Если телефон не полностью превратился в «кирпич», то можно попытаться перейти в меню восстановления и выполнить Hard Reset . В ряде случаев такое действие позволяет вернуться к тому состоянию, в котором устройство находилось до сбоя или прошивки.

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

Таким образом, мы выяснили, что такое «кирпич» на Android и как вывести устройство из такого состояния. Если у вас остались дополнительные вопросы по теме статьи, то смело пишите их в комментариях. Мы будем рады ответить вам и помочь!

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

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

Определение кирпича

По сути, «окирпичивание» означает, что устройство превратилось в кирпич. Это может быть электронное устройство стоимостью в несколько десятков тысяч рублей, но теперь оно так же полезно, как кирпич. Такое устройство не включается и не функционирует нормально.

Такое устройство не может быть исправлено обычным способом. Например, если Windows не загружается на Вашем компьютере, Ваш компьютер не «окирпичен», потому что Вы все равно можете установить на него другую операционную систему. Однако, если Вы попытались включить компьютер, и он вообще не работал должным образом, что делало невозможной установку операционной системы, Вы могли бы считать, что компьютер превратился в кирпич.

Слово «окирпичить» означает сломать устройство таким образом. Например, если кто-то говорит «я превратил свой телефон в кирпич», это крик о помощи — его телефон больше не работает.

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

Что заставляет устройства превращаться в кирпич

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

Например, допустим, у Вас есть iPhone, iPod, PSP, MP3-плеер, смартфон, цифровая камера или все, что использует встроенное ПО. Вы увидите уведомление, указывающее на наличие обновления для Вашей прошивки. Если Вы запустите процесс обновления прошивки, и устройство потеряет питание во время этого процесса — скажем, если аккумулятор разрядится, его шнур питания будет извлечен из гнезда зарядки или в Вашем доме отключится электричество, — возможно, устройство станет кирпичом. Если встроенное программное обеспечение перезаписано наполовину, возможно, устройство больше не включится и не будет работать должным образом.

Это не относится к программному обеспечению более высокого уровня. Например, если Вы дернули шнур питания Вашего компьютера во время установки обновлений Windows, Ваша установка Windows может быть повреждена. Однако Вы можете восстановить Windows или переустановить новую операционную систему — компьютер все равно должен нормально включаться. Однако, если Вы обновляете BIOS своего компьютера, и он теряет питание в середине процесса, это может привести к зависанию компьютера или в выходу его из строя (в зависимости от компьютера и наличия резервной копии BIOS, к которой можно вернуться).

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

Исправления для кирпичных устройств

Если Вы окирпичили устройство, то можно попробовать следующие способы для исправления:


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

1. Подготавливаем почву

Для начала разблокируем загрузчик и ставим кастомный рекавери (TWRP). В каждом смартфоне это индивидуально. Так что лучше воспользоваться Google. Далее скачиваем менеджер прав root SuperSU и прошиваем его с помощью кастомного рекавери (включаем смартфон с зажатой клавишей увеличения громкости, далее кнопка Install и выбираем ZIP-файл SuperSU на карте памяти).

Если кастомного рекавери нет, можно попытаться получить права root с помощью специальных программ: Root Dashi, KingRoot. Однако эти инструменты могут поломать систему так, что придется перезаписывать раздел system (прошивку). Все-таки лучше подождать, параллельно изучая форумы на русском, английском, немецком, китайском и других языках — все, где есть тема обсуждения твоего девайса.

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


Другие статьи в выпуске:

Сделать бэкап в рекавери TWRP (а других сейчас нет) легко. Загрузись в рекавери, включив устройство с зажатой клавишей увеличения громкости, затем нажми Backup и смахни слайдер вправо. Когда операция будет закончена, просто перезагрузи устройство: Reboot → System.

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

Устанавливаем BusyBox

Цитата из Википедии: «BusyBox — набор UNIX-утилит командной строки, используется в качестве основного интерфейса во встраиваемых операционных системах». Другими словами, это набор консольных утилит Linux, существенно расширяющий стандартную командную строку Android.

Как обычный пользователь смартфона ты вряд ли будешь применять их, но многие инструменты (например, для тюнинга ядра) требуют его наличия в системе. Итак, ставим из маркета BusyBox, запускаем, закрываем всплывающее окно и нажимаем Install. Все, осталось закрыть программу. Перезагрузка не требуется.

Ставим BusyBox

Ставим BusyBox

Устанавливаем Xposed

Xposed, как ты уже, наверное, знаешь, — это инструмент для кастомизации интерфейса и поведения Android. Версию для Lollipop и Marshmallow можно скачать из официальной темы на XDA. Рекомендую устанавливать XposedInstaller_3.1.1.apk или более новую версию. Он автоматически определит версию Android, тип и разрядность процессора и на основе этих данных предложит правильную версию установочного файла для загрузки. Тебе останется только установить его и перезагрузить смартфон.

2. Удаляем ненужный и опасный хлам

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

Далее следует отключить весь непонятный хлам, встроенный в прошивку. Идем в «Настройки → Приложения». Открываем вкладку «Все» (для Android 5.1) или переходим в режим «Все приложения», а потом нажимаем три точки справа вверху и выбираем «Показать системные процессы» (для Android 6+). Открываем непонятное или ненужное приложение: нажимаем «Отключить». Если кнопка серого цвета, то тут два варианта: производитель хочет, чтобы его никому не нужное приложение нельзя было отключить, или отключение данной программы может привести к серьезным сбоям в работе системы.

Те, что не отключаются стандартными средствами, можно заморозить с помощью Titanium Backup. Но будь аккуратен. Есть вероятность не только получить ошибки системы, но и циклический ребут или бесконечную загрузку. Так что бэкапы — наше всё. Удалять программы я рекомендую в крайнем случае при нехватке места в разделе /system.

3. Меняем настройки дисплея

Для начала меняем DPI дисплея с помощью приложения Easy DPI Changer. DPI расшифровывается как Dots Per Inch и означает количество точек на каждый дюйм экрана. Чем значение больше, тем более крупными будут элементы по отношению к размеру экрана.

Однако совсем не обязательно выставлять корректный DPI. Если информация на экране тебе кажется слишком мелкой — смело поднимай DPI, слишком крупной — снижай.

Также нам необходимо сохранить свои глаза в темное время суток. Для этого устанавливаем приложение CF.lumen. Это так называемый ночной режим, а если точнее — фильтр синего, который включается, когда за окном темно, и отключается в светлое время суток. Вечером экран будет желтеть, что благоприятно сказывается на зрении и позволяет проще заснуть.

4. Натягиваем шкурку

Как бы странно это ни звучало, но поменять тему оформления можно не только в кастомных прошивках и прошивках некоторых производителей (привет, Sony), но и во вполне стандартном стоковом Android. Для этого есть как минимум два приложения: Substratum и HK Theme Manager. Первый использует появившийся в Android 6.0 механизм переназначения ресурсов RRO и, соответственно, должен нормально работать хотя бы на стоке. Второй — это Xposed-модуль, позволяющий применять темы для CyanogenMod на девайсах со стоковыми прошивками.

Отмечу, что, кроме этого, Substratum позволяет также заменить анимацию загрузки, шрифты, звуки и обои.

Магазин тем в Substratum

Магазин тем в Substratum

С иконками все намного проще. Достаточно поставить нужный пакет иконок из Play Store и лаунчер, поддерживающий их применение. Очень неплохой вариант: Pixel icon Pack — круглые иконки приложений в стиле Google Pixel.

5. Настраиваем сотовую сеть

Обычно после покупки смартфона за границей нас интересует, в каких сетях он может работать, какие частоты поддерживает. Тут поможет Network Signal Guru. Этот монстр не только показывает множество полезной (и непонятной 99% пользователей) информации, но и позволяет очень тонко настроить подключаемые к смартфону сети.

Для того чтобы узнать о поддерживаемых типах сетей, достаточно нажать на три точки вверху и выбрать Bandlocking. В этом режиме после выбора соответствующего режима во всплывающем меню можно увидеть поддерживаемые типы сетей. Для их отключения достаточно просто снять галочки. Например, если убрать в WCDMA галку с B1, то сети 3G перестанут работать и смарт будет переключаться только между 2G и 4G. Чтобы обратно включить режим, достаточно вновь поставить галку либо перезагрузить аппарат.

Смысл отключения 3G в том, чтобы заставить смартфон использовать 4G даже в условиях неуверенного приема и отучить его прыгать между 3G и 4G, что может привести к обрывам соединения и, например, сбросу закешированного видео в YouTube. При этом врубать режим «только 4G» тоже нельзя, иначе те, кто пытается дозвониться, будут получать сигнал «Занято» (при условии, что смартфон или оператор не поддерживают VoLTE, как чаще всего и бывает).

Режимы звонков

Режимы звонков

6. Прокачиваем Android

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

    — мод полностью заменяет строку состояния на таковую из Android 7 со всеми переключателями и анимациями. Плюс открывает возможность редактировать переключатели. В настройках появляются полезные надписи под именами опций. Появляется удобное переключение между двумя последними запущенными приложениями с помощью двойного нажатия кнопки «Домой». — позволяет выключать дисплей двойным тапом по статусбару, как в CyanogenMod. . Убирает всплывающее уведомление о низком заряде аккумулятора. Ты же ведь и так постоянно смотришь в правый верхний угол? — позволяет настроить количество шагов громкости для более точной регулировки. — показывает скорость входящего и исходящего трафика в строке состояния. — расширенное меню перезагрузки устройства с пунктами для перезагрузки в рекавери, загрузчик и так далее. — показывает прогресс загрузки данных из сети в виде тонкой полоски над строкой состояния.

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

Прозрачность на экране блокировки (GravityBox)

Прозрачность на экране блокировки (GravityBox)

7. Вносим правки в системные настройки

Теперь немного подкорректируем системные настройки. Они хранятся в файле /system/build.prop, и, как можно догадаться из его названия, это описание конфигурации конкретной сборки Android для конкретного смартфона. Этот текстовый файл описывает, какой DPI должна выставить система, каковы настройки для системы очистки памяти, сколько памяти выделять приложениям, какие настройки мобильной и Wi-Fi-сетей выставлять при первом включении, а также многое другое (версия Android, версия оболочки, название устройства, дата сборки прошивки и так далее).

Очень удобный редактор build.prop встроен в Kernel Adiutor, но никто не запрещает пользоваться обычным редактором (главное, чтобы он позволял открывать файлы в режиме root). Но не забывай, что система читает build.prop только при включении устройства, следовательно, чтобы применить любые изменения, нужна перезагрузка.

Рассмотрим самые интересные для нас строки:

С помощью нехитрой манипуляции смартфон можно заставить работать в режиме только GSM или 4G. Для этого нужно включить режим TD-SCDMA, GSM and LTE. TD-SCDMA у нас в стране нет, поэтому будет ловиться только GSM или 4G.

Удобный редактор build.prop

Удобный редактор build.prop

8. Меняем дефолтовый софт

Лаунчер

Одна из самых главных программ, влияющих на пользовательский опыт. Стоковый лаунчер многих недорогих смартфонов жутко неудобен: это либо стандартный лаунчер Android (что не так плохо), либо поделие безумных программистов. Что ж, исправим ситуацию.

Галерея

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

Диалер

Диалер — вторая из самых используемых программ. К сожалению, на китайских (и не только) смартфонах качество его исполнения оставляет желать лучшего.

    — умеет искать по организациям поблизости. С его помощью можно без всяких Google или Яндексов узнать, например, телефон паспортного стола или местного почтового отделения. Однако база номеров в основном распространяется на города федерального значения: Москва, Санкт-Петербург, Севастополь. — самый популярный диалер из Google Play. Две крутые фишки: умеет (в некоторых случаях) определять звонящего, даже если его нет в твоей адресной книге, включает в себя огромную базу «нежелательных» номеров (рекламные агентства, коллекторы), что позволяет сразу вычислить их и заблокировать. — очень приятный наборщик номера. Быстрый, понятный, есть настройки, доступна возможность объединения контактов.

Камера

    — прекрасная камера с открытым исходным кодом. Изобилует множеством функций. Есть поддержка DRO (продвинутая версия HDR), множество настроек, но отпугивает довольно-таки кривым интерфейсом. — по функциональности в целом уступает Open Camera. Зато интерфейс выглядит значительно круче, работает более плавно.

Заключение

На мой взгляд, самым верным решением после покупки непонятных китайских смартфонов будет установка на них CyanogenMod или другой прошивки на его основе. Но даже сток можно превратить во вполне пригодную для использования систему.

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

Эту статью я адресую всем тем, кто до сих пор пользуется смартфонами, вышедшими до появления версии Android 4.0, всем тем, кому «посчастливилось» купить девайс с 512 Мб оперативной памяти, а через месяц вышел Ice Cream Sandwich, и пришлось остаться на 2.3 или мириться с тормозами. В общем, для обладателей доисторических, но любимых HTC Desire, Motorola Defy и Samsung Galaxy S.

Обладателем одного из таких девайсов являюсь и я сам. Около трех лет назад за сегодняшнюю цену Nexus 4 я приобрел смартфон Motorola Defy. Это такой кирпич с экраном на 3,7 дюйма, 1 ГГц процессором, 512 Мб оперативной памяти и защитой от грязи и воды. С ним я проходил около года и впоследствии заменил на Galaxy Nexus, однако отдать или продать побитую, несколько раз тонувшую и прошедшую со мной через все, что только можно, моторолу не решился. Смартфон действительно был хорош, удобен, легко помещался в кармане и выдерживал любые испытания.

Проблема была только в том, что по умолчанию на Defy ставили Android 2.2, который впоследствии можно было обновить только до 2.3. Жадная и ленивая моторола оборвала все надежды владельцев, сказав, что 4.0 на смартфоне не будет — маловато памяти в зверьке.

К счастью, портировать Android 4.0 на Defy начали почти сразу после открытия исходников, и ко времени, когда необходимость в 4.X назрела, разработчики выкатили хороший полноценный порт (рассказ о том, через что они прошли, чтобы сделать это в условиях неломаемого залоченного загрузчика, достоин отдельной статьи). Но даже уже вылизанный Android 4.X (в лице CyanogenMod 10.2) работал на старом девайсе из рук вон плохо. Мизерный по нынешним временам объем памяти просто душил систему, и она постоянно держалась на пределе возможностей. В сравнении с 2.3, новая версия была просто невероятным тормозом, пользоваться которым не было никакого желания. Начались поиски любых путей оптимизации.

В сущности, все последующее повествование и есть рассказ о том, как заставить работать Android 4.3 (CyanogenMod 10.2) на Motorola Defy или любом другом устаревшем устройстве похожей конфигурации (в частности, точно такая же начинка была у Motorola Droid и похожая у Samsung Galaxy S). Впрочем, все сказанное будет справедливо вообще для любого девайса на Android 4.X, начиная от Samsung Galaxy Nexus и заканчивая HTC One.

Итак, у нас есть смартфон под управлением Android 4.X, и он безбожно тормозит. Приложения запускаются долго, промотка происходит с задержками, общий FPS около 5–10 кадров. Проблемы здесь, как и положено, две: процессор и память.

Официальные системные требования Android 4.X — это процессор на 1 ГГц и 1 Гб оперативной памяти. Только такой смартфон может пройти сертификацию и получить возможность продажи с предустановленным Google Play. Все, что ниже, — нет. И никакого запаса по памяти или частотам здесь нет, это край, ниже которого начинаются тормоза. Не из-за кривости чьих бы то ни было рук, а по причине функциональности ОС, которая с выходом Ice Cream Sandwitch действительно серьезно возросла (ну или можно все свалить на Java).

Сколько памяти потребляет Android 4.X? Много. Только что загруженная операционная система занимает около 350 Мб, за вычетом кода ядра и невыгружаемых компонентов на девайсе с 512 Мб памяти свободными остаются около 120 Мб. Среднее современное приложение вроде Twitter или Instagram во время своей работы может сожрать до 50 Мб. То есть оперативная память будет исчерпана уже после включения аппарата и запуска пары-тройки приложений.

Да, тебе не нужна одновременная работа нескольких программ, однако Android — это не Windows, он не завершает работу приложения при его закрытии, а всего лишь сворачивает, в результате чего софт продолжает жрать память, даже когда ты им не пользуешься. Чтобы ось не сдохла от нехватки памяти, в критические моменты просыпается процесс, названный Low Memory Killer, и беспощадно убивает фоновые приложения.

Современный Android-софт очень прожорлив

Современный Android-софт очень прожорлив


Другие статьи в выпуске:

Для нас Low Memory Killer очень важный инструмент. Это не просто топорная прибивалка софта, а интеллектуальный механизм, который можно перенастроить под любые нужды. Алгоритм работы этого внутриядерного процесса основан на значениях «важности», которые присваиваются каждому работающему в системе приложению и могут изменяться во времени. Всего таких значений шесть:

  • FOREGROUND_APP — видимое на экране приложение, его убивать нельзя ни в коем случае;
  • VISIBLE_APP — работающий в фоне процесс, отвечающий за вывод той или иной информации на экран (иконка в строке состояния, выдвижная панель, виджет и так далее), его лучше тоже не убивать;
  • SECONDARY_SERVER — фоновый сервис, такой как музыкальный проигрыватель, будильник, синхронизация данных, обычно может быть убит без серьезных последствий для системы в целом, но с потерей функциональности;
  • HIDDEN_APP — работающее в фоне приложение, может быть убито в любой момент, но это скажется на его функциональности;
  • CONTENT_PROVIDER — фоновый сервис, отвечающий за хранение и предоставление какой-либо информации (настройки, фотографии, что угодно), но в данный момент простаивающий (клиентов нет), может быть безболезненно убит;
  • EMPTY_APP — любой фоновый процесс (приложение), который ничего не делает, первый кандидат на убийство.

Важность приложений каждой группы растет снизу вверх. То есть при нехватке памяти Low Memory Killer начнет убийство с последней группы и, если памяти снова будет не хватать, будет продвигаться выше. Само понятие «дефицит памяти» у Low Memory Killer определяется шестью порогами, по одному на каждую группу процессов. На всех смартфонах (и прошивках) значения этих порогов разные, например, на Motorola Defy с CM-10.2 на борту они такие:

Свободной памяти меньше 70 Мб — убиваются безработные фоновые приложения, меньше 55 Мб — в расход пойдут Content Porovider’ы и так далее. Когда памяти останется всего 25 Мб, будет убито используемое в данный момент приложение, но вероятность такого исхода крайне мала; после убийства всех остальных приложений память занимать будет просто некому.

Красота всего этого механизма в том, что он может быть перенастроен в любой момент. В Android есть файл /sys/module/lowmemorykiller/parameters/minfree , который можно прочитать, чтобы получить текущие значения порогов или записать в него новые значения (через запятую в 4-килобайтных блоках), которые вступят в силу сразу после записи. То же самое можно сделать, используя приложение Auto Memory Manager, MinFree и аналоги.

Какие значения будут подходящими? Здесь все зависит от способа использования смартфона. Если аппарат тебе нужен только для того, чтобы звонить, читать почту и твиттер, значения лучше либо оставить как есть, либо убавить (но не рекомендую ставить ниже 50 Мб). Тогда система будет освобождать память только в крайнем случае, и все приложения, которыми ты часто пользуешься, останутся в памяти и будут запускаться мгновенно.

Если же ты привык использовать смартфон для запуска большого количества самых разных приложений и игр, то значения лучше повысить (в Auto Memory Manager это можно сделать за один тап, нажав кнопку Aggressive). Тогда в системе всегда будет оставаться достаточно памяти для запуска сразу нескольких тяжелых приложений, и она не будет тратить время на освобождение оперативки.

Еще один радикальный вариант — это повысить лимиты двух последних групп до максимума, в результате чего Android фактически превратится в однозадачную систему, каковой до недавнего времени была iOS и до сих пор остается Windows Phone (условно, конечно). Другими словами, система будет автоматически убивать приложения сразу после их закрытия, но только в том случае, если софтина не будет в этот момент ничего делать. Системные компоненты при этом останутся висеть в памяти.

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

Все наши манипуляции с Low Memory Killer не принесут особого прироста производительности, если память системы будет забита разными клиентами Facebook, VKontakte, Hangouts Google+ и прочими. Обычно такой софт стартует сразу после загрузки системы и попадает либо в группу SECONDARYSERVER, либо в HIDDENAPP (иногда в CONTENT_PROVIDER), так что до него механизм очищения памяти добирается только в последнюю очередь, а даже если добирается, через некоторое время софтина перезапускается (обычно это связано с каким-либо системным событием).

Поэтому вторым пунктом в нашем плане улучшения скорости работы будет избавление от всех подобных приложений. Нет, реально нужные, конечно, лучше оставить, а те, которые стоят для галочки, — удалить. Если ты используешь стороннюю прошивку, типа CyanogenMod, стандартный архив Gapps (тот, который прошивается после самой прошивки) лучше заменить на минимальный (goo.im/gapps/minimal). Из гугловских приложений в нем только сам маркет и Gmail, а Hangouts, карты и куча других сервисов вырезаны, поэтому они тоже не будут стартовать во время загрузки и жрать память (любой из них можно установить из маркета).

Кроме Google-сервисов, довольно много памяти могут отъесть сервисы и автоматически запускаемые приложения самого Android. Удивительно, но в памяти работающей Android-системы можно легко обнаружить кучу софта, которым ты вообще не пользуешься. Это может быть диктофон, калькулятор, «Черная дыра» (к сожалению, это всего лишь живые обои), а также сервисы голосового набора (набора номера, не поиска), календаря и синтезатора речи. Причем если первые просто были запущены во время загрузки и довольно быстро вытесняются Low Memory Killer, то вторые — это полноценные сервисы, которые висят в памяти на протяжении всей жизни смартфона.

Многие из этих сервисов можно отключить через стандартный диспетчер приложений, даже не имея root. Достаточно перейти в «Настройки -> Приложения -> Все», тапнуть по нужной софтине и нажать кнопку «Отключить» (ну или «Удалить», а затем «Отключить», если были установлены обновления). Вот список приложений, которые, с точки зрения инженеров Google, можно безболезненно отключать:

  • Голосовой набор (com.android.voicedialer)
  • Диктофон (com.android.soundrecorder)
  • Календарь (com.android.calendar)
  • Калькулятор (com.android.calculator)
  • Обновление CyanogenMod (com.cyanogenmod.updater)
  • Память календаря (com.android.providers.calendar)
  • Синхронизация закладок (com.google.android.syncupdaters.bookmarks)
  • Синхронизация календаря (com.google.android.syncupdaters.calendar)
  • Стандартные заставки (com.android.dreams.basic)
  • Фоновые рисунки (com.android.musicvis и com.android.magicsmoke)
  • Черная дыра (com.android.galaxy4)
  • com.android.wallpaper.holospiral
  • Email (com.android.email)
  • Picasa Uploader (com.google.android.apps.uploader)
  • Pico TTS (com.svox.pico)

В скобках я привел системное имя приложения так, чтобы в случае необходимости ты мог не просто отключить, но и удалить его (а зачем зря тратить место?). Все системные приложения хранятся в каталоге /system/app и могут быть удалены с помощью любого файлового менеджера с поддержкой root.

По умолчанию система не позволит отключить некоторые весьма прожорливые, но тем не менее важные сервисы. К таким относятся, к примеру, «Телефон» (это приложение входит в группу FOREGROUND_APP и поэтому всегда висит в памяти), «Эквалайзер» (только в CyanogenMod и производных), Google Backup Transport (~45 Мб), ответственный за бэкап установленного софта в облаке Google (восстанавливается после переустановки прошивки, например), «Меню SIM-карты» и Fused Location (~45 Мб), сервис, который собирает данные о местоположении со всех возможных источников (сотовая сеть, IP-адрес, барометр, GPS, компас) и на их основе вычисляет точное положение смартфона на карте. Приложения типа навигаторов будут работать и без него, но с меньшей точностью.

Избавиться от всех этих процессов поможет root-приложение Bloat Freezer. Оно позволяет отключить не только приложения, дозволенные к отключению самой системой, но и вообще любые, в том числе главный системный процесс android.process.acore. Кроме приведенных выше пожирателей памяти, безболезненно можно прибить еще такое количество системных приложений, что мне будет проще привести список тех, которые отключать нельзя. Вот они:

Все остальное можно безболезненно выключить (ну или оставить те, которые еще могут пригодиться, например FM-радио). Когда все будет сделано, открываем любой менеджер процессов, прибиваем все пользовательские процессы и смотрим, сколько памяти занято. В моем случае 200 Мб. Очень даже недурно в сравнении с изначальными 350 Мб.

Отключаем бесполезный голосовой набор Отключив Fused Location и Google Backup Transport, мы освободим 90 Мб памяти Отключаем системные сервисы с помощью Bloat Freezer

bloatware2

После чистки система занимает меньше 200 Мб!

После чистки система занимает меньше 200 Мб!

Второе, что мы можем, — это отучить прожорливые приложения что-либо делать в фоне. Для этого есть замечательное приложение Greenify (требует root), которое позволяет заморозить выбранные приложения так, чтобы они вообще не могли работать, пока не видны на экране. Запускаем Greenify, нажимаем «+» и видим список работающего софта, рассортированный по степени прожорливости, тапаем по нужному приложению и все, отныне в фоне оно всегда будет спать.

Некоторым приложениям незачем работать в фоне

Некоторым приложениям незачем работать в фоне

Что еще можно сделать для ускорения работы смартфона и очистки его памяти? В целом больше ничего. Есть, конечно, еще такие совсем радикальные методы, как замена тяжелого софта на простые легкие аналоги, хакинг софта с целью вырезания ресурсов, но все это плохо согласуется с идеей иметь полнофункциональный смартфон. Проще тогда поставить Android 2.3 (CyanogenMod 7) и вообще забыть о проблемах производительности.

Тем не менее есть еще два действенных совета. Первый — это активация технологии zRam, которая позволяет выделить небольшой фрагмент оперативной памяти и создать из него виртуальный своп-раздел со сжатием данных. В результате общий объем оперативной памяти виртуально увеличится, высвободив лишних 50–100 Мб.

Проблема с активацией zRam только в том, что сама технология есть далеко не в каждом ядре. Большинство кастомных ядер, а также ядра прошивок CyanogenMod, Paranoid Android и AOKP обычно включает поддержку zRam, но это не всегда верно. Стоковые прошивки обычно поставляются с ядрами без zRam. В CyanogenMod и производных активировать Z-RAM можно через меню «Настройки -> Производительность -> Управление памятью -> Использовать zRam». По умолчанию система выделяет под сжатый своп 18% памяти, но при необходимости значение можно увеличить до 26%. В других прошивках zRam активируется с помощью приложения Trickster Mod (вкладка «Специфичные функции»), однако так можно выделить только 10% памяти.

Второй действенный совет — это перенос всех приложений во внутреннюю память вместо установки на карту памяти. Тут выигрыш состоит в том, что встроенная NAND-память смартфона по определению намного быстрее памяти SD-карты, поэтому запуск приложения из внутренней памяти будет происходить быстрее. Более того, сам по себе механизм запуска приложений с SD-карты в Android реализован с использованием шифрованных контейнеров, что также вносит дополнительные издержки.

Перенеся все приложения во внутреннюю память, мы добьемся ускорения их запуска. Уже установленный на карту памяти софт можно легко вернуть назад через настройки: «Приложения -> Сторонние -> Выбор приложения -> Перенести на смартфон». Чтобы вообще отключить функцию установки новых приложений на карту памяти, нужны права root и эмулятор терминала. Запускаем терминал и набираем две команды:

Теперь по умолчанию весь софт будет устанавливаться во внутреннюю память. Чтобы настройка сохранялась между перезагрузками, берем любой файловый менеджер с поддержкой root, переходим в каталог /system/etc/init.d/ и создаем такой файл 99disable-app2sd.sh :

И с помощью все того же файлового менеджера ставим на него бит исполнения. Это рецепт для CyanogenMod и производных. На стоковых прошивках сначала необходимо установить приложение Universal Init.d, запустить его и включить переключатель на главном экране приложения.

Активируем zRam в CyanogenMod Активируем zRam с помощью TricksterMod По умолчанию Android предпочитает устанавливать софт на SD-карту

Применяя все описанные в статье приемы, мне удалось существенно поднять скорость работы при использовании Motorola Defy с CyanogenMod 10.2 на борту. Смартфон, конечно, не приблизился к скорости Nexus 4 и других современных девайсов, но в сравнении с настройками по умолчанию комфорт от использования повысился в разы и приблизился к таковому при использовании стокового Android 2.3.


Выявить приложения, которые просыпаются во время сна смартфона и садят его батарею, можно с помощью приложения Wakelock Detector.


Если ты не пользуешься поиском Google на домашнем экране, то рекомендую удалить/отключить приложение «Google поиск». Экономия: 10–15 Мб и место на рабочем столе (строка поиска исчезнет).

Евгений Зобнин

Редактор рубрики X-Mobile. По совместительству сисадмин. Большой фанат Linux, Plan 9, гаджетов и древних видеоигр.

Читайте также: