Содержание
- 1 Как сделать самостоятельно прошивку на Андроид: подробная инструкция
- 2 Сборка прошивки на Android своими руками
- 3 Как сделать прошивку на Андроид самому – инструкция по созданию и редактированию своими руками для телефона Android, andimgtool, android kitchen
- 4 Модификация стоковых прошивок для Android. Часть 1
- 5 Мод прошивка своими руками
Как сделать самостоятельно прошивку на Андроид: подробная инструкция
Надоела стандартная официальная прошивка и хочешь удивить друзей чем-то необычным на твоем смартфоне? Или, возможно, тебе, как пользователю, не совсем нравится результат использования кастомных версий? Узнай, как сделать прошивку на Андроид самому и настроить ее под себя.
Подготовка компьютера
Сначала желательно удостовериться в том, что система компьютера настроена должным образом. Оптимальные требования к ней такие:
- ОС Linux (в идеале должна быть UBUNTU);
- для Андроид 2.3 и выше нужна 64-разрядная система;
- минимальный объем свободного пространства – 10 Гб, а в идеале – 15 Гб (это нужно для хранения исходников и дальнейших изменений с ними).
Если эти требования выполнены, нужно заняться установкой пакетов (на примере Cyanogenmod 9):
- Проходим авторизацию в UBUNTU.
- Запускаем терминал.
- Устанавливаем язык программирования Java.
- В терминале устанавливаем пакеты.
- На компьютере создаем папки: mkdir -p ~/bin (прописать точно также) и mkdir -p ~/android/*** (вместо *** можно прописать любое название латиницей).
- Устанавливаем сервер-хранилище, куда будем загружать исходники.
- Перегружаем ПК.
Загрузка исходников
После того, как компьютер перезагрузится, можно загружать исходники:
- Сначала переходим в папку, которая была создана ранее для их хранения: cd ~/android/***/.
- Загружаем исходники.
После этого нужно подождать завершения загрузки, это займет несколько часов. Причем в случае, когда произошел обрыв сети или любая другая ошибка, можно повторно вбить команду repo sync -j16, после чего процесс восстановится с места обрыва.
Сборка
Рассмотрим ситуацию, в которой cyanogenmod-м поддерживается устройством на официальном уровне. В этом случае действия следующие:
- Хотя прошивка и представляет собой полный «нуль» в самом начале, некоторые библиотеки не выйдет прошить, т.к. разработчиками не были поставлены исходники. Потому для копирования проприетарных файлов (являющихся чьей-то собственностью) нужно подключить гаджет к компьютеру при помощи кабеля и в терминале прописать команду cd ~/android/system/device/марка/модель/ ./extract-files.sh.
- Теперь следует загрузить RomManager (данное программное обеспечение загружается собранным), для чего надо прописать ~/android/system/vendor/cm/get-prebuilts.
- После этого остается только сам процесс: . build/envsetup.sh && brunch модель.
В том случае, когда cyanogenmod-м не поддерживается на официальном уровне, первым действием нужно будет создать «дерево файлов», после чего выполнить вышеуказанные действия.
Выбор основы
Чтобы создать собственную прошивку из уже готовой, нужно сначала ее найти. Для этого необходимо найти в сети файл, в названии которого будет указано, что прошивка чистая (например, «Pure Android 3.0 ROM»). Она может быть любой, но в таком случае появится необходимость отменять изменения, совершенные автором.
После того, как файл скачан, его нужно распаковать.
Структура прошивки
Все те папки и файлы в них, которые пользователь увидит после распаковки, являются составляющими операционной системы. Их состав и порядок зависит от того, что хотел получить в итоге автор. При этом в любом случае среди всех составляющих 3 будет обязательно:
- meta-inf – вся информация о прошивке, в которую входят сертификаты, контрольные суммы и скрипты;
- boot.img – образ загрузки;
- папка system – ОС без ядра с предустановленными приложениями, файлами настроек и прочим.
Установка ПО
Добавление нужной утилиты Открытие архива с системным приложением
Чтобы изменить уже имеющийся набор программ, нужно зайти в /system/app. И теперь в ней можно делать следующее:
- просто удалить папку с ненужной программой;
- вставить нужный софт;
- установить системные приложения Linux, например, Midnight Commander, которые нужно будет сначала распаковать.
Визуализация
Но самая частая причина, по которой пользователю хочется создать собственную прошивку, это желание изменить внешний вид оболочки. Настройки графики хранятся в одном файле framework/framework-res.apk. Его нужно распаковать, после чего появится одноименная папка, в которой понадобятся 2 подпапки:
- res/drawable-* — элементы графики с разрешением .png;
- res/layout-* — элементы графики с разрешением .xml.
После того, как владелец устройства на базе Андроид изменил все, что ему было нужно, остается собрать файл графики обратно.
Открытие графического файла Закрытие графического файла
Для изменения анимации при загрузке устройства нужно сделать следующее:
- распаковать архив с файлами этой анимации;
- заменить имеющиеся изображения на нужные;
- запаковать обратно.
Дополнительные настройки
При создании собственной прошивки можно воспользоваться следующими командами для улучшения производительности системы:
- ro.media.enc.jpeg.quality=100 – при этом качество загружаемых изображений в формате .jpeg будет повышено;
- debug.sf.nobootanimation=1 – при загрузке устройства будет отключена анимация;
- ro.mot.buttonlight.timeout=0 – после включения экрана сразу будут подсвечиваться кнопки управления.
Эти и многие другие строки размещаются в system/build.prop.
Процесс сборки
После всех манипуляций манипуляции с будущей прошивкой, ее нужно превратить обратно в архив, для чего прописываем $ cd ~/rom; zip -r my-rom.zip *.
Распаковка архива с прошивкой Подписывание полученного архива
Следующим шагом будет указание названия архиву. Затем нужно переместить на флэшку, а само устройство отключить, что необходимо для входа в Recovery и заливки новой прошивки.
Но перед прошиванием следует обязательно сделать дамп (резервную копию) той прошивки, которая сейчас установлена на телефоне или планшете. Это нужно потому, что в случае ошибки при создании можно превратить устройство в кирпич или оно может работать нестабильно, а потому понадобиться вернуть его в предыдущее рабочее состояние.
Android Kitchen
Самым же простым способом является вход на сайт Android Kitchen. Здесь даже непрофессионал может сам создать прошивку на основе готового файла, при этом выбирая постепенно те или иные настройки иконок, громкости, шрифтов, экрана и многого другого.
После того, как выбор изменений был сделан, пользователю остается только выбрать версию прошивки, которая используется в данный момент (здесь важно не ошибиться), во вкладке «Summary» еще раз проверить список и нажать на кнопку «Submit Work to Kitchen». Теперь нужно дождаться своей очереди на создание архива с файлом прошивки, которую потом можно будет залить через Recovery.
Загрузка …
«Создание без Linux»
В этом ролике Вы увидите еще один способ создания кастомной ОС Андроид.
Источник: http://Androidster.ru/instructions/firmware/kak-sdelat-proshivku-na-android-samomu-9151/
Сборка прошивки на Android своими руками
Нередко случается, что кому-то из пользователей Android не по душе стандартная прошивка его смартфона либо планшета. Например, по причине лишнего софта, из-за которого стремительно сокращается внутренняя память, либо просто не нравится функционал некоторых программ и хочется заменить их другими. Начинаются усиленные поиски пользовательских прошивок, но и они не всегда дают желаемый результат. Что делать?
Любую прошивку можно доработать под определенного пользователя
Далеко не все знают, что прошивку можно допилить под свои личные потребности. Существуют несколько способов, как это можно сделать, каждый из них отличается уровнем сложности и необходимым набором инструментов. И, если вы не знаете, как собрать прошивку Android самостоятельно, эта статья для вас.
Необходимое программное обеспечение
Нам понадобится компьютер, устройство, файл прошивки и специальная программа под названием Android Kitchen (известная также как кухня). Файл прошивки можно найти на специализированных форумах, наиболее известные — англоязычный XDA Developers и русскоязычный 4PDA. В разделе вашей модели устройства можно найти ссылки на самые популярные и проверенные прошивки как официальные стоковые, так и неофициальные пользовательские.
Далее нужно установить кухню на свой компьютер. Лучше всего работать под Linux, но необходимые библиотеки можно поставить и в Windows. В этом случае можно выйти из ситуации установив Cygwin. Загрузите архив и следуйте пошаговой инструкции, помещённой в архиве.
Перед этим потребуется установить также Java Platform (JDK) с официального сайта (https://www.oracle.com/technetwork/java/javase/downloads/index.html для Windows) или же в Центре приложений Ubuntu найти и скачать OpenJDK Java 6 Runtime либо похожее (для Linux).
Второй вариант использования — установить Linux на виртуальную машину и управлять процессом через неё.
Модификация прошивки
Прошивки чаще всего распространяются в виде файла с расширением .img, реже — как ZIP-архив. В обоих случаях вам понадобится переместить файл с прошивкой в папку установленной кухни, чтобы она смогла импортировать её и начать с ней работу. Кухня должна быть установлена по пути c:/cygwin/home/user/ (при установке через Cygwin) или Файловая система/home/user/ (при работе через Linux).
- Запустите кухню через Cygwin или Linux-терминал с помощью команды cd kitchen, затем ./menu.
- Распакуйте архив в кухню, как уже писалось выше.
- После того как появится меню программы, перейдите в раздел 0. Advanced Options.
- После этого будет представлен список команд для модификации прошивки. Выберите именно ту, которая нужна вам. Можно добавить Busy Box, Root, Apps2SD, заменить стоковые приложения, различные анимации, освободить память устройства и многое другое.
- После окончания манипуляций запустите в главном команду 99. Build ROM from working folder (Построить прошивку с рабочей папки) и заберите ZIP-архив с OUTPUT_ZIP.
Прошивка устройства
Прошить устройство можно как через компьютер, так и без него. В первом случае нужно скачать программу для прошивки, обычно это Flash Tool или Odin, драйверы для вашей модели устройства и подготовить уже подправленный архив.
При прошивке через Recovery понадобится скопировать файл в корень карты памяти, загрузить устройство в режиме Recovery, отформатировать устройство и кэш, а затем установить прошивку из архива. После перезагрузки у вас будет изменённая лично вами прошивка.
Редактирование на устройстве
Самый простой способ из всех возможных. Не нужно никаких дополнительных приборов и манипуляций. Вам понадобится лишь устройство с рут-правами, приложение для создания резервных копий (лучше всего Nandroid backup) и файловый менеджер с функцией изменения системного раздела.
Изменение собственной прошивки
- Если на устройстве ещё не получен root, получите его. Как это сделать, можно прочесть на специализированных форумах в разделе, посвящённом именно вашему аппарату. Дело в том, что универсальные способы поддерживаются малым количеством устройств и большинство из них имеют индивидуальную процедуру.
- Установите Nandroid backup (https://play.google.
com/store/apps/details?id=com.h3r3t1c.onnandbup&hl=ru) и сделайте с его помощью резервную копию системы своего девайса. Сохраните её в надёжном месте, например, в облачном хранилище. Для чего создавать копию? Вдруг что-то пойдёт не так или вы нечаянно удалите что-то нужное — будет возможность вернуть всё как было.
- Установите файловый менеджер, работающий с системным разделом, чтобы удалить ненужный софт и добавить свои приложения. Золотым стандартом является Titanium Backup.
- Выберите приложения, которые вы хотите удалить, и удалите их через файловый менеджер.
- Установите приложения, которыми вы хотите заменить удалённые, и через Titanium Backup сделайте их системными.
- Перезагрузите устройство и наслаждайтесь своими успехами.
Изменение сторонней прошивки в ZIP-архиве
- Скачайте интересующий вас файл прошивки в формате .zip.
- Установите файловый менеджер, умеющий работать с архивами, например, ES Проводник или Total Commander, и распакуйте содержимое архива.
- Удалите лишние или добавьте недостающие приложения, после чего запакуйте архив обратно и переместите в корень флеш-карты.
- С помощью Nandroid backup (https://play.google.com/store/apps/details?id=com.h3r3t1c.
onnandbup&hl=ru) создайте резервную копию системы и скопируйте её на облачный диск.
- Прошейте устройство из режима Recovery.
Заключение
Как видите, сборка прошивки Android своими руками необязательно очень длительный и сложный процесс, требующий глубоких познаний. Понятно, что с нуля создать модификацию будет куда сложнее, но что-то подправить или заменить и удалить лишние программы под силу практически каждому. Надеемся, наша инструкция вам в этом помогла.
Собирали ли вы прошивку для Android самостоятельно? Что вы в ней меняли и каким образом это делали? Будет интересно, если вы поделитесь своими отзывами.
Жми «Нравится» и читай лучшие посты на
Источник: http://ProTabletPC.ru/advice/kak-sobrat-proshivku-android.html
Как сделать прошивку на Андроид самому – инструкция по созданию и редактированию своими руками для телефона Android, andimgtool, android kitchen
Если пользователь хорошо знает, как прошить телефон, и если ему надоела официальная прошивка, он всегда может создать собственную. Это сделать очень легко, зная алгоритм процесса, что и как делается.
Как сделать прошивку на Андроид самому
Для того, чтобы прошивка получилась качественной и телефон не превратился в кирпич важно произвести ряд мер для подготовки к созданию обновленного Андроида. Понадобится компьютер с установленной на нем операционной системой Linux, лучше UBUNTU. Устанавливать желательно 64х разрядную систему под новые версии Андроид.
Такая разрядность нужна для того, чтобы изменять прошивку версий Андроида выше 2.4.
На жестком диске должно быть до 20 гигабайт свободного пространства. Это делается для того, чтобы сохранять исходники.
Кроме самостоятельного изготовления из исходников, есть способ изменения уже готового файла.
Способы создания
Чтобы сделать прошивку Android из исходников рекомендуется проделать следующие шаги.
- Установить UBUNTU. Только на ней получится добротная прошивка. Скачать UBUNTU можно на официальном сайте.
- Затем подготовить рабочий стол и освободить достаточно места, как было написано выше. После переходим к самой сборке.
- Установить программу Java.
- Скачать исходники можно с форума 4pda.
Достоинство изготовления собственной прошивки заключается в том, что вы можете сами оптимизировать свой Андроид на столько, на сколько нужно. А также вы сможете избавить его от предустановленных программ, которые попросту засоряют его и не используются. Еще одним преимуществом является то, что вы сами можете сделать прошивку и обновить телефон до любой версии.
Конечно же отредактировать уже готовую сборку под себя гораздо проще. Для этого понадобится:
- Установить ОС UBUNTU.
- Скачать программы andimgtool и rkwintools. Они помогут вам расшифровать данные boot.img, recovery.img, system.img. а также и запаковать их.
- Найти чистую прошивку. Главное, чтобы в названии были слова ROM. Сайт для загрузки выбираем на свое усмотрение, например desktoplinux.ru, или любой другой.
Зачем устанавливать антивирус на Андроид
Сделать прошивку телефона из уже готового файла конечно гораздо легче и проще. В этом заключается преимущество редактирования уже готовой прошивки.
Собрать прошивку Android из исходников
Прежде чем приступить к созданию кастомной прошивки своими руками, рекомендуется установить виртуальную машину, а на нее ОС Linux.
А также необходимо инсталлировать java версии 3,3. Если же вы будете работать на операционке Ubuntu, то в ее репозитории необходимо отыскать OpenJDK Java 6 Runtime и скачать ее.
После установки Джавы необходимо загрузить специальную утилиту видоизменения Android, ее называют android kitchen.
Теперь необходимо отыскать прошивку, которую будете модифицировать. xda-developers.com – на этом сайте отыщете необходимую вам прошивку. Главное, чтобы они имели в имени слово ROM и были чистыми. Затем скачиваете его и разархивируете, используя Winrar.
Когда вы откроете папку с разархивированными файлами, вы отыщете элементы, перечисленные ниже:
- Каталог meta.inf. В нем можно изменить root права, вывести progress bar. В ней также находится скрипт обновления, с помощью которого вы можете изготавливать новые данные в памяти NAND.
- В boot.img можно найти linux и образ initrd. Их можно не трограть. Все видоизменения для Андроид пользователь сможет сделать, используя настройки системы файлов /prof или же используя Clockwordmod.
- И наконец папка для изготовления новых картинок, фонов, приложений, а именно /system. Здесь пользователь найдет ядро Android, которое состоит из:
- app – это приложения, которые уже установлены.
- bin – здесь находятся элементы, которые будут использоваться другими более высокоуровневыми в процессе работы системы.
- fonts — шрифты.
- framework — наборы классов Java, которые используются на Андроиде. Здесь находится framework-res.apk. Этот файл полностью описывает интерфейс системы.
- lib — хранилища, которые используются низкоуровневыми компонентами системы.
- media – рингтоны, звуки.
- tts — файлы для синтезатора речи.
- vendor – документы от производителя телефона.
- bin – хранит полезные программы.
- build.prop – файл, в котором есть данные сборки и настроек низкого уровня.
Смартфоны, которые будут представлены вначале 2016 года
Запустите андроид kitchen. Запуск сделайте через Линукс или же через программу Cygwin. Если запускаете в Линуксе, то введите команду cd kitchen, потом ./menu.
Теперь распаковываете программу. Затем переходите в раздел 0 или advanced options. Отыскав команды для улучшения версии Андроида, нажмите на ту, которая необходима. Здесь вы добавляете собственные анимации, приложения, освобождаете память. После произведенных действий, наберите команду 99. Теперь нажмите buildROMfronworkingfolder. Осталось только забрать архив с output_ZIP.
Редактирование готовой версии
Изучив изготовление прошивки из исходных файлов, сейчас будет рассмотрено, как видоизменить готовый файл. Для его редактирования файл надо скачать, ищем прошивку с именем: Pure Android 3.0 ROM. Это имя свидетельствует о том, что она является чистой.
После скачивания файла, разархивируйте его. Папки и файлы в нем являются составляющими прошивки. Они расположены обычно так:
- Meta—inf. Здесь лежат все данные о будущей системе. Сертификаты, контрольные суммы и скрипты тоже находятся здесь.
- Boot.img. Это образ для того, чтобы вы могли загрузить прошивку и установить.
- Папка system. Это Андроид без ядра. Здесь лежат все настройки системы и некоторые из установленных утилит.
Затем устанавливается программное обеспечение. Вы должны зайти в папку /system/app/ и изменить набор утилит.
То есть вы можете уничтожить папку с той утилитой, которая вам не нужна, или, наоборот, поставить необходимый софт. Вы можете установить утилиты, которые понадобятся будущей системе Андроид. Для этого они должны быть уже распакованы.
Достаточно просто перетянуть в эту директорию все, что нужно и эти приложения автоматически предустановятся.
Для видоизменения графики рекомендуется обратиться к папке framework/framework-res.apk. Пользователю следует разархивировать элемент и вставить туда две папки: res/drawable-*, куда он сможет скидывать свои картинки и фон с разрешением .png. И res/layout-* — сюда будут вложены файлы с разрешением .xml. После произведенных манипуляций вы должны собрать все снова в один файл.
Видоизменить анимацию или поставить новую можно разархивировав архив с соответствующими файлами. Затем пользователь изменяет файлы и запаковывает их обратно.
Если пользователь хочет улучшить производительность собственного смартфона, то он должен ввести такие команды: ro.mot.buttonlight.timeout=0 – для подсвечивания кнопок после включения телефона. debug.sf.nobootanimation=1 – отключение анимации, когда телефон загружается. Многие из них лежат в папке system/build.prop.
Когда завершены все видоизменения, надо будет архивировать их командой $ cd ~/rom; zip -r my-rom.zip *.
Редактирование без использования компьютера
Чтобы редактировать прошивку Андроид не используя компьютер, владелец телефона должен скачать ее в архиве. Запустить Total Commander, эта программа умеет работать с архивированными пакетами. Разархивировать пакет.
Что сделать дальше, описано ниже (необходимы рут-права):
- Скачайте программу Nandroid backup с сайта и сделайте резервную копию.
- Переходим в папку /system/app, вы можете удалить утилиты или добавить необходимые, которых не было.
- Перезагружаем устройство. На этом редактирование закончится. Все должно заработать
Есть еще один вариант – если пошивка в формате zip.
В этом случае процедура идентична. Но перед и после процесса необходимо сначала распаковать, а затем запаковать без сжатия файл прошивки. С помощью Nandroid backup делаем бэкап, и шьем устройство через любое удобное приложение.
Источник: http://composs.ru/kak-sdelat-proshivku-na-android-samomu/
Модификация стоковых прошивок для Android. Часть 1
Здравствуй Хабр! Несколько лет назад, когда я впервые познакомился с Android, я услышал от своего коллеги по работе, что Android предусматривает возможность установки модифицированных или самодельных прошивок. Признаться, тогда я был далек от этого. И даже пол года назад меня едва интересовали подобные вещи. Глубоко в душе, я был уверен: то, что делает производитель, уже предназначено для нормального использования.
Каково же было мое разочарование, когда я приобрел телефон из поднебесной, где заводскими настройками было запрещено использование Google, Skype, и других приложений. В принципе, на некоторые вещи можно было закрыть глаза, но когда мой телефон не подразумевал использование учетной записи 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.
public static boolean isChina() { if ((HtcBuildFlag.Htc_PROJECT_flag == 216) || (HtcBuildFlag.
Htc_PROJECT_flag == 218) || (HtcBuildFlag.Htc_PROJECT_flag == 23)); while (((HtcBuildFlag.Htc_PROJECT_flag == 1) && (2 == HtcBuildFlag.Htc_LANGUAGE_flag)) || (HtcBuildFlag.Htc_PROJECT_flag == 27)) return true; return false; }
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 и смотрим код:
.method public static isChina()Z .registers 3 .prologue const/4 v0, 0x1 .line 276 sget-short v1, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_PROJECT_flag:S const/16 v2, 0xd8 if-eq v1, v2, :cond_13 sget-short v1, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_PROJECT_flag:S const/16 v2, 0xda if-eq v1, v2, :cond_13 sget-short v1, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_PROJECT_flag:S const/16 v2, 0x17 if-ne v1, v2, :cond_14 .line 297 :cond_13 :goto_13 return v0 .line 283 :cond_14 sget-short v1, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_PROJECT_flag:S if-ne v1, v0, :cond_1d .line 285 const/4 v1, 0x2 sget-short v2, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_LANGUAGE_flag:S if-eq v1, v2, :cond_13 .line 291 :cond_1d sget-short v1, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_PROJECT_flag:S const/16 v2, 0x1b if-eq v1, v2, :cond_13 .line 297 const/4 v0, 0x0 goto :goto_13.end method
9. Страшно, не правда ли? Ничего же не понятно. Но, это дело поправимое. Создав несколько своих патчей и набив тем самым руку, вы легко сможете модифицировать код без сторонних средств. В нашем случае, в этом коде
.prologue const/4 v0, 0x1 происходит присваивание переменной v0 значение 1, то есть TRUE. Далее идут всякие проверки, и если телефон не китайский, то значение переменной изменяется:
.line 297 const/4 v0, 0x0 goto :goto_13
10. Самый простой способ спасти отца русской демократии, это изменить код на следующий:
.prologue const/4 v0, 0x0, то есть поменять значение переменной с 1 на 0. То есть что бы ни было, всегда бы возвращалось значение FALSE и в JD-GUI код выглядел бы как public static boolean isChina() { if ((HtcBuildFlag.Htc_PROJECT_flag == 216) || (HtcBuildFlag.Htc_PROJECT_flag == 218) || (HtcBuildFlag.Htc_PROJECT_flag == 23)); while (((HtcBuildFlag.Htc_PROJECT_flag == 1) && (2 == HtcBuildFlag.Htc_LANGUAGE_flag)) || (HtcBuildFlag.Htc_PROJECT_flag == 27)) return false; return false; }
11. Да, метод ,будет работать. Но мы же не ищем легких путей — это раз. Во-вторых не совсем красиво. Хочется кода что-то вроде
public static boolean isChina() { return false; }
12. А как нам получить Dalvik код данного исходного кода? Для новичков мы сделаем небольшой трюк.
Создание Dalvik кода
1. Открываем Android SDK.
2. Создаем новый проект, и в наш единственный тестовый класс пишем следующий код
package ru.habrahabr.test; public class test{ public static boolean isChina() { return false; }}
3. Компилируем наш проект и затем берем собранное приложение из рабочей области.
4.
Кладем собранное приложение в папку, где мы с вами потрошили JAR файл.
5. Даем команду java -Xmx512m -jar baksmali.jar -a -d -o test -x test .apk
6. Мы дизассемблировали только что собранное приложение в Dalvik код.
7. Открываем наш файлик test.smali и видим там код
.method public static isChina()Z .registers 1 .prologue .
line 7 const/4 v0, 0x0 return v0.end method
8. Все, код для патчинга готов.
Накатывание патча
1. Dalvik код замусорен маркерами, указывающими строку кода в оригинальном исходном файле. Это нужно при выводе ошибок, если таковые имеются в вашей программе. Без указаний строк код также прекрасно работает.
2.
Удаляем строки с нумерацией строк, копируем и заменяем метод (подпрограмму) в нашем \com\htc\util\contacts\BuildUtils$Customization.java файле.
.method public static isChina()Z .registers 1 .prologue const/4 v0, 0x0 return v0.end method
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 доступ:
adb push HTCExtension.jar /sdcard/HTCExtension.jaradb shellsumount -o remount -rw /systemdd if=/system/framework/HTCExtension.jar of=/system/framework/HTCExtension.jar.backdd if=/sdcard/HTCExtension.jar of=/system/framework/HTCExtension.jarchmod 644 /system/framework/HTCExtension.jarrm /data/dalvik-cache/system@framework@HTCExtension.jar@classes.dexreboot 1-ая команда закидывает патченный файл на флешку 2-ая команда открывает shell 3-ая команда дает root доступ 4-ая команда монтирует систему в режим чтения/записи 5-ая команда делает резервную копию файла 6-ая команда перезаписывает существующий файл новым патченным. 7-ая команда настраивает разрешения 8-ая команда удаляет кэш 9-ая команда делает перезагрузку устройства.
2. Спасибо что дочитали до этого пункта, осталось немного.
3. После перезагрузки ваш новый патченный код вступит в силу.
4. Если код не работает или выскакивает ошибка, то путем не хитрых комбинаций можно вернуть назад резервную копию.
adb shellsumount -o remount -rw /systemdd if=/system/framework/HTCExtension.jar.back of=/system/framework/HTCExtension.jarrm /data/dalvik-cache/system@framework@HTCExtension.jar@classes.dexreboot
Эпилог
Да, кому-то показалось данная статья слишком специфичной, кому-то мало-понятной, а кому-то бесполезной. Я специально обошелся без углубленной детализации и иллюстраций как это все выглядит в живую и на практике. Во-первых, данный труд будет неблагодарный и только породить еще больше вопросов.
Во-вторых, не хочу видеть армию пользователей на форумах, которые жалуются, что убили свой телефон. К следующей статье я расскажу как делать Твики. Будет пример использования автоматической записи телефонных звонков родными средствами телефона. Спасибо за ваше внимание.
P.S.
Если что-то не понятно или смущает, задавайте вопросы — всегда буду рад ответить и пояснить.
- Android
- SDK
- Разработка под Android
- программирование на android
Источник: https://habr.com/post/181826/
Мод прошивка своими руками
Практически у каждого пользователя android смартфона появлялось желание создать или отредактировать прошивку под свои нужды и желания. В данной статье мы и рассмотрим принцип редактирования прошивки для CWM (в zip формате).
Подготовка:
В первую очередь необходимо определиться какую прошивку будем брать за основу. Лучше использовать офф. прошивку в зипе. Почти для каждого распространённого девайса существует чистая прошивка + root.Когда прошивка выбрана её необходимо скачать в любое удобное вам место на ПК (распаковывать не стоит).
Также нам потребуется архиватор, советую использовать 7zip и лучший в своём роде текстовый редактор Notepad++.
Структура прошивки:
Открывая архив с прошивкой вы видите следующее:
META-INF — в папке хранятся скрипты установки прошивки.
system — папка со всеми файлами прошивки (приложения, твики, скрипты и т.д.).
boot.img — ядро системы.
Практически все манипуляции проводятся в папке system, её структура:
app — системные приложения.
bin — ресурсы самой системы.
etc — Скрипты, твики, конфиги, профили и настройки системы.
fonts — Системные шрифты.
framework — здесь хранятся главные файлы системы (графика, настройки текста анимации и т.д).
lib — библиотеки системы.
media — файлы мультимедиа (мелодии уведомлений, анимация загрузки, обои и т.д).
usr — настройки не изменяемые в дальнейшем системой (работают в режиме «только чтение»).
xbin — опять же системные конфиги и прочие твики.
build.prop — инфа о системе, настройки локали и производительности системы.
Приложения:
Перед тем как добавлять/удалять софт в систему, необходимо проверить деодексирована ли ваша прошивка (то есть проверить наличие файлов .odex в папке app. Если файлы есть, то необходимо от них избавиться вот по этой инструкции .
Добавляем софт в прошивку:
Прежде всего необходимо установить себе в смарт те программы которые вы хотите добавить в сборку.
После установки достаём их из системы при помощи Root Exporer и его аналогов, находятся они по пути data/app, так же нам понадобятся их либы (если они конечно есть) они находятся по пути data/data. Находятся они в одноимённой приложению папке и имеют расширение .so . Затем изъятые .
apk файлы кладем в архив по пути system/app и файлы с расширением .so (lib'ы) по пути system/lib.
Удаляем софт из прошивки:
Тут всё просто, заходим в папку app — определяемся что нам не нужно и удаляем весь ненужный софт (систему лучше не трогать).
Язык и версия прошивки:
Копируем файл build.prop на рабочий стол. Открываем его блокнотом и находим строчки:
ro.product.locale.language=en
ro.product.locale.region=US
для русского языка необходимо сделать так:
ro.product.locale.language=ru
ro.product.locale.region=RU
название своего мода вписываем в строку
ro.modversion=
в том же build.prop
Графика:
Вся графическая часть прошивки хранится в двух файлах framework-res.apk путь к файлу systemframework и SystemUI.apk по пути systemapp. А графическая часть приложения настройки хранится естественно в приложении Settings.apk.
Скрипты и твики (ускорение и оптимизация системы):
Большая часть настроек проводится в файле build.prop, по этому поводу можно прочитать здесь. Так же если ваше ядро поддерживает init.d есть ряд скриптов для оптимизации системы, один из них описан в этой статье (оптимизация оперативной памяти) и в данной статье Скрипты-твики для init.d
Замена шрифтов системы:
Как выше излагалось все шрифты содержаться в папке fonts, основные шрифты это: DroidSans.ttf и DroidSans-Bold.ttf их можно заменить любыми шрифтами переименовав их аналогично вышеуказанным и переместить с заменой в архив с прошивкой в папку fonts.
Ядро:
Теоретически достаточно заменить boot.img своим, но в некоторых случаях Ядра сопровождаются дополнительными скриптами. По этому советую ничего не делать если есть какие либо сомнения.
Источник: http://upgrade-android.ru/stati/stati/445-mod-proshivka-svoimi-rukami.html