Главная » Компьютеры
На чтение 7 мин
Частые зависания системы и другие ошибки являются результатом некорректной работы программного обеспечения. Проблемные программы можно легко удалить. Но что делать с установленным софтом, который не удаляется из системы? В таких случаях устройство необходимо перепрошить на более стабильную версию или самостоятельно внести правки в ОС. В данном посте вы узнаете, как открыть прошивку Android для последующего ее изменения.
Структура ZIP-файла с прошивкой
После загрузки распакуем архив с помощью любого архиватора. Внутри будет следующий набор файлов и папок:
- META-INF — папка с метаинформацией о прошивке (сертификат автора, манифест со списком файлов, их контрольными суммами), скриптом обновления (updater-script) и инсталлятором (update-binary), который выполняет команды скрипта по монтированию разделов, копированию файлов и другим действиям с NAND-памятью;
- boot.img — образ с ядром и RAM-диском (он прошивается в раздел boot);
- system.new.dat — это, грубо говоря, и есть сама прошивка, а точнее образ раздела system, содержащий операционную систему Android за вычетом ядра;
- system.transfer.list — содержит список команд, которые необходимо выполнить, чтобы поблочно скопировать содержимое system.new.dat в раздел system при установке прошивки;
- system.patch.dat — используется для OTA-обновлений, то есть выборочного внесения изменений в прошивку; если прошивка «полная», он имеет нулевой размер.
Содержимое ZIP-файла прошивки LineageOS для Nexus 5
Рекомендуем почитать:
Xakep #274. Твикинг Windows 11
- Содержание выпуска
- Подписка на «Хакер»-70%
Ядро
Также нам понадобиться boot-раздел, который по сути является linux ядром (для выбранной прошивки это 2.6.29 armv6l) с ramdisk-ом и имеет следующий формат:
** +——————+ ** | boot header | 1 page ** +——————+ ** | kernel | n pages ** +——————+ ** | ramdisk | m pages ** +——————+ ** | second stage | o pages ** +——————+ ** ** n = (kernel_size + page_size — 1) / page_size ** m = (ramdisk_size + page_size — 1) / page_size ** o = (second_size + page_size — 1) / page_size Если мы захотим заменить ядро, либо модифицировать скрипты инициализации, нам необходимо их извлечь из boot-образа. Для этого нам понадобиться замечательный perl-скрипт split_bootimg.pl за авторством William Enck.
- $ split_bootimg.pl ../
rom
/
boot.img - $ ls
- boot.img-kernel boot.img-ramdisk.gz data system
С самим ядром мы ничего не можем сделать, кроме как заменить его другим, а рамдиск можно распаковать для последующего изменения и настройки:
- $ mkdir
ramdisk
&&cd
ramdisk
&&gzip
-dc ..
/
boot.img-ramdisk.gz
|cpio
-i - $ ls
- data default.prop dev init init.goldfish.rc init.hero.rc init.rc logo.rle proc sbin sys system
В данной статье мы не хотим ничего делать ни с ядром ни с ramdisk-ом, а потому запакуем все обратно (либо вернемся на шаг назад и вообще не будем трогать boot)
- find
.
|cpio
—quiet -o -H newc
|gzip>
..
/
new-ramdisk.gz - $ cd
..
&&
mkbootimg —kernel boot.img-kernel —ramdisk new-ramdisk.gz —cmdline «no_console_suspend=1 console=NULL» -o newboot —base 0x19200000
Для других телефонов настроки базового смещения могут отличаться. Коммандлайн мы получаем из split_bootimg при распаковке.
Распаковываем system.new.dat
Файлы system.new.dat и system.transfer.list представляют для нас наибольший интерес. Точнее, не они, а содержащаяся в них система. Но добраться до нее не так просто.
Скрипт
Самые ленивые могут разобрать прошивку с помощью скрипта System_Extractor-Linux.
- Распаковываем архив с прошивкой в любую папку.
- Качаем скрипт по ссылке и разархивируем в любую папку.
- Запускаем файл ext (если будет ругаться на отсутствие Java, просто пропусти, нажав y; Java нужна только для запаковки).
- Теперь выбираем распаковку, нажав кнопку 1, а затем Enter.
- Новая папка с именем extract_* появится рядом с файлом ext и папкой tools. Копируем в нее файлы system.new.dat и system.transfer.list.
- После копирования файлов нажимаем Enter и ждем. Через некоторое время нужно будет опять нажать Enter, ввести пароль администратора и еще раз тапнуть Enter.
- Готово. Содержимое system в папке extract_*/output.
Скрипт для распаковки system.new.dat в Linux
Ручной способ
Распаковываем архив с прошивкой в любую папку (например, в rom):
$ mkdir ~/rom $ unzip путь_до_архива -d ~/rom/
Скачиваем нужные нам инструменты в эту папку:
$ cd ~/rom $ wget https://github.com/xpirt/sdat2img/raw/master/sdat2img.py
Запускаем скрипт:
$ chmod +x sdat2img.py $ ./sdat2img.py system.transfer.list system.new.dat system.img
Он преобразует файл system.new.dat в raw-образ с именем system.img. Монтируем образ к подпапке mnt:
$ mkdir mnt $ sudo mount -t ext4 -o loop system.img ~/rom/mnt
Содержимое образа system
Структура каталогов Android
После распаковки system появится следующая каталоговая структура:
- app — предустановленные приложения со стандартными привилегиями;
- priv-app — предустановленные приложения с повышенными привилегиями, в том числе некоторые компоненты системы;
- bin — бинарные файлы формата ELF, аналог каталогов /bin и /usr/bin в Linux. Содержит различные системные компоненты, используемые более высокоуровневыми компонентами системы;
- etc — файлы настроек. Полный аналог /etc в Linux, используемый, однако, только теми самыми системными компонентами. Приложения Android хранят индивидуальные настройки в каталогах /data/data/;
- fonts — шрифты. По умолчанию содержит только фирменные шрифты Roboto;
- framework — библиотеки Java-классов, используемых системой и приложениями. Тут же лежит файл framework-res.apk, содержащий полное описание интерфейса операционной системы, включая все графические файлы;
- lib и lib64 — Linux-библиотеки, используемые низкоуровневыми компонентами системы. Аналог каталогов /lib и /usr/lib в Linux, включая такие стандартные библиотеки, как libc, libz, libssl. На устройствах с архитектурой ARMv7 и ниже каталог lib64 будет отсутствовать;
- media — медиафайлы: рингтоны, звуки уведомлений, звуки интерфейса и анимация загрузки ОС;
- tts — файлы, необходимые синтезатору речи;
- usr — каталог, который обычно содержит файлы, необходимые для работы приложений из каталога bin. По сути, аналог /usr/share;
- vendor — файлы, поставляемые производителем устройства. Обычно содержит бинарный firmware для различных железных компонентов, например модуля Wi-Fi;
- xbin — необязательный каталог; кастомные прошивки используют его для хранения таких вещей, как интерпретатор bash, SSH, PowerTOP, BusyBox, и других полезных инструментов;
- build.prop — файл, содержащий информацию о сборке, а также различные низкоуровневые настройки;
- addon.d — содержит скрипты, запускаемые после установки прошивки. Сюда же GApps прописывают свой скрипт, благодаря которому возрождаются после переустановки прошивки.
Ознакомившись с базовой структурой Android, начнем вносить изменения.
Что такое «Recovery»?
Чтобы понять, как можно прошить Андроид через рекавери c SD-карты, требуется точно знать, что подразумевается под этим понятием. Само слово происходит от английского глагола «recover» или «восстанавливать».
Будет полезным
Рекавери – это специальное программное обеспечение, которое присутствует в системе Андроид. Если проводить аналогии с компьютером, то Revovery для смартфона по своим функциям повторяет БИОС на компьютере.
Функция представляет собой средство обращения к «железу» до момента загрузки файлов операционной системы, что позволяет манипулировать устройством на низком уровне и обходить системны сбои.
Обратите внимание
Вход в инженерное меню или рекавери осуществляется путем одновременного нажатия кнопки домой и клавши громкости во время перезагрузки устройства. Это общая схема, в реальности каждый производитель придумывает свои комбинации.
Удаляем и добавляем приложения
Все предустановленные программы можно найти в двух папках:
- /system/app/;
- /system/priv-app/.
Друг от друга они отличаются привилегиями доступа. Если программы из app имеют такие же полномочия, как сторонние программы (например, установленные из Play Store), то приложения из priv-app могут использовать привилегированные API (права privileged). Подробнее об этом можно узнать из нашей статьи.
Для предустановки приложения в прошивку просто кинь ее APK-файл в /system/app/. Можно, конечно, создать отдельную папку, но в нашем случае в этом нет смысла, потому что папка служит для хранения библиотек и odex-файлов, которых у нас попросту нет. Для удаления просто удали папку с ним.
Можно пойти дальше и поменять стоковые приложения на аналоги. К примеру, для замены календаря удаляем папку Calendar и копируем в /system/app наш любимый com.rpagyc.simplecalendar.apk. А можно и не копировать. Тогда прошивка будет без календаря.
Главное, помни: стоковые программы могут быть связаны между собой. Поэтому удаление одной проги вполне может привести к полной неработоспособности другой (к примеру, CalendarProvider и Calendar: удалив первый, ты сделаешь неработоспособным не только стоковый, но и любой другой календарь). К счастью, в чистых AOSP-прошивках взаимосвязей не так много.
Подготовительные работы
Чтобы знать, как правильно прошить Андроид через рекавери, необходимо четко представлять все этапы подготовительных работ, которые необходимо провести перед процедурой.
Они включают в себя:
- Создание резервной копии данных с телефона. Их можно перенести на карту памяти или синхронизировать через облачные сервисы.
- Скачивание выбранной версии прошивки. Это может быть кастомная или стоковая сборка. Все зависит от субъективного выбора пользователя.
- Получение root-прав.
После завершения подготовительной работы, которая включает дополнительное изучение темы на специализированных форумах, можно переходить к непосредственному процессу перепрошивки.
Меняем анимацию загрузки
Анимация хранится в виде PNG-картинок, упакованных в архив /system/media/bootanimation.zip без сжатия. Внутри архива находятся:
- desc.txt — файл, описывающий анимацию;
- part0 — папка с файлами анимаций, которые воспроизводятся первыми;
- part1 — папка с файлами анимаций, которые воспроизводятся вторыми;
- …
- part? — крайняя папка, изображения с которой воспроизводятся в конце.
Файл desc.txt может содержать нечто вроде
1920 1080 60 p 1 0 part0 p 0 0 part1
Назначение этих строк интуитивно понятно: 1920 × 1080 — разрешение картинки, 60 — число кадров в секунду. Part0 и part1 указывают на папки, из которых будет воспроизводиться анимация, и последовательность воспроизведения. Вообще, может быть как одна часть, так и несколько (три и больше).
Изображения, находящиеся в папках part, пронумерованы пятью цифрами в порядке воспроизведения: 00000.png, 00001.png, 00002.png… Эти изображения можно поменять на свои, тем самым создав оригинальную анимацию. А можно просто удалить файл bootanimation.zip. Тогда девайс будет показывать анимацию из стандартного Android. Или воспользоваться уже готовой коллекцией анимаций на 4PDA.
Четыре части в bootanimation.zip для LineageOS
Скрипт обновления
Для обновления будем использовать update-скрипт, который пишется на специальном скриптовом языке edify, о синтаксисе которого можно прочитать в исходниках android. Скрипт /META-INF/com/google/android/update-script может быть таким:
- show_progress 0.1 0
- format CACHE:
- format SYSTEM:
- copy_dir PACKAGE:system SYSTEM:
- set_perm_recursive 0 0 0755 0644 SYSTEM:
- set_perm_recursive 0 2000 0755 0755 SYSTEM:bin
- set_perm 0 3003 02755 SYSTEM:bin/netcfg
- set_perm 0 3004 02755 SYSTEM:bin/ping
- set_perm_recursive 1002 1002 0755 0440 SYSTEM:etc/bluez
- set_perm 0 0 0755 SYSTEM:etc/bluez
- set_perm 1002 1002 0440 SYSTEM:etc/dbus.conf
- set_perm 1014 2000 0550 SYSTEM:etc/dhcpcd/dhcpcd-run-hooks
- set_perm 0 2000 0550 SYSTEM:etc/init.goldfish.sh
- set_perm_recursive 0 0 0755 0555 SYSTEM:etc/ppp
- set_perm 0 0 04755 SYSTEM:etc/ppp/ip-up-vpn
- show_progress 0.1 10
- show_progress 0.2 0
- copy_dir PACKAGE:data DATA:
- show_progress 0.2 10
- show_progress 0.3 0
- format BOOT:
- write_raw_image PACKAGE:boot.img BOOT:
- show_progress 0.3 10
Пока этот скрипт очень примитивен и единственное что он делает — подготавливает соответствующие разделы.
Изменяем звуковое оформление
Фактически все звуки, которые воспроизводит система, хранятся в папке /system/media/audio. Внутри нее ты найдешь следующие папки:
- alarms — мелодии будильника;
- notifications — звуки уведомлений;
- ringtones — мелодии звонка;
- ui — системные звуки, например низкий заряд батареи, фокусировка камеры, выбор элементов интерфейса.
В alarms, notifications, ringtones можно накидать сколько угодно любых мелодий. Взять их можно, например, здесь:
- стандартные мелодии из разных телефонов и смартфонов Nokia;
- знаменитые стандартные рингтоны;
- просто множество рингтонов;
- мелодии с разных телефонов.
И маленький лайфхак: удаление файлов из папки ui приведет не к сбоям и ошибкам, а к исчезновению системных звуков. Поэтому ты можешь легко отключить звук создания снимка с камеры, снятия скриншота, просто потерев содержащие эти звуки файлы (их имена интуитивно понятны).
Меняем системные настройки (build.prop)
В образе system есть интересный файлик build.prop, содержащий множество полезной информации о железе устройства и настройках, устанавливаемых по умолчанию, для различных стоковых приложений. Справедливости ради замечу, что это не всегда так. Например, в Gigaset ME и ME Pro build.prop разделен на две части. В одной части содержатся настройки для Gigaset ME, а для ME Pro некоторые строки продублированы, но ключи (название смартфона и так далее) в них другие. Это было сделано, чтобы обеспечить более-менее корректную работоспособность одной и той же прошивки на разных аппаратах.
Дополнительный файл для Gigaset ME и ME Pro
Build.prop содержит (или может содержать) огромное количество настроек. Некоторые из них ничего не меняют, некоторые улучшают одно за счет ухудшения другого, но есть те, которые действительно полезны:
- ro.product.model и ro.product.manufacturer — модель смартфона и имя производителя. С помощью замены этих строк можно заставить Play Store думать, будто у тебя другой смартфон, что откроет доступ к большему количеству софта. Для всяких малоизвестных китайских смартфонов эти строчки могут стать спасительными;
- hw.qemu.mainkeys — принимает только два значения: 0 — показать наэкранные клавиши навигации, 1 — не показывать кнопки. Отсутствие строки соответствует 0;
- debug.sf.nobootanimation — значение 1 отключает анимацию загрузки, что немного поднимает ее скорость. Установка 0 или удаление строки возвращает анимацию на место;
- ro.telephony.default_network — говорит системе, в какой режим должна быть переключена мобильная сеть при загрузке;
- ro.sf.lcd_density — DPI дисплея, наиболее точное значение для дисплея можно посчитать через удобный сайт. Но никто не запрещает поставить и большее или меньшее значение по своему вкусу: более высокие значения делают элементы интерфейса крупнее, низкие — меньше;
- ro.config.vc_call_vol_steps — количество шагов громкости во время разговора (по умолчанию 8);
- ro.config.media_vol_steps — количество шагов громкости мультимедиа (по умолчанию 15).
Важно!
- Прежде чем прошить устройство, создайте резервную копию данных. Это можно сделать в настройках Андроида, пункт «восстановление и сброс». В случае неудачной прошивки резервная копия поможет вам вернуться к тому моменту, с которого начали.
- Чтобы установить прошивку с SD-карты на Андроид, сначала нужно ее скачать и сохранить на эту карту в формате «.zip», причем в корневом
каталоге, т.е. не в какой-то папке, а так, чтобы когда вы открыли содержимое карты, сразу же увидели прошивку.
- Скачайте приложение Rom Manager с Play Маркета. Откройте его и нажмите «Recovery Setup». Затем нажмите «ClockworkMod Recovery» и выберите из предложенного списка свою модель телефона / планшета. Начнется установка, в процессе которой программа затребует права суперпользователя. Если у вас их нет, в интернете полно лазеек на этот счет, воспользуйтесь одной из них. По окончании приложение оповестит вас об удачной установке.
- Проверьте уровень заряда аккумулятора. Его должно хватить на весь процесс установки, который может занять да 45 мин.
Внедряем в прошивку Google Apps
Почти всегда кастомные прошивки поставляются без сервисов Google и магазина приложений. Разработчики предлагают нам установить их отдельно с помощью пакета GApps. Однако его можно интегрировать прямо в прошивку.
Для начала необходимо скачать пакет GApps. Я рекомендую брать архивы Open GApps. Выбираешь версию Android, архитектуру процессора и вариант комплектации (Pico, Nano, Stock…), который определяет, сколько различных приложений Google содержит архив. Я рекомендую скачать версию Pico. Она содержит только Play Store и набор необходимых для его работы библиотек.
Интеграция GApps в прошивку выполняется так:
- Распаковываем ZIP-архив GApps с помощью любого архиватора.
- Переходим в папку Core.
- Видим множество архивов с расширением .tar.lz. Извлекаем с помощью lzip.
- После распаковки копируем файлы из папок в соответствующие папки в system. Что куда кидать, нетрудно догадаться по структуре каталогов в архиве. Например, configupdater (со скриншота) нужно кидать в папку priv-app.
- Переходим в папку GApps (находится рядом с Core) и проделываем пункты 3 и 4 для файлов в ней.
- Все, мы интегрировали GApps в нашу прошивку!
Структура каталогов configupdater-all.tar.lz
Как открыть прошивку Андроид для последующего её изменения
Частые зависания системы и другие ошибки являются результатом некорректной работы программного обеспечения. Проблемные программы можно легко удалить. Но что делать с установленным софтом, который не удаляется из системы? В таких случаях устройство необходимо перепрошить на более стабильную версию или самостоятельно внести правки в ОС. В данном посте вы узнаете, как открыть прошивку Android для последующего ее изменения.
Что представляет собой прошивка
Прошивка – это операционная система, которая соединяет в единую цепь весь технический потенциал гаджета и предоставляет пользователю оптимальные эксплуатационные возможности. Данное программное обеспечение является основой всех современных многофункциональных устройств.
На просторах глобальной сети можно найти внушительное количество официальных и кастомных прошивок, открывающих дополнительные возможности.
Стоит ли распаковывать прошивку
Распаковка прошивки представляет собой непростой процесс, который требует времени и соответствующих навыков, но является весьма актуальным и полезным.
Посредством распаковки пользователь может внести корректировки в работу самых различных элементов установленного программного обеспечения, исключив тем самым возможность появления ошибок, зависаний и многих других неприятных моментов без перепрошивки и замены ПО.
Задумавшись над вопросом, нужно ли распаковывать прошивку Android, вы наверняка найдете пару дополнительных плюсов. Из распакованной прошивки можно извлечь apk-файлы или интегрировать инсталляторы прочих программ.
Распаковка QSB и INB-прошивок
Прошивки с расширением .qsb и .inb являются прерогативой устройств компании Lenovo. Их распаковка не занимает большого количества времени и проводится посредством всего одной утилиты LenovoWinTools.
Данная программа имеет интуитивно понятное управление и предоставляет массу дополнительных возможностей. Помимо распаковки прошивок она позволяет осуществлять быструю обратную сборку прошивки с уже измененными файлами, способствует комфортной работе с контекстным меню, проводит сборку нескольких частей файлов в один.
Для работы с прошивкой через редактор LenovoWinTools достаточно установить русифицированную программу, зайти в пункт «Файл» и посредством имеющихся инструментов выбрать свою прошивку. Далее потребуется подождать, и тогда прямо из программы сможете оперировать файлами прошивки.
Свободное место
Необходимо понимать, что место для установки прошивок ограниченно. Нельзя установить прошивку, размер которой перевешивает размер раздела system устройства. Посмотреть его значение можно, используя ADB:
$ adb shell df /system
Инфа о разделе system
Второй вариант: поставить на устройство терминал и набрать команду
$ df /system
Размер раздела в байтах можно узнать, установив на смартфон BusyBox и выполнив в терминале команду
$ busybox df -B 1 /system
Или то же самое с помощью ADB:
$ adb shell busybox df -B 1 /system
Место, занимаемое прошивкой, будет приблизительно равно размеру system в распакованном виде. Вообще, при создании прошивки необходимо учитывать, что юзер также может прошить поверх нее различные модификации (SuperSU, Xposed) или перенести приложения в раздел system. Например, минимальный пакет приложений Google (Pico) требует минимум 150 Мбайт дополнительного пространства для установки.
При необходимости размер файла прошивки можно уменьшить, удалив не только ненужные программы из /system/app (/system/priv-app) и звуки вызова из system/media/audio и bootanimation.zip, но и:
- /system/tts/lang_pico — языки примитивного голосового движка Pico TTS, голосовой движок Google это не затронет;
- /system/usr/srec/config/ — офлайн-языки. Можно будет скачать потом онлайн, если понадобится.
Сборка
После внесения изменений нужно собрать все обратно. Сначала запакуем раздел system в system.new.dat. Скачиваем нужные нам инструменты:
$ wget https://github.com/xpirt/img2sdat/raw/master/img2sdat.py $ wget https://github.com/xpirt/img2sdat/raw/master/blockimgdiff.py $ wget https://github.com/xpirt/img2sdat/raw/master/common.py $ wget https://github.com/xpirt/img2sdat/raw/master/rangelib.py $ wget https://github.com/xpirt/img2sdat/raw/master/sparse_img.py $ sudo apt-get install android-tools-fsutils
Преобразовываем нашу папку обратно в RAW-образ. Назовем его system_new.img:
$ sudo make_ext4fs -T 0 -S file_contexts -l 1073741824 -a system system_new.img output/
1073741824 меняем на размер раздела system в байтах. Желательно даже сделать его чуть меньше. Делаем из RAW-образа sparse-образ:
$ img2simg system_new.img system_snew.img
Преобразуем наш образ в system.transfer.list и system.new.dat, которые и нужно кидать в архив с прошивкой, но сначала удалим старые файлы:
$ rm -rf system.transfer.list $ rm -rf system.new.dat $ rm -rf system.patch.dat $ chmod +x img2sdat.py $ ./img2sdat.py system_snew.img
Отделим файлы прошивки от лишней шелухи (файлов, которые мы загружали для работы. Для этого удобно пользоваться архивом с прошивкой). Удалили? Теперь нужно запаковать прошивку в ZIP-архив (любым архиватором).
Осталось подписать архив. Сделать это можно как на самом Android с помощью ZipSigner, так и на ПК (потребуется установленная Java):
$ wget https://github.com/appium/sign/raw/master/dist/sign.jar $ java -jar файл.zip
Подводные камни
Во время сборки system.new.dat ты можешь столкнуться с несколькими проблемами, вызванными постоянными изменениями в механизмах формирования прошивок Android. Описанный выше способ должен хорошо сработать в случае основанной на Android 5.1 прошивки, в более новых могут возникнуть сложности, так что потребуется использовать другие версии инструментов сборки. К сожалению, мы не можем описать все нюансы сборки, поэтому, возможно, придется погуглить.
Несколько советов по установке
- Настоятельно рекомендуется сделать бэкап (резервную копию) данных перед началом перепрошивки. Это убережет от потери всех данных при неудачной установке ОС.
- Уровень заряда телефона не должен быть меньше 30%. А еще лучше не отключать его от ПК во время всего процесса.
- В некоторых случаях (особенно при установке кастомных прошивок) требуется наличие root-прав. Быстро получить их можно при помощи программ GingerBreak, SuperOneClick, Unlock Root Pro и других.
- Иногда даже официально вышедшая для девайса прошивка может оказаться слишком «тяжелой» для него. Поэтому прежде, чем начать ее устанавливать, необходимо прочесть рекомендации, системные требования и отзывы.
- Если устройство прошивается при помощи специальных программ, необходимо тщательно проверить его соединение с компьютером. Если usb-шнур вдруг отойдет в процессе переустановки, телефон рискует остаться неработоспособным.
Ручная прошивка, как видно, довольно проста и не занимает много времени. Для обновления своего смартфона вовсе не обязательно нести его к мастеру – достаточно будет внимательности и четкого соблюдения последовательности действий.
Используемые источники:
- https://smartfon-24.ru/kak-ustanovit-proshivku-na-android-s-sd-karty/
- https://androidguid.ru/proshivka/proshit-android-cherez-sd-kartu.html
- https://mobila.guru/faqsingle/kak-proshit-android-cherez-kartu-pamyati/
- https://mrandroid.ru/kak-proshit-android-cherez-kartu-pamyati/
- https://androidonliner.ru/problem/os-android-usb.html
ПОДЕЛИТЬСЯ Facebook
- tweet
Предыдущая статьяКак проверить б/у телефон Андроид при покупке
Следующая статьяКак разблокировать Ватсап если тебя заблокировали
Выводы
Эта статья описывает лишь верхушку огромного айсберга под названием «модификация прошивок». «Серьезные» прошивки не только дополняют ядро и саму прошивку со стоковыми приложениями множеством функций (которые зачастую вырваны из других ядер и прошивок), организовывая или даже меняя принципы их взаимодействия, но и вполне могут кардинально менять принципы работы ОС. Правда, такая поделка — это уже не Android, а отдельная ОС, даже если Play-сервисы получится туда поставить (кстати, такие действия, мягко говоря, не поощряются Google). Ну и не забываем: все оболочки от производителей — TouchWiz, ZenUI, HTC Sense и так далее — всего лишь обычные кастомы, максимально привязанные к железу устройства и друг к другу.
Основа
Существует несколько различных подходов к разработке прошивки.
- Сборка из исходников Android Open Source Project
- Сборка из исходников проекта CyanogenMod
- Модификация прошивки, предоставляемой производителем телефона
Несмотря на то, что платформа Android вроде как и является открытой, но в реальных телефонах используются закрытые компоненты. Это и драйверы распространяющиеся в бинарном виде (wifi/gps/fm), и ключевые компоненты системы, такие как Маркет и другие сервисы Google. Также сюда нужно добавить разработки компаний в области интерфейса, такие как HTC Sense, Motoblur, TouchWiz от Sumsung. Это создает местами непреодолимые трудности по разработке прошивки из исходных кодов. Я предлагаю остановиться на модификации готовых прошивок, предоставляемых вендорами телефонов. Прошивки для телефонов HTC существуют в двух видах:
- RUU. Rom Update Utility
(Утилита обновления прошивки). Утилита для ОС Windows производящая обновление телефона - OTA. Over the Air
(Обновление по «воздуху»). Пакет, скачиваемый самим телефоном через wifi/gprs сети, который устанавливается на телефон без какого-либо участия компьютера
Последнее время OTA-обновления состоят из бинарных diff
-ов, что несколько осложняет использование оных в качестве
основы
. Так как это требует наличия конкретного телефона с определенной версией прошивки, что может быть просто невыполнимым, если мы хотим адаптировать прошивку от одного телефона для другого. Либо предполагает долгую и мучительную подтасовку идентификатора телефона с последующим скачиванием обновления без его установки. Причем, возможно, эту процедуру придется повторить несколько раз. Будем использовать RUU обновление.