Показать сообщение отдельно
Старый 12.05.2013, 20:23   #1
AngelOfGrief
Старший Пользователь
 
Регистрация: 17.01.2009
Возраст: 48
Город: Москва
Регион: 77, 97, 99, 177
Машина: Audi A5 3.2FSI Q, Porsche 996 Turbo
Сообщений: 669
AngelOfGrief is a jewel in the roughAngelOfGrief is a jewel in the roughAngelOfGrief is a jewel in the rough
По умолчанию Замена Splash экрана в Android

Предупреждение: данные действия вы выполняете на свой страх и риск! Неправильные действия могут привести к неработоспособности вашего устройства!

Сегодня озадачился сменой загрузочных картинок в Android.

При загрузке андроида последовательно используется 3 экрана:

1) Splash (обычно логотип фирмы-производителя)
2) Logo (по умолчанию зелёный робот)
3) Анимация

На рутованном девайсе заменить анимацию -- самое простое (это файл bootanimation.zip, состоящий из серии зипованных PNG файлов).
Но я хотел получить п. 1 и п. 2 без перепрошивки и пересборки ядра. Как ни странно, оказалось, что заменить п. 1 проще.

Нужен SSH доступ к девайсу. Смонтированные ROM-имиджи находятся в папке /dev/mtd. Чтобы узнать какой из них за что отвечает пишем в шеле:

cat /proc/mtd

Мой медиаплеер Iconbit Toucan Nano выдаёт что-то вроде (ненужное опущено):

mtd0: logo
mtd1: boot
mtd2: system
mtd3: cache
mtd4: userdata
mtd5: ubootenv

Далее через SFTP (я использовал обычный Far Manager с установленным WinSCP плагином) копируем "файл" mtd0 в компьютер. У меня получился файл размером ровно 4 мб внутри которого безо всяких заголовков тупо лежал 24-битный стандартный BMP файл с логотипом Iconbit, а лишнее пространство было просто заполнено нулями (ну это же всё-таки дамп флэша).

Открыв файл в Фотошопе я не меняя разрешения отредактировал его так как хотелось и сохранил в формате 24 бит. Получилось около 1 мб. При помощи утилиты hiew заполнил пустое место нулями.

Для прошивки флэша из командной строки Андроида (т.е. линукса) используется утилита flash_image. В моём девайсе её не оказалось, но я нашёл её в инете и она чудным образом у меня заработала. )) Утилита во вложении.

flash_image имя_раздела путь/имя_файла

Записываемый файл нужно залить сначала на девайс, затем его и указываем, например:

flash_image logo /sdcard/logo/logo1.img

У меня была какая-то непонятность с записью во флэш. Если просто указываешь эту команду, она выполняется, но старые данные не стираются. Однако, если указать в качестве параметра какой-то короткий файл (например 600 кб), то утилита выдаёт ошибку, что файл якобы не найден (хотя он там есть), а в "файле" /dev/mtd/mtd0 после этого оказываются нули. Вот теперь уже можно записывать нужный нам файл. После записи можно проверить результат снова скопировав /dev/mtd/mtd0 на компьютер, там уже должны быть новые данные.

Далее пишем в шеле reboot и наслаждаемся новым Splash-экраном. ))

Часть 2 (лого) находится во втором разделе (boot), но там свой формат, его нужно сначала распаковать, а затем корректно пересобрать. Если это сделать неправильно, можно превратить девайс в "кирпич".
Вложения
Тип файла: rar flash_image.rar (4.8 Кб, 1225 просмотров)

Последний раз редактировалось AngelOfGrief; 13.05.2013 в 19:14.
AngelOfGrief вне форума   Ответить с цитированием