- 浏览: 913937 次
- 性别:
- 来自: 上海
-
最新评论
-
liu149339750:
我勒个去,搜到你的博客了,关注!
Android make脚本简记 -
ihopethatwell:
楼主,这个修改时间有个问题,退出修改界面就不保存设置的时间了, ...
Android中如何修改系统时间(应用程序获得系统权限) -
flyar520:
你好...我也遇到屏幕半屏刷成黑屏的问题...但是我的时在开机 ...
Android横屏状态下返回到壁纸界面屏幕刷新问题 -
flyar520:
你好...我也遇到屏幕半屏刷成黑屏的问题...但是我的时在开机 ...
Android横屏状态下返回到壁纸界面屏幕刷新问题 -
taowayi:
推荐android一键反编译神器 apkdec
Android apk反编译
一.去除embedded linux 的开机光标:
在内核的当前目录进入到drivers/video/console/fbcon.c
文件
将static void fb_flashcursor(void *private)
和 static void fbcon_cursor(struct vc_data *vc, int mode)
里的内容注释掉,使之变成空函数
二 、
Android 开机会出现3个画面:
1. Linux 系统启动,出现Linux小企鹅画面(reboot)(Android 1.5及以上版本已经取消加载图片);
2. Android平台启动初始化,出现"A N D R I O D"文字字样画面;
3. Android平台图形系统启动,出现含闪动的ANDROID字样的动画图片(start)。
4、splash(LK里跑的logo)
1、开机图片(Linux小企鹅) (Android 1.5及以上版本已经取消加载图片);
Linux Kernel引导启动后,加载该图片。
logo.c中定义nologo,在fb_find_logo(int depth)函数中根据nologo的值判断是否需要加载相应图片。
代码如下:
static int nologo;
module_param(nologo, bool, 0);
MODULE_PARM_DESC(nologo, "Disables startup logo");
/* logo's are marked __initdata. Use __init_refok to tell
* modpost that it is intended that this function uses data
* marked __initdata.
*/
const struct linux_logo * __init_refok fb_find_logo(int depth)
{
const struct linux_logo *logo = NULL;
if (nologo)
return NULL;
......
}
相关代码:
/kernel/drivers/video/fbmem.c
/kernel/drivers/video/logo/logo.c
/kernel/drivers/video/logo/Kconfig
/kernel/include/linux/linux_logo.h
(1)让内核支持启动LOGO
在内核目录中 make menuconfig
Device Drivers ----> Graphics support ---->
选中 Bootup logo ----> Standard 224-color Linux logo
(2) 制作一张启动LOGO的PNG格式的图片logo_linux_clut224.png
(3)sudo apt-get install netpbm
#pngtopnm logo_linux_clut224.png>logo_linux.pnm
#pnmquant 224 logo_linux.pnm > logo_linux_224.pnm
#pnmtoplainpnm logo_linux_224.pnm>logo_linux_clut224.ppm
(4)将LOGO文件放入内核中
拷贝到制作好的LOGO文件到 /drivers/video/logo 文件夹
替换 logo_linux_clut224.ppm 文件
(5)重新编译内核
2、开机文字("A N D R I O D")
Android
系统启动后,init.c中main()调用load_565rle_image()函数读取/initlogo.rle(一张565
rle压缩的位图),如果读取成 功, 则 在/dev/graphics/fb0显示Logo图片;如果读取失败,则将/dev/tty0设为TEXT模式,
并打开/dev/tty0,输出文本“A N D R I O D”字样。
定义加载图片文件名称
#define INIT_IMAGE_FILE "/initlogo.rle"
int load_565rle_image( char *file_name );
#endif
init.c中main()加载/initlogo.rle文件。
if( load_565rle_image(INIT_IMAGE_FILE) ) {//加载initlogo.rle文件
fd = open("/dev/tty0", O_WRONLY);//将/dev/tty0设为text模式
if (fd >= 0) {
const char *msg;
msg = "/n"
"/n"
"/n"
"/n"
"/n"
"/n"
"/n" // console is 40 cols x 30 lines
"/n"
"/n"
"/n"
"/n"
"/n"
"/n"
"/n"
" A N D R O I D ";
write(fd, msg, strlen(msg));
close(fd);
}
}
相关代码:
/system/core/init/init.c
/system/core/init/init.h
/system/core/init/init.rc
/system/core/init/logo.c
*.rle文件的制作步骤:
a. 使用GIMP或者Advanced Batch Converter软件,将图象转换为RAW格式;
b. 使用android自带的rgb2565工具,将RAW格式文件转换为RLE格式(如:rgb2565 -rle < initlogo.raw > initlogo.rle)。
3、开机动画(闪动的ANDROID字样的动画图片)
Android
1.5版本:Android的系统登录动画类似于Windows系统的滚动条,是由前景和背景两张PNG图片组成,这两张图片存在于手机或模拟器
/system/framework/framework-res.apk文件当中,对应原文件位于/frameworks/base/core/res
/assets/images/。前景图片(android-logo-mask.png)上的Android文字部分镂空,背景图片(android-
logo-shine.png)则是简单的纹理。系统登录时,前景图片在最上层显示,程序代码(BootAnimation.android())控制背
景图片连续滚动,透过前景图片文字镂空部分滚动显示背景纹理,从而实现动画效果。
相关代码:
/frameworks/base/libs/surfaceflinger/BootAnimation.h
/frameworks/base/libs/surfaceflinger/BootAnimation.cpp
/frameworks/base/core/res/assets/images/android-logo-mask.png Android默认的前景图片,文字部分镂空,大小256×64
/frameworks/base/core/res/assets/images/android-logo-shine.png Android默认的背景图片,有动感效果,大小512×64
Android 1.6及以上版本:
init.c解析init.rc(其中定义服
务:“service bootanim
/system/bin/bootanimation”),bootanim服务由SurfaceFlinger.readyToRun()
(property_set("ctl.start",
"bootanim");)执行开机动画、bootFinished()(property_set("ctl.stop",
"bootanim");)执行停止开机动画。
BootAnimation.h和BootAnimation.cpp文件放到了
/frameworks/base/cmds/bootanimation目录下了,增加了一个入口文件bootanimation_main.cpp。
Android.mk文件中可以看到,将开机动画从原来的SurfaceFlinger里提取出来了,生成可执行文件:bootanimation。
Android.mk代码如下:
//=============Android.mk======================
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES:= /
bootanimation_main.cpp /
BootAnimation.cpp
# need "-lrt" on Linux simulator to pick up clock_gettime
ifeq ($(TARGET_SIMULATOR),true)
ifeq ($(HOST_OS),linux)
LOCAL_LDLIBS += -lrt
endif
endif
LOCAL_SHARED_LIBRARIES := /
libcutils /
libutils /
libui /
libcorecg /
libsgl /
libEGL /
libGLESv1_CM /
libmedia
LOCAL_C_INCLUDES := /
$(call include-path-for, corecg graphics)
LOCAL_MODULE:= bootanimation
include $(BUILD_EXECUTABLE)
//==========================================
(1)adb shell后,可以直接运行“bootanimation”来重新看开机动画,它会一直处于动画状态,而不会停止。
(2)adb
shell后,命令“setprop ctl.start bootanim”执行开机动画;命令“getprop ctl.start
bootanim”停止开机动画。这两句命令分别对应SurfaceFlinger.cpp的两句语
句:property_set("ctl.start", "bootanim");和property_set("ctl.stop",
"bootanim");
相关文件:
/frameworks/base/cmds/bootanimation/BootAnimation.h
/frameworks/base/cmds/bootanimation/BootAnimation.cpp
/frameworks/base/cmds/bootanimation/bootanimation_main.cpp
/system/core/init/init.c
/system/core/rootdir/init.rc
4、splash(LK里跑的logo)
准备splash.png图,最终生成splash.raw565
1、convert splash.png -depth 8 rgb:splash.raw
2、rgb2565 < splash.raw > splash.raw565
相关code如下:
aboot.c
lcdc.c
发表评论
-
Android systrace
2018-09-12 11:13 989Understanding Systrace Caution: ... -
Android simpleperf
2018-09-12 11:02 1708Introduction of simpleperf What ... -
Android selinux安全策略
2016-06-21 17:16 4024基础知识 SEAndroid在架构和机制上与SELinux完 ... -
Android wifi captive portal 验证
2016-02-23 20:38 5112只要是国内的用户,基本上刷完5.0版本后如果没挂上V P N, ... -
Android CTS windows环境下测试
2015-09-08 11:36 6420Windows下CTS测试步骤 1.获 ... -
Android 之 日期时间 时区同步
2015-05-13 15:47 6305系统设置--日期和时间-- ... -
虚拟按键 振动效果
2015-05-12 11:50 2079[DESCRIPTION] Setting->情景模式- ... -
Android 签名信息读取
2014-08-22 17:32 1340public void getSingInfo() { ... -
Android UiAutomator 自动化测试
2014-07-04 17:39 9880一、一个BUG引发的问题 ... -
Android 多语言 多地区对应表
2014-05-13 17:09 2076Arabic, Egypt (ar_EG) Arabic, ... -
Android emulated sdcard
2013-08-12 21:46 6122如果要添加 emulated sdcard ,需要一下几个 ... -
#if、#ifdef、#if defined之间的区别
2013-05-17 15:19 58390#if的使用说明 #if的后面接的是表达式 #if ( ... -
Android 动态库死机调试方法
2013-03-05 13:54 4842android系统中调试Java非常容易,一般遇到错误都在 ... -
Android sqlite3 详解
2012-09-13 22:13 2370SQLite库包含一个名字叫做sqlite3的命令行,它可以让 ... -
Android 多语言开发
2012-08-16 18:37 2324第一部分 多语言定制的机制 1、ICU4C简介 ICU4 ... -
Android 添加底层核心服务
2012-06-04 10:52 5736为 Android添加底层核 ... -
Android 之响应的系统设置的事件
2012-05-24 18:17 19331、Configuration类专门用于描述手机设备上的配置信 ... -
Android CRT Screen 电视效果
2012-05-17 11:12 2258Android 2.3 对关屏进行了优化,增加了一种类似于 ... -
android编译dex-preopt
2012-05-11 18:48 5367对于android2.3编译时候选择下面的情况,既可以对dex ... -
Android 移动终端camera 防偷*拍设置
2012-04-26 10:35 1839目前市面上的所有移动终端几乎都有camera应用,但andro ...
相关推荐
嵌入式Linux系统的启动(很好的嵌入式linux启动过程分析)
我们在这里讨论的是对嵌入式 linux 系统的启动过程的输出信息的注释,通过我们的讨论,大家会对嵌入式 linux 启动过程中出现的、以前感觉熟悉的、但却又似是而非的东西有一个确切的了解,并且能了解到这些输出信息的...
在实际测试中,发现系统启动时在BIOS、Linux内核和init启动服务进程三个过程是最耗时的(占90%)。因此,缩短这三个过程的时间是加快嵌入式Linux系统启动速度的关键。 为了加快嵌入式Linux系统启动速度,可以从...
详解嵌入式linux启动信息 详解嵌入式linux启动信息 详解嵌入式linux启动信息
该论文对嵌入式Linux系统的快速启动技术进行了深入的研究,提出了一个适用于消费类电子领域的文件系统结构和XIP技术结合的启动方案。该技术可以大幅度地缩短系统的启动时间,提高系统的性能和可靠性。 知识点: 1....
Android嵌入式Linux终极实战:手把手做一款android智能机!
嵌入式Linux 系统启动盘制作,包含详细的步骤以及代码
我们在这里讨论的是对嵌入式linux系统的启动过程的输出信息的注释,通过我们的讨论,大家会对嵌入式linux启动过程中出现的、以前感觉熟悉的、但却又似是而非的东西有一个确切的了解,并且能了解到这些输出信息的...
经典—详解嵌入式linux启动信息_经典
作者多年积累总结的嵌入式Linux开发技巧和提示,无论对初学者还是有经验的开发人员,都弥足珍贵。这一版不仅对原有章节进行了全面的修订、更新和改进,还新增了udev、USB和开源构建系统等内容。
嵌入式linux内核制作
硬件部件的使用及编程(囊括了常见硬件,比如UART、I*IC、LCD等),UBoot、Linux内核的分析、配置和移植,根文件系统的构造(包括移植busybox、glibc、制作映象文件等),内核调试技术(比如添加kgdb补丁、栈回溯等),...
嵌入式Linux开发教程(上册) +嵌入式Linux开发教程(下册)(周立功)PDF高清版 主要讲述嵌入式 Linux 产品开发过程中的内核/驱动开发部分相关内容,包括 Linux 内核裁剪定制、驱动编写和驱动移植等
通过本课程的系统学习,可以使学员由浅入深地对嵌入式Linux和Android系统进行全面学习,能够独立胜任嵌入式linux和Android两个方向的开发工作。嵌入式linux方向包括C语言开发、嵌入式Linux应用开发、系统开发、驱动...
嵌入式 Linux 系统的引导过程及启动代码分析 嵌入式 Linux 系统的...本文通过对嵌入式 Linux 系统的引导过程和启动代码的分析,旨在为编写高效的启动代码提供参考,并为嵌入式 Linux 系统的开发和应用提供技术支持。
本篇主要讲述进行嵌入式 本篇主要讲述进行嵌入式 本篇主要讲述进行嵌入式 本篇主要讲述进行嵌入式 本篇主要讲述进行嵌入式 本篇主要讲述进行嵌入式 Linux 开发所必备的基础知识, 以实用和够为标准进行介绍开发所...
linux 嵌入式 ppt os linux 嵌入式 ppt os linux 嵌入式 ppt os linux 嵌入式 ppt os linux 嵌入式 ppt os linux 嵌入式 ppt os linux 嵌入式 ppt os linux 嵌入式 ppt os linux 嵌入式 ppt os linux 嵌入式 ppt os ...
在嵌入式Linux下修改文件进行设置开机启动时静态IP或者动态IP
本文主要讲述了嵌入式Linux设备驱动程序的概念、通用模块和具体开发流程,进一步通过实例论述了如何设计和编写模块化的嵌入式Linux设备驱动程序,以及解释驱动程序的关键代码。 一、嵌入式Linux设备驱动程序的概念 ...