Если пользователь хорошо знает, как прошить телефон, и если ему надоела официальная прошивка, он всегда может создать собственную. Это сделать очень легко, зная алгоритм процесса, что и как делается.
Для того, чтобы прошивка получилась качественной и телефон не превратился в кирпич важно произвести ряд мер для подготовки к созданию обновленного Андроида. Понадобится компьютер с установленной на нем операционной системой Linux , лучше UBUNTU. Устанавливать желательно 64х разрядную систему под новые версии Андроид.
Такая разрядность нужна для того, чтобы изменять прошивку версий Андроида выше 2.4.
На жестком диске должно быть до 20 гигабайт свободного пространства. Это делается для того, чтобы сохранять исходники.
Кроме самостоятельного изготовления из исходников, есть способ изменения уже готового файла.
Чтобы сделать прошивку Android из исходников рекомендуется проделать следующие шаги.
Достоинство изготовления собственной прошивки заключается в том, что вы можете сами оптимизировать свой Андроид на столько, на сколько нужно. А также вы сможете избавить его от предустановленных программ, которые попросту засоряют его и не используются. Еще одним преимуществом является то, что вы сами можете сделать прошивку и обновить телефон до любой версии.
Конечно же отредактировать уже готовую сборку под себя гораздо проще. Для этого понадобится:
Сделать прошивку телефона из уже готового файла конечно гораздо легче и проще. В этом заключается преимущество редактирования уже готовой прошивки.
Прежде чем приступить к созданию кастомной прошивки своими руками, рекомендуется установить виртуальную машину, а на нее ОС Linux.
Теперь необходимо отыскать прошивку, которую будете модифицировать. xda-developers.com – на этом сайте отыщете необходимую вам прошивку. Главное, чтобы они имели в имени слово ROM и были чистыми. Затем скачиваете его и разархивируете, используя Winrar.
Когда вы откроете папку с разархивированными файлами, вы отыщете элементы, перечисленные ниже:
Запустите андроид kitchen. Запуск сделайте через Линукс или же через программу Cygwin. Если запускаете в Линуксе, то введите команду cd kitchen, потом./menu.
Теперь распаковываете программу
. Затем переходите в раздел 0 или advanced options. Отыскав команды для улучшения версии Андроида, нажмите на ту, которая необходима. Здесь вы добавляете собственные анимации, приложения, освобождаете память. После произведенных действий, наберите команду 99. Теперь нажмите build
ROM
fron
working
folder
. Осталось только забрать архив с output_ZIP.
Изучив изготовление прошивки из исходных файлов, сейчас будет рассмотрено, как видоизменить готовый файл. Для его редактирования файл надо скачать, ищем прошивку с именем: Pure Android 3.0 ROM. Это имя свидетельствует о том, что она является чистой.
После скачивания файла, разархивируйте его. Папки и файлы в нем являются составляющими прошивки. Они расположены обычно так:
Затем устанавливается программное обеспечение . Вы должны зайти в папку / 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, эта программа умеет работать с архивированными пакетами. Разархивировать пакет.
Есть еще один вариант – если пошивка в формате zip.
В этом случае процедура идентична. Но перед и после процесса необходимо сначала распаковать, а затем запаковать без сжатия файл прошивки. С помощью Nandroid backup делаем бэкап, и шьем устройство через любое удобное приложение.
Хотите попробовать себя в создание, редактирование прошивок на Android, тогда программа Samsung Root Firmware Replacer поможет в создание прошивок!
С помощью данной программы Вы сможете:
1. Перейдите в папку с программой Samsung Root Firmware Replacer, правый клик открыть в терминале
2. В терминале введите команду
3. Перед Вами откроется интерфейс программы
4. Если запустили программу первый раз то выполните - Конфигурация настроек
Пункт Распаковать прошивку *.tar.md5 - распаковывает прошивку, для этого переместите файл в папку unpack_tar_md5 , после чего все файлы извлекутся, а файл factoryfs или system переместяться в input_img
пункт Создание *.img с вашего Android (нужен Android) - позволяет создать прошивку с вашего текущего состояния Android. Для работы данного пункта необходимо иметь Android подключенный к ПК с включенной отладкой USB.
Данный пункт имеет подменю
Пункт Создание *.img с оригинальной прошивки позволяет изменять готовые прошивки, для этого перенести любой IMG файл в папку input_img.
Данный пункт также имеет свое подменю
В данном примере идет создание прошивки с текущего состояния Android
1. Подключить Android к ПК
2. Запустить программу
3. Выбрать пункт Создание *.img с вашего Android (нужен Android)
4. Выбрать Снять образ c Android и распаковать img
5. Выбор раздела с которого будет сниматься образ
6. Подождите 6-7 минут пока снимется образ и переместится на ПК.
Важно! На смартфоне или планшете, а также ПК, должно быть достаточно памяти чтобы снять образ. Размер образа может занимать от 2МБ до 2ГБ
7. После того как сняли образ, можно его модифировать, если это нужно (встроить Root), можете его обратно упаковать, для этого
8. Выбрать пункт Упаковка проекта в img
9. Укажите размер и название прошивки.
11. Также не забудьте скопировать ядро с вашего Android, для этого воспользуйтесь пунктом - Снять образ c Android - boot.img или zImage
12. После всех манипуляций необходимо собрать прошивку в TAR.MD5
13 В главном меню выбрать пункт Запаковать прошивку *.tar.md5
14 Прошивка в программе Samsung Root Firmware Replacer приготовлена, можете
Здравствуй Хабр!
Несколько лет назад, когда я впервые познакомился с 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 кода.
После того, как прошивка из оптимизированного вида (ODEX - оптимизированный dalvik исполняемый код, если мне не изменяет память) стала DEODEX (то бишь НЕ оптимизированной), все исполняемые файлы готовы к модификации.
В итоге у меня получилось столько папок, сколько было JAR файлов в /system/framework, и каждая папка имела структуру исходных кодов Java.
Путем несложных манипуляций, я быстро отыскал то место, которое генерировало записи в logcat.
Не будем рассматривать всю логику запрета, так как для каждого случая это отдельная история. Мне пришлось потратить пару часов, прежде чем я нашел где производятся проверки, построить в голове блок схему алгоритма и понять куда надо лезть, чтобы алгоритм чуть чуть «попортить».
Оказалось все просто. Есть подпрограмма, которая на основе заранее установленных констант, при обращении отвечала, относится ли телефон к Китаю или же нет.
Код находился в файле 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 код данного исходного кода? Для новичков мы сделаем небольшой трюк.
1 . Заменить текущий рабочий файл можно следующими командами, если у вас уже стоит DEODEX прошивка и имеется root доступ:
Adb push HTCExtension.jar /sdcard/HTCExtension.jar adb shell su mount -o remount -rw /system dd if=/system/framework/HTCExtension.jar of=/system/framework/HTCExtension.jar.back dd if=/sdcard/HTCExtension.jar of=/system/framework/HTCExtension.jar chmod 644 /system/framework/HTCExtension.jar rm /data/dalvik-cache/system@[email protected]@classes.dex reboot
1-ая команда закидывает патченный файл на флешку
2-ая команда открывает shell
3-ая команда дает root доступ
4-ая команда монтирует систему в режим чтения/записи
5-ая команда делает резервную копию файла
6-ая команда перезаписывает существующий файл новым патченным.
7-ая команда настраивает разрешения
8-ая команда удаляет кэш
9-ая команда делает перезагрузку устройства.
2
. Спасибо что дочитали до этого пункта, осталось немного.
3
. После перезагрузки ваш новый патченный код вступит в силу.
4
. Если код не работает или выскакивает ошибка, то путем не хитрых комбинаций можно вернуть назад резервную копию.
adb shell
su
mount -o remount -rw /system
dd if=/system/framework/HTCExtension.jar.back of=/system/framework/HTCExtension.jar
rm /data/dalvik-cache/system@[email protected]@classes.dex
reboot
К следующей статье я расскажу как делать Твики. Будет пример использования автоматической записи телефонных звонков родными средствами телефона. Спасибо за ваше внимание.
P.S. Если что-то не понятно или смущает, задавайте вопросы - всегда буду рад ответить и пояснить.
Надоела стандартная официальная прошивка и хочешь удивить друзей чем-то необычным на твоем смартфоне? Или, возможно, тебе, как пользователю, не совсем нравится результат использования кастомных версий? Узнай, как сделать прошивку на Андроид самому и настроить ее под себя.
Сначала желательно удостовериться в том, что система компьютера настроена должным образом. Оптимальные требования к ней такие:
Если эти требования выполнены, нужно заняться установкой пакетов (на примере Cyanogenmod 9):
После этого нужно подождать завершения загрузки, это займет несколько часов. Причем в случае, когда произошел обрыв сети или любая другая ошибка, можно повторно вбить команду repo sync -j16, после чего процесс восстановится с места обрыва.
Рассмотрим ситуацию, в которой cyanogenmod-м поддерживается устройством на официальном уровне. В этом случае действия следующие:
Чтобы создать собственную прошивку из уже готовой, нужно сначала ее найти. Для этого необходимо найти в сети файл, в названии которого будет указано, что прошивка чистая (например, «Pure Android 3.0 ROM»). Она может быть любой, но в таком случае появится необходимость отменять изменения, совершенные автором.
После того, как файл скачан, его нужно распаковать.
Все те папки и файлы в них, которые пользователь увидит после распаковки, являются составляющими операционной системы. Их состав и порядок зависит от того, что хотел получить в итоге автор. При этом в любом случае среди всех составляющих 3 будет обязательно:
Чтобы изменить уже имеющийся набор программ, нужно зайти в /system/app. И теперь в ней можно делать следующее:
Но самая частая причина, по которой пользователю хочется создать собственную прошивку, это желание изменить внешний вид оболочки. Настройки графики хранятся в одном файле framework/framework-res.apk. Его нужно распаковать, после чего появится одноименная папка, в которой понадобятся 2 подпапки:
После того, как владелец устройства на базе Андроид изменил все, что ему было нужно, остается собрать файл графики обратно.
Для изменения анимации при загрузке устройства нужно сделать следующее:
При создании собственной прошивки можно воспользоваться следующими командами для улучшения производительности системы:
Эти и многие другие строки размещаются в system/build.prop.
После всех манипуляций манипуляции с будущей прошивкой, ее нужно превратить обратно в архив, для чего прописываем $ cd ~/rom; zip -r my-rom.zip *.
Следующим шагом будет указание названия архиву. Затем нужно переместить на флэшку, а само устройство отключить, что необходимо для входа в Recovery и заливки новой прошивки.
Но перед прошиванием следует обязательно сделать дамп (резервную копию) той прошивки, которая сейчас установлена на телефоне или планшете. Это нужно потому, что в случае ошибки при создании можно превратить устройство в кирпич или оно может работать нестабильно, а потому понадобиться вернуть его в предыдущее рабочее состояние.
Самым же простым способом является вход на сайт Android Kitchen. Здесь даже непрофессионал может сам создать прошивку на основе готового файла, при этом выбирая постепенно те или иные настройки иконок, громкости, шрифтов, экрана и многого другого.
После того, как выбор изменений был сделан, пользователю остается только выбрать версию прошивки, которая используется в данный момент (здесь важно не ошибиться), во вкладке «Summary» еще раз проверить список и нажать на кнопку «Submit Work to Kitchen». Теперь нужно дождаться своей очереди на создание архива с файлом прошивки, которую потом можно будет залить через Recovery.
Создать кастомную прошивку на андроид непросто, для этого нужны специальные программные средства и определенные навыки, а также алгоритм действий, который мы опишем в этой статье.
Разберем частный случай и начнем по порядку. Для создания кастомной прошивки андроид потребуются:
Система Ubuntu создана на базе ядра Linux и основывается на Debian, разработана компанией Canonical. Эту систему вовсе не обязательно устанавливать вместо действующей, запускать ее через эмулятор, и так далее.
Чтобы комфортно использовать все ее преимущества, достаточно воспользоваться приложением Wubi, способным установить Ubuntu под Windows. Wubi — сокраoение от Windows Ubuntu Installer.
Скачав установщик, и установив через него новую операционку, при загрузке компьютера можно зайти в ту или иную систему на выбор, и осуществлять управление ею через панель управления Виндовс.
Java – разработанный в 1995 году язык программирования, его название, по всей видимости, взято из кинофильмов (смешной народец Джава из Звездных Войн).
На этой технологии базируется большая часть современного программного обеспечения самых разных видов. Некоторые сайты работают только при наличии Java на борту ПК.
Чтобы установить ее нужно:
Программа «кухни» — это основное средство для работы с прошивками андроид. Их существует несколько видов, мы рассмотрим работу с kitchen от Dsixda.
Эти действия приведут в начальное меню программы. Вернувшись в папку Kitchen, можно будет найти папку «WORKING_x_y», где x и y – дата и время ее создания.
В ней будут содержаться разобранные файлы прошивки. В папке System можно найти все системные файлы. части этих файлов приведет к изменению прошивки.
Изменив набор базовых приложений, функций, настроек, и внеся все желаемые поправки в файлы прошивки, необходимо ее собрать.
Для этого нужно вернуться в Терминал, ввести команду 99, снова ответить клавишей Enter на все возникающие вопросы. После этого программа выбросит пользователя в начальное меню, а в папке OUTPUT_ZIP будет лежать файл новой прошивки, которую затем можно устанавливать на мобильное устройство.
Вот еще несколько программ, предназначенных для этого: