这里我们是在ubuntu下进行操作我是用root用户登陆的,首先安装netpbm库

执行:apt-get install netpbm

对于Android系统最开始表现logo是在内核当中,所以首先我们要修改内核中的logo.

一.内核中相关修改

编译linux内核logo制造脚本mklogo.sh,内容如下:

#!/bin/sh
pngtopnm logo.png > linuxlogo.pnm
pnmquant 224 linuxlogo.pnm > linuxlogo224.pnm
pnmtoplainpnm linuxlogo224.pnm > logo_linux_gzsd_clut224.ppm
rm linuxlogo.pnm linuxlogo224.pnm

将你选好的logo转换成png格式,定名为logo.png并与mklogo.sh放在统一路径下.
执行./mklogo.sh最后生成logo_linux_gzsd_clut224.ppm

这个定名可以自由变动,但是必须遵守logo_yourname_type这类定名方法,这里仅罗列*_clut224.ppm的定名方法,其它格式的定名方法请查看drivers/video/logo/Makefile文件.

将logo_linux_gzsd_clut224.ppm文件放到内核源码下的drivers/video/logo/目录下

进入drivers/video/logo目录

1.修改Kconfig文件

增加:在endif #LOGO之前

config LOGO_LINUX_GZSD
bool "gzsd logo"
default n

2.修改Makefile文件

增加:

obj-$(CONFIG_LOGO_LINUX_GZSD)       += logo_linux_gzsd_clut224.o

3.logo.c中函数fb_find_logo中的 if (depth >= 8)上面增加:

#ifdef CONFIG_LOGO_LINUX_GZSD
                logo = &logo_linux_gzsd_clut224;
#endif

4.内核源码目录下的include/linux/linux_logo.h中增加

extern const struct linux_logo logo_linux_gzsd_clut224;

    每日一道理
毅力,是千里大堤一沙一石的凝聚,一点点地累积,才有前不见头后不见尾的壮丽;毅力,是春蚕吐丝一缕一缕的环绕,一丝丝地坚持,才有破茧而出重见光明的辉煌; 毅力,是远航的船的帆,有了帆,船才可以到达成功的彼岸。

5.在终端执行make menuconfig,选上.

Device Drivers  ---> Graphics support  --->Bootup logo  --->gzsd logo

保存退出后编译即可

6.禁止LCD控制台的光标

在内核源码目录下drivers/video/console/fbcon.c中

注释掉函数:fb_flashcursor和fbcon_cursor内的所有内容

7.让logo中屏幕旁边表现:

drivers/video/fbmem.c

修改函数fb_do_show_logo如下

static void fb_do_show_logo(struct fb_info *info, struct fb_image *image,
int rotate, unsigned int num)
{
unsigned int x;
int xoff,yoff; /**for central logo**/
xoff = (info->var.xres - num * (fb_logo.logo->width + 8))>>1; //得到旁边x坐标
yoff = (info->var.yres - num * (fb_logo.logo->height + 8))>>1; //得到旁边y坐标 if (rotate == FB_ROTATE_UR) {
for (x = 0; x < num && image->dx + image->width <= info->var.xres; x++) {
image->dx = xoff;
image->dy = yoff;
info->fbops->fb_imageblit(info, image);
image->dx += image->width + 8;
}
}
else if (rotate == FB_ROTATE_UD) {
for (x = 0; x < num && image->dx >= 0; x++) {
info->fbops->fb_imageblit(info, image);
image->dx -= image->width + 8;
}
}
else if (rotate == FB_ROTATE_CW) {
for (x = 0; x < num && image->dy + image->height <= info->var.yres; x++) {
info->fbops->fb_imageblit(info, image);
image->dy += image->height + 8;
}
}
else if (rotate == FB_ROTATE_CCW) {
for (x = 0; x < num && image->dy >= 0; x++) {
info->fbops->fb_imageblit(info, image);
image->dy -= image->height + 8;
}
}
}

重新编译即可

二.android启动后闪动画面修改:

路径:文件系统源码下的frameworks/base/core/res/assets/images/下有两张图片

android-logo-mask.png

android-logo-shine.png

修改这两张图片即可,注意请将本来的保存。

安卓修改开机logo的更多相关文章

  1. 安卓修改开机logo和开机动画的方法

    第一种和第二种方法亲测可用,安卓版本是4.2和安卓5.1均可.第二种方法待验证 以下三种方法 Android 开机其实总共会出现3个画面: 1.第一个就是 linux 系统启动,出现Linux小企鹅画 ...

  2. 高通平台msm8916修改开机logo【原创】

    经过两天的奋战终于把开机logo给搞定了啊. 首先修改开机logo要从哪里入手呢?先分析一下源码看看. ---> void display_image_on_screen() { struct ...

  3. 八、启动linux内核并修改开机logo

    1. 编译并烧写linux内核 1)先准备好内核源码包urbetter-linux2.6.28-v1.0.tgz,输入命令:tar -zxvf urbetter-linux2.6.28-v1.0.tg ...

  4. 小白自制Linux开发板 九. 修改开机Logo

    许久不见啊,今天我们继续来修改我们的系统. 通过前面的几篇文章我们已经能轻松驾驭我们的开发板了,但是现在都是追求个性化的时代,我们在开发板上打上了自己的Logo,那我们是否可以改变开机启动的Logo呢 ...

  5. 高通平台开机LOGO修改LK(bootloader)下实现【转】

    网络上已经有许多在kernel中修改开机Logo的文章,本文就LK下实现开机logo进行简述 需要用到ffmpeg工具,没有安装ffmpeg请参考这里: http://blog.csdn.net/re ...

  6. 设置安卓开机动画、开机logo

    我们要修改的是system>media文件夹下的bootanimation.zip(手机开机动画)这个文件 先来讲讲这个文件结构:该zip解压后得到两个文件, 第一个目录存放了开机时播放的图片( ...

  7. 开机logo以及两种修改开机动画方法

    Android开机画面总共有三屏 一.第一屏:开机logo 1.选张png格式的图片,在Linux任意下执行(安装工具): sudo apt-get install pnmtoplainpm 2.在所 ...

  8. 安卓开机logo和开机动画的几种实现方法

    安卓4.2可用方法2-4,第一种方法未验证. 从理论上来说,android 有4个开机启动画面. 第一个应该是U-BOOT的启动画面,有些设备为了满足按动电源即有显示,在UBOOT里加了开机画面,实现 ...

  9. Linux修改开机启动logo

    默认开机LOGO会在液晶屏的左上脚显示一只小企鹅,分辨率为80*80,具体在kernel/drivers/video/logo下会有logo_linux_clut224.ppm这幅图像,程序会根据这幅 ...

随机推荐

  1. Volley超时重试机制

    基础用法 Volley为开发者提供了可配置的超时重试机制,我们在使用时只需要为我们的Request设置自定义的RetryPolicy即可. 参考设置代码如下: int DEFAULT_TIMEOUT_ ...

  2. 28- foreach里面实现一次遍历两个链表

    由于业务需求,要在一个foreach里面实现一次遍历两个链表:后台传来的是连个list:  分别是 <c:set var = "i" value = "0" ...

  3. DOS下的安全空间

    我们需要直接向一段内存中写入内容: 这段内存空间不应存放系统或其他程序的数据或代码,否则写入操作很可能引发错误: DOS方式下,一般情况,0:200~0:2ff空间中没有系统或其他程序的数据或代码; ...

  4. ELK日志系统:Filebeat使用及Kibana如何设置登录认证(转)

    原文地址:http://www.cnblogs.com/yjmyzz/p/filebeat-turorial-and-kibana-login-setting-with-nginx.html 根据el ...

  5. Linux磁盘分区与文件系统

    一 Linux磁盘分区与文件系统 在Linux中常见的操作系统有:ext2 ext3 ext4 xfs btrfs reiserfs等文件系统的作用主要是明确磁盘或分区上的文件存储方法以及数据结构,L ...

  6. CSS学习总结3:CSS定位

    CSS 定位机制 CSS 有三种基本的定位机制:普通流.浮动和绝对定位. 一.普通流 除非专门指定,否则所有框都在普通流中定位.普通流中元素框的位置由元素在(X)HTML中的位置决定.块级元素从上到下 ...

  7. PAT 1087 有多少不同的值(20)(STL—set)

    1087 有多少不同的值(20 分) 当自然数 n 依次取 1.2.3.--.N 时,算式 ⌊n/2⌋+⌊n/3⌋+⌊n/5⌋ 有多少个不同的值?(注:⌊x⌋ 为取整函数,表示不超过 x 的最大自然数 ...

  8. java有车有房有能力最基本运用

    public class yunsuan { public static void main(String[] args) { // 1是有,0是没有 int i = 1, l = 0;// 有房 i ...

  9. 839A Arya and Bran

    A. Arya and Bran time limit per test 1 second memory limit per test 256 megabytes input standard inp ...

  10. java性能优化之for循环

    完成同样的功能,用不同的代码来实现,性能上可能会有比较大的差别,所以对于一些性能敏感的模块来说,对代码进行一定的优化还是很有必要的.今天就来说一下java代码优化的事情,今天主要聊一下对于for(wh ...