- Модификация стоковых прошивок для Android. Часть 1
- Преамбула
- Подготовка среды
- Преобразование прошивки
- Непосредственно модификации
- Эпилог
- Изменяем андроид без перепрошивки. 10 лучших твиков.
- XPOSED FRAMEWORK
- Как работает EXPOSED:
- УСТАНОВКА И НАСТРОЙКА
- МОДУЛИ
- GravityBox
- App Settings
- XHaloFloatingWindow
- XMultiWindow
- BootManager
- StatusbarVolume
- Burnt Toast, Jelly Toast, EnhancedToast
- CrappaLinks
- Xposed Call Blocker
- LightningWall
- Другие модули
- ВЫВОДЫ
Модификация стоковых прошивок для Android. Часть 1
Несколько лет назад, когда я впервые познакомился с Android, я услышал от своего коллеги по работе, что Android предусматривает возможность установки модифицированных или самодельных прошивок. Признаться, тогда я был далек от этого. И даже пол года назад меня едва интересовали подобные вещи. Глубоко в душе, я был уверен: то, что делает производитель, уже предназначено для нормального использования.
Каково же было мое разочарование, когда я приобрел телефон из поднебесной, где заводскими настройками было запрещено использование Google, Skype, Facebook и других приложений. В принципе, на некоторые вещи можно было закрыть глаза, но когда мой телефон не подразумевал использование учетной записи Google — я взял с себя обещания обязательно разобраться во что бы мне это не стало.
Прошло пол года и мои кастомные прошивки с успехом используются по всему миру.
В данной серии статей пойдет речь о том, как делать reverse программирование для Android, реализовывать патчи, твики и моды.
Преамбула
И так! Давайте сперва определимся с понятиями, которые будут использоваться в данной статье. Ваше привычное понимание, при этом, может сильно отличаться.
Патч — изменение или замена существующего программного кода с целью модификации алгоритма программы.
Мод — как правило, добавление дополнительного функционала в существующий программный код без изменения алгоритма.
Твик — усовершенствование функционала программы с целью облегчения доступа к параметрам системы.
Также хочу заметить, что все примеры будет взяты для телефона HTC, но это не значит, что данная информация не может быть использована на других телефонах.
Обращаю ваше внимание, что я, как автор, не несу ответственности за возможную потерю данных на вашем телефоне в результате использования информации ниже.
Подготовка среды
Обойдусь без подробных инструкций как пользоваться тем или иным программным обеспечением. Если вам интересна данная статья и вы дочитали до этих строк, то я надеюсь, что вы уже опытный пользователь и имеете опыт использования, ну или хотя бы экспериментирования в данной области. Инструкций, статей и результатов тестирования полно в открытом доступе, впрочем, как и на Хабре. Также обойдусь без описания некоторых терминов, иначе статья получится очень большой и нудной. Будем писать только по делу. Уверен, что среда у вас уже давно стоит. Если нет, то предлагаю скачать и установить.
1. Android SDK. Это среда разработки приложений для Андроид. Для того чтобы делать модификации, нам обязательно придется проверять наш программный код. Среда разработки самое лучшее, что мы можем использовать.
2. Android Kitchen. Данная утилита позволит вам работать с образами системных партиций официальной ну или неофициальной прошивки.
3. JD-GUI. Декомпилятор программного кода языка Java. Сразу отмечу, что это самый лучший декомпилятор в плане удобства использования.
4. DJ Java Decompiler. Еще один декомпилятор, или дизассемблер, как некоторые любят называть, программного кода языка Java. Не удобен в плане использования, но разбирает код, который иногда не понимает JD-GUI.
5. smali. Еще один дизассемблер, но уже dalvik кода. smali нужен для дизассемблирования, а backsmali ассемблирования кода.
6. dex2jar. Утилита для конвертации исполняемых файлов Dalvik кода.
Преобразование прошивки
Разумеется, прошивка, которая стоит у вас на телефон от производителя оптимизирована с целью сокращения энергопотребления. Для того чтобы прошивку можно было изменять, ее необходимо преобразовать в формат, позволяющий изменять код. Для этого используется Android Kitchen. Можно конечно и руками, как я и делал раньше, пока не нашел эту самую «кухню». Как вытаскивать системную область из телефона, устанавливать среду, делать DEODEX прошивки, вы можете прочитать в интернете. Если вам уже ничего не понятно, я думаю стоит повременить со статьей, пока вы не наберете достаточно опыта.
После того, как прошивка из оптимизированного вида (ODEX — оптимизированный dalvik исполняемый код, если мне не изменяет память) стала DEODEX (то бишь НЕ оптимизированной), все исполняемые файлы готовы к модификации.
Непосредственно модификации
Создание патчей
Как я уже и рассказывал, мой телефон изначально имел запрет на использование Google. Ну хоть ты тресни, на Playstore не зайти, учетную запись не настроить, телефонная книга толком не синхронизируется. Зачем нужен такой Android? Долго копаясь в логах (logcat) самого устройства, я нашел записи, которые говорили о том, что использование Google запрещено. Самое не удобное в Android, вы видите лог, но не знаете какое системное приложение его производит. Чтобы отыскать от куда ноги растут, мне пришлось распотрошить все системные приложения до дизассемблированного Java кода. Это заняло достаточно времени, но я до сих пор пользуюсь проделанной работой при анализе и поиске нужного кода. Этапы получения подобного инструментария следующие:
1. Сделать DEODEX всей прошивки
2. Вашу новую DEODEX прошивку надо будет собрать и прошить на телефон. Как это делается — тема другой статьи.
3. Из каждого файла, находящегося в /system/framework вытащить файл classes.dex и переконвертировать в JAR посредством dex2jar.
4. Каждый полученный JAR открыть в JD-GUI и пере-сохранить в исходный код
5. Распаковать исходный код из архива.
В итоге у меня получилось столько папок, сколько было JAR файлов в /system/framework, и каждая папка имела структуру исходных кодов Java.
Путем несложных манипуляций, я быстро отыскал то место, которое генерировало записи в logcat.
Не будем рассматривать всю логику запрета, так как для каждого случая это отдельная история. Мне пришлось потратить пару часов, прежде чем я нашел где производятся проверки, построить в голове блок схему алгоритма и понять куда надо лезть, чтобы алгоритм чуть чуть «попортить».
Оказалось все просто. Есть подпрограмма, которая на основе заранее установленных констант, при обращении отвечала, относится ли телефон к Китаю или же нет.
Код находился в файле HTCExtension.jar, а класс, который содержал данную подпрограмму находился в \com\htc\util\contacts\BuildUtils$Customization.java
Распаковка и анализ оригинального файла
1. Сперва нам надо взять оригинальный DEODEX JAR файл, который отвечает за нужную нам часть кода. В нашем случае HTCExtension.jar.
2. Открыть любым архиватором и вытащить от туда classes.dex
3. С помощью конвертера dex2jar преобразовать его в JAR файл. Команда: dex2jar.bat classes.dex
4. Открыть полученный classes_dex2jar.jar файл в JD-GUI.
5. Да, чаще всего JD-GUI декомпилирует код не так как он выглядит в оригинале, оно и понятно, но читать вполне можно. В исходнике мы видим, что подпрограмма проверяет параметры проекта и языковой флаг прошивки. В нашем прискорбном случае возвращается значение TRUE.
6. Чтобы сделать патч, нам надо дизассемблировать сам Dalvik код. Для этого используем baksmali. Удобнее всего создать отдельную папку и положить туда три файла вместе: HTCExtension.jar, smali.jar и baksmali.jar. Даем команду java -Xmx512m -jar baksmali.jar -a -d -o HTCExtension -x HTCExtension.jar
— это API вашей версии Android. Для JB — это 16
— папка, где находятся все фреймворки прошивки.
В моем случае это была команда
java -Xmx512m -jar baksmali.jar -a 16 -d S:\dev\Android\Android-Kitchen\WORKING_JB_15\system\framework -o HTCExtension -x HTCExtension.jar
7. В нашей вновь созданной папке появилась папка HTCExtension, а в ней наши файлы с Dalvik кодом.
8. Отыскиваем файл по пути \com\htc\util\contacts\BuildUtils$Customization.java и смотрим код:
9. Страшно, не правда ли? Ничего же не понятно. Но, это дело поправимое. Создав несколько своих патчей и набив тем самым руку, вы легко сможете модифицировать код без сторонних средств. В нашем случае, в этом коде
происходит присваивание переменной v0 значение 1, то есть TRUE. Далее идут всякие проверки, и если телефон не китайский, то значение переменной изменяется:
10. Самый простой способ спасти отца русской демократии, это изменить код на следующий:
, то есть поменять значение переменной с 1 на 0. То есть что бы ни было, всегда бы возвращалось значение FALSE и в JD-GUI код выглядел бы как
11. Да, метод ,будет работать. Но мы же не ищем легких путей — это раз. Во-вторых не совсем красиво. Хочется кода что-то вроде
12. А как нам получить Dalvik код данного исходного кода? Для новичков мы сделаем небольшой трюк.
Создание Dalvik кода
1. Открываем Android SDK.
2. Создаем новый проект, и в наш единственный тестовый класс пишем следующий код
3. Компилируем наш проект и затем берем собранное приложение из рабочей области.
4. Кладем собранное приложение в папку, где мы с вами потрошили JAR файл.
5. Даем команду
8. Все, код для патчинга готов.
Накатывание патча
1. Dalvik код замусорен маркерами, указывающими строку кода в оригинальном исходном файле. Это нужно при выводе ошибок, если таковые имеются в вашей программе. Без указаний строк код также прекрасно работает.
2. Удаляем строки с нумерацией строк, копируем и заменяем метод (подпрограмму) в нашем \com\htc\util\contacts\BuildUtils$Customization.java файле.
3. Сохраняем файл. Да, забыл сказать, редактор нужен нормальный, например Notepad++ или EditPlus. Кому какой нравится.
Компиляция и сборка патченного JAR файла
1. С помощью backsmali мы распотрошили наш JAR файл, а теперь его надо собрать обратно.
2. Даем команду java -Xmx512m -jar smali.jar -a 16 HTCExtension -o classes.dex
3. В нашей папочке появляется файлик classes.dex
4. Снова открываем HTCExtension.jar файл архиватором и заменяем в нем существующий classes.dex на наш только что созданный.
5. Все, наш HTCExtension.jar содержит модифицированный программный код.
Замена оригинального файла на патченный
Обычно, для рядовых пользователей создаются специальные скрипты, которые через recovery заменяются. Но нам такое не интересно. Во-первых долго и нудно, во-вторых мы же опытные пользователи и можем себе позволить некоторые тонкости.
1. Заменить текущий рабочий файл можно следующими командами, если у вас уже стоит DEODEX прошивка и имеется root доступ:
1-ая команда закидывает патченный файл на флешку
2-ая команда открывает shell
3-ая команда дает root доступ
4-ая команда монтирует систему в режим чтения/записи
5-ая команда делает резервную копию файла
6-ая команда перезаписывает существующий файл новым патченным.
7-ая команда настраивает разрешения
8-ая команда удаляет кэш
9-ая команда делает перезагрузку устройства.
2. Спасибо что дочитали до этого пункта, осталось немного.
3. После перезагрузки ваш новый патченный код вступит в силу.
4. Если код не работает или выскакивает ошибка, то путем не хитрых комбинаций можно вернуть назад резервную копию.
Эпилог
Да, кому-то показалось данная статья слишком специфичной, кому-то мало-понятной, а кому-то бесполезной. Я специально обошелся без углубленной детализации и иллюстраций как это все выглядит в живую и на практике. Во-первых, данный труд будет неблагодарный и только породить еще больше вопросов. Во-вторых, не хочу видеть армию пользователей на форумах, которые жалуются, что убили свой телефон.
К следующей статье я расскажу как делать Твики. Будет пример использования автоматической записи телефонных звонков родными средствами телефона. Спасибо за ваше внимание.
Источник
Изменяем андроид без перепрошивки. 10 лучших твиков.
В отличие от iOS, Windows Phone и некоторых других мобильных ОС, исходный код Android открыт, благодаря чему энтузиасты могут модифицировать систему каким угодно образом и оформлять свои модификации в виде свободно распространяемых прошивок, таких как CyanogenMod, Paranoid Android и OmniROM. Такие прошивки содержат в себе огромное количество полезнейших модификаций, однако не каждый готов идти на риск, устанавливая их. К счастью, существует способ получить все преимущества кастомов на любой стоковой прошивке.
XPOSED FRAMEWORK
Не так давно мы уже упоминали что для Android существует система Xposed — набор библиотек и приложений, которые, работая вместе, позволяют сторонним приложениям перехватывать обращения к любым Java-классам Android и подменять их на свои собственные. Проще говоря, аналог Cydia Substrate для iOS, с помощью которого пользователь может изменять поведение и внешний вид андроид.
Сам по себе Xposed предоставляет лишь средства для проведения перехвата, тогда как актуальная работа происходит в специальных приложениях, называемых модулями. В настоящее время подобных модулей насчитывается уже несколько сотен, а диапазон их функций простирается от таких мелочей, как вывод фотографии абонента при звонке на полный экран и эмуляции функциональности других прошивок, до движков тем и многофункциональных модулей «на все случаи жизни». Практически любую функцию любой сторонней прошивки сегодня можно получить с помощью модулей Xposed на обычной стоковой прошивке.
Большинство модулей никак не зависят ни от марки, ни от модели девайса и способны работать в любом Android начиная с версии 4.0. Единственное серьезное ограничение — необходимость получения прав root, но сегодня эта процедура доступна даже полному нубу благодаря наличию специальных приложений для рутинга.
Как работает EXPOSED:
Xposed состоит из двух основных компонентов: модифицированной версии бинарника /system/bin/app_process, который в Android отвечает за запуск виртуальной машины Dalvik, и набора Java-классов XposedBridge.jar, который содержит код, способный перехватывать вызовы любых Java-классов и отдавать их другим классам.
Суть метода. Инсталлятор Xposed заменяет стандартный app_process на свой собственный. При загрузке операционная система стартует виртуальную машину с помощью подмененного app_process, который автоматически загружает XposedBridge.jar. По мере работы система форкает виртуальную машину для каждого запускаемого Java-приложения, включая графический интерфейс и множество системных компонентов, так что классы XposedBridge оказываются в каждом из них.
При установке Xposed-модуль реги стрирует себя в XposedBridge в качестве обработчика тех или иных Java-классов этих приложений, что дает ему возможность заменить их на свои собственные. Говоря другими словами, модули Xposed не изменяют систему, а подменяют ее компоненты на «фейковые», поэтому после отключения модуля или всего Xposed система автоматически вернется к перво начальному состоянию.
УСТАНОВКА И НАСТРОЙКА
Установить и настроить Xposed довольно просто. По своей сути это обычный APK-пакет, который
после запуска разворачивает все необходимые компоненты для работы системы Xposed в систему. Получить сам пакет можно на официальном сайте (goo.gl/61rOz7). Там же, кстати, находится репозиторий модулей, однако скачивать модули вручную не придется, так как все можно сделать с помощью самого приложения.
После скачивания и установки пакета переходим в раздел «Фреймворк» и нажимаем кнопку «Установить/обновить», далее нажимаем «Быстрая перезагрузка», чтобы система подхватила установленные компоненты Xposed при следующей загрузке. В большинстве случаев этого будет
достаточно для того, чтобы подготовить Android к установке модулей. Если же речь идет о смартфоне с залоченным разделом /system (S-ON), способ установки придется изменить на «Из режима восстановления» в меню «Фреймворк Режим установки». В этом случае после нажатия
кнопки «Установить/обновить» система уйдет в перезагрузку и архив с компонентами Xposed будет автоматически прошит с помощью консоли восстановления.
МОДУЛИ
После перезагрузки вновь запускаем инсталлятор Xposed и переходим в раздел «Загрузка». Здесь отображаются все доступные в репозитории модули, а также обновления самого Xposed. Для установки модуля просто выбираем нужный и нажимаем кнопку «Загрузка» напротив последней версии. Чтобы активировать модуль, переходим в раздел «Модули», ставим галочку напротив того, что установили, и перезагружаем смартфон.
Попробуем установить один из модулей. Для примера хорошо подойдет Tinted Status Bar. Находим его, устанавливаем, активируем в секции «Модули» инсталлятора Xposed и отправляем смартфон в перезагрузку. После загрузки пробуем запускать разные приложения. Эффект должен быть заметен сразу, это строка состояния, которая теперь меняет цвет в зависимости от цветовой схемы самого приложения (почти как в iOS 7). Вот и все, мы поменяли поведение системного компонента без установки кастомных прошивок и модификаций, прошиваемых через
recovery!
Далее я расскажу о самых интересных, необычных и полезных модулях Xposed, но сначала предупрежу о нескольких нюансах, которые надо знать перед тем, как приступить к их установке.
Первое — модули бывают преимущественно двух типов: те, что просто делают свою работу и нигде не светятся, и те, что поддаются настройке. Модули первого типа могут изменять внешний вид или поведение системы, но настроить их не удастся; либо они активны в настройках Xposed, либо отключены (пример такого модуля — Masterkey Multi-fix). Модули второго типа обычно тоже никак себя не проявляют, но создают иконку в меню приложений, которая открывает доступ к настройкам модуля. С их помощью можно активировать те или иные функции модуля и изменить его поведение (примеров таких модулей полно: App Settings, GravityBox и многие другие).
Второе — не все модули совместимы с любыми версиями Android. Некоторые из них рассчитаны на работу с определенными типами стоковых прошивок (например, с прошивками от Samsung или HTC) и могут вести себя непредсказуемо на других прошивках (хотя смартфон они не окирпичивают, конечно). Другие рассчитаны только на работу с определенной версией Android. Например, в репозитории есть два модуля GravityBox, один из которых рассчитан на работу в Jelly Bean (Android 4.1–4.3), другой — в KitKat (4.4). Чтобы не словить глюки, этот момент тоже нужно учитывать. Также следует быть осторожнее с планшетами на базе Android 4.0–4.1, в них используется несовместимый с телефонным интерфейс и многие модули не работают.
Отдельная история — кастомные прошивки. Обычно с ними никаких проблем не возникает, но случаются курьезы. Например, после установки GravityBox в OmniROM ты получишь два индикатора батареи. Происходит так потому, что в этой прошивке используется собственный, несовместимый со стоком механизм отображения индикатора батареи, о котором GravityBox ничего не знает. К счастью, проблема легко решается отключением индикатора либо в настройках самой прошивки, либо в GravityBox (останется только один индикатор).
[ad name=»UMI 600×313″]
Третье — модуль может быть не просто обособленным пакетом, а входить в состав обычного Android-приложения. Если ты установишь на смартфон приложение Greenify из Play Store, в Xposed появится соответствующий модуль. В случае с этим приложением он опционален и нужен для получения большего контроля над сном приложений. Многие другие приложения также используют Xposed для расширения своей функциональности: BubbleUPnP для стриминга аудиопотока из любого плеера, Cool Tool — для отображения разных данных в строке состояния и так далее.
Перейдем к модулям. В мой список самых самых вошли более двадцати модулей на любой вкус и цвет. Вот они:
GravityBox
GravityBox — один из самых известных и популярных модулей Xposed. Он не имеет какого-то определенного узко специализированного назначения, а представляет собой сборник из огромного числа различных твиков, направленных в первую очередь на изменение внешнего вида системы.
Модуль способен кастомизировать строку состояния, изменять набор и расположение тайлов в шторке, позволяет изменять поведение кнопок навигации или вообще их отключить, расширяет меню перезагрузки (на манер кастомных прошивок), включает в себя реализацию PIE из Paranoid Android (аналог LMT Launcher), позволяет применить экранные фильтры, изменить поведение хардварных кнопок, поведение светодиода уведомлений и зарядки и многое-многое другое.
Фактически GravityBox — это сборник лучших функций из сторонних прошивок, с помощью которых можно изменить Android. Все функции поддаются тонкой настройке, однако в отличие от кастомных прошивок настройка производится с помощью специального и не слишком удобного меню, доступного через иконку GravityBox в меню приложений. Кроме GravityBox, в репозитории
можно найти и другие «модули-комбайны», такие, например, как Wanam и Xblast Tools, но по функционалу они уступают.
App Settings
Еще один очень популярный и полезный модуль. Предназначен для изменения внешнего вида
и поведения отдельно взятых приложений. Включает в себя такие функции, как возможность изменения значения DPI (позволяет увеличивать или уменьшать размеры элементов управления
приложения), изменение размера шрифта, языка приложения. Позволяет принудительно включить полноэкранный режим для любого приложения или заблокировать гашение экрана, принудительно включить альбомную или портретную ориентацию (полезно в случае приложений, которые умеют работать только в одном режиме, например диалер) и многие другие. Одна из интересных функций — возможность показа приложения поверх экрана блокировки.
Кроме того, модуль имеет свой собственный механизм отзыва полномочий у приложений, работающий независимо от системы AppOps, которая появилась в качестве скрытой возможности
в Android 4.3. С ее помощью можно, например, запретить определенному приложению ходить в интернет или отправлять SMS. Очень удобно при борьбе с назойливой рекламой или подозрительным софтом.
XHaloFloatingWindow
Интересный модуль, имитирующий часть функциональности системы уведомлений Halo из прошивки Paranoid Android. Модуль позволяет запускать выбранные приложения в плавающем окне, размер и прозрачность которого можно менять как вздумается. По умолчанию никак себя не проявляет, и, чтобы получить возможность открывать приложение в плавающем окне, придется добавить его в «Белый список» в меню «Свойства» в настройках модуля. После перезапуска приложения оно будет открыто в отдельном окне.
Фактическая полезность модуля не так велика, но он хорошо подходит для запуска приложений, выполняющих одну простую функцию, которым весь экран не нужен в принципе (например, Wifi ADB). Также следует иметь в виду, что не все приложения комфортно чувствуют себя в условиях постоянных изменений размера экрана (именно так эмулируется плавающее окно) и могут вести себя неадекватно.
XMultiWindow
Еще одна реализация многооконного режима, на этот раз из прошивки OmniROM. В отличие от модуля, описанного выше, не создает отдельное окно для приложения, а разделяет экран на две части, в которых отображается интерфейс разных приложений. Это очень похоже на встроенную функцию прошивок от Samsung, но действует в отношении любого приложения, а не только ограниченного набора стандартных приложений прошивки.
Работает сразу после установки и перезагрузки; приложение, запущенное с рабочего стола, откроется в полноэкранном режиме, если же в момент запуска экран уже будет занят другим приложением, то он разделится надвое. Имеет те же проблемы совместимости, что и XHaloFloatingWindow, но сам по себе гораздо полезнее. Не поддерживает фирменные самсунговские возможности, такие как drag’n’drop между приложениями. К слову сказать, в настоящий момент многооконный режим из OmniROM выпилен (по причине падений некоторых приложений), поэтому можно использовать данный модуль для замены.
BootManager
Данный модуль выполняет одну простую функцию: запрещает отдельно взятым приложениям автоматически запускаться на этапе загрузки ОС. Дело в том, что по умолчанию Android не позволяет регулировать автозапуск приложений, как это можно сделать в любой настольной ОС. Приложение, имеющее полномочие android.permission.RECEIVE_BOOT_COMPLETED, будет автоматически запущено системой при загрузке, и сделать с этим ничего не получится.
Если тебе это не кажется проблемой, то рекомендую запустить любой менеджер процессом (как вариант таск-киллер) в только что загруженной системе. Там ты увидишь и телефон, и приложение для обмена и SMS, и еще кучу сторонних приложений. BootManager позволяет решить эту проблему, выбрав только тот софт, который действительно нужен сразу после загрузки смартфона.
Да, я знаю, что в маркете уже есть приложения для решения этой задачи, но BootManager выгодно отличается от них тем, что работает на самом низком системном уровне и делает блокировку загрузки приложений правильно и быстро.
StatusbarVolume
Один из моих любимых модулей. Заменяет плашку со слайдером регулировки громкости, кото-
рая появляется при нажатии кнопок управления громкостью и закрывает информацию на экране, на тонкий ползунок, который появляется поверх строки состояния и быстро исчезает. Кроме того, включает в себя набор опций для изменения поведения модуля, среди которых можно найти две архиважных: отключение автоматической регулировки громкости уведомлений вместе с изменением громкости звонка и отключение раздражающего звука «бип» при нажатии кнопок громкости.
Минус модуля — он платный. По умолчанию устанавливается триальная двухнедельная версия, а для покупки полной придется заплатить один доллар. Кстати, чтобы получить доступ к другим ползункам громкости (громкость мультимедиа и будильника), необходимо потянуть вниз чуть ниже статусбара, пока на последнем отображается основной ползунок.
Burnt Toast, Jelly Toast, EnhancedToast
Три модуля для изменения поведения и внешнего вида сообщений, появляющихся на экране при определенных событиях (toast message).
Burnt Toast добавляет к сообщению иконку приложения, его вызвавшего (с возможностью кастомизации). Jelly Toast заменяет ущербный стиль оформления сообщений в KitKat (со скругленными углами и широкой рамкой) на простой и лаконичный из Jelly Bean.
EnhancedToast объединяет в себе функции двух предыдущих модулей и позволяет блокировать сообщения от выбранных приложений (большинство из них действительно бесполезны), в том числе с возможностью фильтрации по regexp (будут показаны только те сообщения, что попадают под шаблон). Как дополнительный бонус предоставляется поддержка Tasker, с помощью которого можно настроить автоматическое управление функциями модуля.
[ad name=»Umi 600×217″]
CrappaLinks
Второй в моем личном списке наиболее полезных модуль (после StatusbarVolume). Делает одну простую вещь — автоматически разворачивает сокращенные ссылки перед их открытием в приложении. Зачем это нужно, когда любой браузер развернет их самостоятельно? Затем, что ссылка, ведущая, например на youtube.com, play.google.com или facebook.com, в стандартной ситуации открывается не в браузере, а в соответствующем приложении, что правильно и очень удобно.
Однако, если ссылка будет сокращена, система не сможет понять, кому ее отдать, и отправит дефолтовому браузеру, который появится на экране, развернет ссылку и лишь затем отдаст ее клиенту (и это в лучшем случае, в худшем — откроет внутри себя).
CrappaLinks решает эту проблему, перехватывая интенты, содержащие ссылку на HTTP-ресурс, и автоматически разворачивает ее в случае необходимости. Платить за это приходится некоторым замедлением при открытии ссылок, но это все равно быстрее, чем запуск браузера. В целом musthave-модуль для всех, кто часто сидит в твиттере или других соцсетях.
Xposed Call Blocker 
Достаточно стандартный блокиратор звонков, отличие которого от других реализаций заключается в том, что он работает на самом низком уровне ОС, там, где происходит передача информации от демона rild к звонилке. В итоге встроенная звонилка даже не узнает о произошедшем звонке. Другие подобные приложения действуют на пользовательском уровне и, по сути, просто кладут трубку сразу после звонка, предварительно отключив звук; из-за этого можно словить множество глюков вроде кратковременного включения экрана, кратковременного звука звонка и проскакивающих иконок пропущенного звонка. Часть функционала доступна только после покупки ключа: блокировка исходящих звонков, блокировка звонков с приватных и скрытых номеров.
LightningWall
Простой брандмауэр, позволяющий отключать передачу данных для отдельно взятых приложений в зависимости от типа сети. По сути, представляет собой аналог DroidWall с более правильной реализацией: не зависит от iptables, которого нет во многих стоковых прошивках, активируется еще до начала загрузки основных компонентов ОС, благодаря чему утечки исключаются (DroidWall запускается уже после полной загрузки ОС), правила активны всегда, а не назначаются заново при изменении сетевого подключения.
Другие модули
К сожалению, рассказать подробно обо всех интересных модулях в рамках одной статьи не представляется возможным, поэтому остальные интересности я приведу списком с кратким описанием каждого модуля.
Sense 5/6 Toolbox — набор твиков и хаков для стоковых прошивок от HTC.
HTC One Tweaker — твики и хаки для HTC One.
MotoGuide — сборник твиков и хаков для Moto X.
Chrome New Tab — заставляет Chrome всегда открывать новые ссылки в новой вкладке.
Phab7 — позволяет переключаться между телефонным и планшетным режимами.
Ok Google for 3rd party launchers — добавляет автоматическое распознавание голоса в сторонние лаунчеры.
Master Key multi-fix — закрывает знаменитый баг Master Key.
NetworkSpeedIndicator — добавляет в строку состояния индикатор скорости передачи данных.
CpuTemp in Statusbar — показывает темпера туру процессора в строке состояния.
Holo Themer — позволяет на лету переключаться между светлой и темной темой оформления приложений.
YouTube AdAway — блокирует рекламу в приложении YouTube.
Allow Fullscreen Youtube with HDMI — активирует по-настоящему полноэкранный режим при выводе картинки из плеера YoutTube по HDMI.
AppOpsXposed — открывает доступ к функции AppOps (см. выше).
Complete Action Plus — позволяет кастомизировать диалоги выбора файлов и приложений.
DitheredHoloBackground — делает задний фон приложений истинно черным, без градиента (полезно для AMOLED-дисплеев).
DoubleTapToSleep — отправляет смартфон в сон после двойного тапа по строке состояния.
Extended Xposed Translation Component — автоматически переводит на русский прошивку MIUI.
Hide Apps Xposed — позволяет скрыть приложения в меню стандартного лаунчера.
Instagram Downloader — позволяет скачивать фото из Instagram.
Vine Downloader — позволяет скачивать видео из Vine.
LG PIE Support — поддержка функции PIE для прошивок от LG.
Multiple Users for phone — активирует много пользовательский режим на смартфоне.
neXus navbarz — позволяет изменять внешний вид и поведение софтверных кнопок навигации.
ScreenOffAnimation — набор анимаций выключения экрана.
UnbelovedHosts — позволяет применять свои собственные версии файла /etc/hosts без изменения основного (для блокировки рекламы).
Xposed Full Screen Call Picture — выводит фото звонящего абонента на полный экран (без обрезания снизу).
Xposed GEL Settings — кастомизатор для Google Now Launcher.
ВЫВОДЫ
Xposed — прекрасный инструмент для того чтобы изменить андроид, аналогов которому практически нет (Cydia Substrate для Android я не рассматриваю). С помощью его модулей можно получить почти любую функциональность сторонних прошивок без необходимости прошивать смартфон. Даже если сам Xposed или один из его модулей по какимто причинам превратит смартфон в кирпич, его всегда можно вернуть к жизни, отключив Xposed с помощью прошивки специального ZIP-файла (на странице XDA, в конце) через консоль восстановления.
Источник