### 修改Android启动Logo详解
#### 一、概述
在Android设备中,启动Logo是指设备启动过程中显示的品牌或自定义图像。这些Logo不仅提升了品牌形象,也是用户开机时的第一印象。本文档将详细介绍如何修改Android设备上的启动Logo,包括bootloader图片、kernel图片(Linux Logo)以及额外的水果Logo图片。
#### 二、Bootloader图片修改
1. **位置**:
- 文件路径:`bootable/bootloader/lk/platform/tcc_shared/include/lcd/logo.h`
- 在该文件中替换原有的Logo即可。
2. **Logo.h的制作**:
- 准备一张图片。
- 使用Img2Lcd工具将图片转换成C语言数组格式。
- 注意事项:
- 转换后可能会出现图片左侧有一条白边的情况,可以通过删除数组中的前8个数值来解决这个问题。
- 仅支持`.bmp`格式的文件。
#### 三、Kernel图片(Linux Logo)修改
1. **配置添加**:
- 在menuconfig中加入配置:
- `Device Driver` -> `Graphics support` -> `Bootup Logo` -> 选择224 color。
- 替换默认的启动Logo图片(默认格式为`.ppm`)。
- 删除原有文件`logo_linux_clut224.c`和`logo_linux_clut224.o`。
- 重新编译。
2. **ppm图片生成**:
- 将自定义Logo转换为`.ppm`格式:
- 使用`pngtopnm`、`pnmquant`和`pnmtoplainpnm`工具。
- 安装这些工具的方法是在终端中运行`sudo apt-get install netpbm`。
- 命令示例:
- `pngtopnm logo_linux_clut224.png > logo_linux_clut224.pnm`
- `pnmquant 224 logo_linux_clut224.pnm > logo_linux_clut224.pnm`
- `pnmtoplainpnm logo_linux_clut224.pnm > logo_linux_clut224.ppm`
3. **设置图片居中显示**:
- 修改`drivers/video/fbmem.c`文件中的代码,使图片居中显示。
- 替换原有代码:
```c
// image.dx=0;
// image.dy=y;
image.dx=(info->var.xres/2)-(logo->width/2);
image.dy=(info->var.yres/2)-(logo->height/2);
```
- 在`drivers/video/console/fbcon.c`文件中,添加代码以调整Logo的高度:
```c
logo_height += (info->var.yres/2)-(logo_height/2);
```
#### 四、水果Logo图片制作与修改
1. **制作当前屏幕像素的图片**:
- 使用Photoshop或其他图像处理软件制作一张符合屏幕分辨率的图片。
- 推荐尺寸为1024*768,根据实际设备屏幕尺寸调整。
- 保存时选择“保存为Web所用格式”,选择PNG-24格式。
- 文件命名为`android_logo.png`。
2. **将图片转换为raw格式**:
- 使用ImageMagick中的`convert`命令进行转换。
- 安装ImageMagick的方法是运行`sudo apt-get install imagemagick`。
- 转换命令示例:
- `convert -depth 8 android_logo.png rgb:android_logo.raw`
3. **将raw格式转化为rle文件**:
- 使用Android编译后的`rgb2565`工具。
- 文件路径:`out/host/linux-x86/bin/rgb2565`
- 转换命令示例:
- `rgb2565 -rle < android_logo.raw > initlogo.rle`
4. **修改设备配置文件**:
- 在`device/telechips/m805_892x/device.mk`中添加一行代码,用于复制rle文件到ramdisk.img:
```makefile
PRODUCT_COPY_FILES += \
device/telechips/common/initlogo.rle:root/initlogo.rle
```
通过以上步骤,您可以成功地修改Android设备上的启动Logo。这些方法不仅适用于Telechips TCC8923平台,也适用于其他类似的Android设备。需要注意的是,在操作过程中可能遇到各种细节问题,比如不同版本的Android源码可能存在差异,因此在实际操作时应根据具体情况灵活调整。