12.05.2013, 20:23 | #1 |
Старший Пользователь
Регистрация: 17.01.2009
Возраст: 49
Город: Москва
Регион: 77, 97, 99, 177
Машина: Audi A5 3.2FSI Q, Porsche 996 Turbo
Сообщений: 669
|
Замена 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), но там свой формат, его нужно сначала распаковать, а затем корректно пересобрать. Если это сделать неправильно, можно превратить девайс в "кирпич". Последний раз редактировалось AngelOfGrief; 13.05.2013 в 19:14. |
12.05.2013, 21:14 | #2 |
Старший Пользователь
Регистрация: 17.03.2011
Город: Moscow
Регион: 77, 97, 99, 177
Машина: Alfa Romeo
Сообщений: 322
|
Добавлю, по своим экспериментам с лого, что иногда нужно так же удалять первые несколько байтов заголовка BMP, и оставлять только RAW данные изображения, чтобы все было красиво. Иначе первые несколько пикселей будут мусором (у меня было заметно на черном фоне). В остальном все верно. Еще, форматы BMP в разных устройствах разнятся, но как правило это 24bit R8 G8 B8. Так же, logo бывает зашито в uboot.
|
12.05.2013, 21:45 | #3 |
Старший Пользователь
Регистрация: 17.01.2009
Возраст: 49
Город: Москва
Регион: 77, 97, 99, 177
Машина: Audi A5 3.2FSI Q, Porsche 996 Turbo
Сообщений: 669
|
Я теперь пытаюсь понять что находится внутри boot.img чтобы убрать "зелёного робота". По описанию в инете там должно быть ровно 2К системной инфы, а затем image рам-диска с заголовком 00 00 00 00 1F B8. Но у меня там ничего такого нет... Непонятно.
|
12.05.2013, 22:25 | #4 |
Гуру
Регистрация: 28.12.2009
Возраст: 40
Регион: Украина
Сообщений: 1,084
|
хорошая работа.
но я считаю что карпк должен слипнуть/просыпаться, а не загружаться при подачи питания.
__________________
Проект Peugeot 207 - Nexus 7 |
13.05.2013, 00:40 | #5 |
Старший Пользователь
Регистрация: 17.01.2009
Возраст: 49
Город: Москва
Регион: 77, 97, 99, 177
Машина: Audi A5 3.2FSI Q, Porsche 996 Turbo
Сообщений: 669
|
Ну это нужно сложнее тогда реализовывать. А что если машина брошена дней на 7? На месяц? Помимо слипа нужно тогда делать и полное отключение при более длительном простое. В штатных навигациях так и делается.
А мой девайс загружается быстрее чем за 1 мин. По-моему, нормально... |
13.05.2013, 07:52 | #6 |
Старший Пользователь
Регистрация: 14.02.2013
Возраст: 38
Город: Сургут
Регион: 86
Машина: Chevrolet Sonic
Сообщений: 338
|
Эх, вот бы на Nexus 7 такое замутить, очень хочется убрать Logo.
|
13.05.2013, 09:39 | #7 | |
Гуру
Регистрация: 28.12.2009
Возраст: 40
Регион: Украина
Сообщений: 1,084
|
Цитата:
за ночь слипа у меня теряется 2%, за сутки тогда порядка 5, за неделю 35 полное отключение произойдет само при просадке родной батареи или если интеграция без батареи, то лучше всегда вешать АКБ машины через умный БП но это все конечно холивар. Реально согласен, обе позиции имеют право на жизнь
__________________
Проект Peugeot 207 - Nexus 7 |
|
13.05.2013, 10:20 | #8 |
Старший Пользователь
Регистрация: 14.02.2013
Возраст: 38
Город: Сургут
Регион: 86
Машина: Chevrolet Sonic
Сообщений: 338
|
Кто сможет такое сварганить для Nexus 7, тут владельцев очень не мало, и думаю это многим понадобиться, дабы полностью сделать вид в авто, законченного продукта.
|
13.05.2013, 10:29 | #9 |
Новый Пользователь
Регистрация: 25.08.2012
Возраст: 37
Город: Тюмень
Регион: 72
Машина: mazda 6
Сообщений: 23
|
Ну на Nexus 7 анимацию меняли в другой теме и это получалось. Осталось только знак андроида при старте
|
13.05.2013, 10:48 | #10 |
Старший Пользователь
Регистрация: 14.02.2013
Возраст: 38
Город: Сургут
Регион: 86
Машина: Chevrolet Sonic
Сообщений: 338
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|