PCCar.ru - Ваш автомобильный компьютер

PCCar.ru - Ваш автомобильный компьютер (http://pccar.ru/index.php)
-   Бутанимация (http://pccar.ru/forumdisplay.php?f=184)
-   -   Замена Splash экрана в Android (http://pccar.ru/showthread.php?t=19130)

AngelOfGrief 12.05.2013 20:23

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

Сегодня озадачился сменой загрузочных картинок в 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), но там свой формат, его нужно сначала распаковать, а затем корректно пересобрать. Если это сделать неправильно, можно превратить девайс в "кирпич".

tsynik 12.05.2013 21:14

Добавлю, по своим экспериментам с лого, что иногда нужно так же удалять первые несколько байтов заголовка BMP, и оставлять только RAW данные изображения, чтобы все было красиво. Иначе первые несколько пикселей будут мусором (у меня было заметно на черном фоне). В остальном все верно. Еще, форматы BMP в разных устройствах разнятся, но как правило это 24bit R8 G8 B8. Так же, logo бывает зашито в uboot.

AngelOfGrief 12.05.2013 21:45

Я теперь пытаюсь понять что находится внутри boot.img чтобы убрать "зелёного робота". По описанию в инете там должно быть ровно 2К системной инфы, а затем image рам-диска с заголовком 00 00 00 00 1F B8. Но у меня там ничего такого нет... Непонятно.

wave_is 12.05.2013 22:25

хорошая работа.
но я считаю что карпк должен слипнуть/просыпаться, а не загружаться при подачи питания.

AngelOfGrief 13.05.2013 00:40

Ну это нужно сложнее тогда реализовывать. А что если машина брошена дней на 7? На месяц? Помимо слипа нужно тогда делать и полное отключение при более длительном простое. В штатных навигациях так и делается.

А мой девайс загружается быстрее чем за 1 мин. По-моему, нормально...

kristal0211 13.05.2013 07:52

Эх, вот бы на Nexus 7 такое замутить, очень хочется убрать Logo.

wave_is 13.05.2013 09:39

Цитата:

Сообщение от AngelOfGrief (Сообщение 258178)
Ну это нужно сложнее тогда реализовывать. А что если машина брошена дней на 7? На месяц? Помимо слипа нужно тогда делать и полное отключение при более длительном простое. В штатных навигациях так и делается.

А мой девайс загружается быстрее чем за 1 мин. По-моему, нормально...

я часто на месяц машину не бросаю.
за ночь слипа у меня теряется 2%, за сутки тогда порядка 5, за неделю 35
полное отключение произойдет само при просадке родной батареи или если интеграция без батареи, то лучше всегда вешать АКБ машины через умный БП

но это все конечно холивар.

Реально согласен, обе позиции имеют право на жизнь

kristal0211 13.05.2013 10:20

Кто сможет такое сварганить для Nexus 7, тут владельцев очень не мало, и думаю это многим понадобиться, дабы полностью сделать вид в авто, законченного продукта.

MaLiVer 13.05.2013 10:29

Ну на Nexus 7 анимацию меняли в другой теме и это получалось. Осталось только знак андроида при старте

kristal0211 13.05.2013 10:48

Цитата:

Сообщение от MaLiVer (Сообщение 258195)
Ну на Nexus 7 анимацию меняли в другой теме и это получалось. Осталось только знак андроида при старте

Там меняли, но путем пересборки ядра, что очень не безопасно. Здесь я так понял белее гуманный способ.


Часовой пояс GMT +4, время: 06:17.

Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot