Замена 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.
				
				
			
		
		
	
	 |