- 浏览: 911932 次
- 性别:
- 来自: 上海
最新评论
-
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 978Understanding Systrace Caution: ... -
Android simpleperf
2018-09-12 11:02 1678Introduction of simpleperf What ... -
Android selinux安全策略
2016-06-21 17:16 4001基础知识 SEAndroid在架构和机制上与SELinux完 ... -
Android wifi captive portal 验证
2016-02-23 20:38 5091只要是国内的用户,基本上刷完5.0版本后如果没挂上V P N, ... -
Android CTS windows环境下测试
2015-09-08 11:36 6408Windows下CTS测试步骤 1.获 ... -
Android 之 日期时间 时区同步
2015-05-13 15:47 6291系统设置--日期和时间-- ... -
虚拟按键 振动效果
2015-05-12 11:50 2061[DESCRIPTION] Setting->情景模式- ... -
Android 签名信息读取
2014-08-22 17:32 1330public void getSingInfo() { ... -
Android UiAutomator 自动化测试
2014-07-04 17:39 9864一、一个BUG引发的问题 ... -
Android 多语言 多地区对应表
2014-05-13 17:09 2051Arabic, Egypt (ar_EG) Arabic, ... -
Android emulated sdcard
2013-08-12 21:46 6091如果要添加 emulated sdcard ,需要一下几个 ... -
#if、#ifdef、#if defined之间的区别
2013-05-17 15:19 58377#if的使用说明 #if的后面接的是表达式 #if ( ... -
Android 动态库死机调试方法
2013-03-05 13:54 4832android系统中调试Java非常容易,一般遇到错误都在 ... -
Android sqlite3 详解
2012-09-13 22:13 2357SQLite库包含一个名字叫做sqlite3的命令行,它可以让 ... -
Android 多语言开发
2012-08-16 18:37 2308第一部分 多语言定制的机制 1、ICU4C简介 ICU4 ... -
Android 添加底层核心服务
2012-06-04 10:52 5722为 Android添加底层核 ... -
Android 之响应的系统设置的事件
2012-05-24 18:17 19221、Configuration类专门用于描述手机设备上的配置信 ... -
Android CRT Screen 电视效果
2012-05-17 11:12 2248Android 2.3 对关屏进行了优化,增加了一种类似于 ... -
android编译dex-preopt
2012-05-11 18:48 5356对于android2.3编译时候选择下面的情况,既可以对dex ... -
Android 移动终端camera 防偷*拍设置
2012-04-26 10:35 1826目前市面上的所有移动终端几乎都有camera应用,但andro ...
相关推荐
嵌入式Linux系统的启动(很好的嵌入式linux启动过程分析)
我们在这里讨论的是对嵌入式 linux 系统的启动过程的输出信息的注释,通过我们的讨论,大家会对嵌入式 linux 启动过程中出现的、以前感觉熟悉的、但却又似是而非的东西有一个确切的了解,并且能了解到这些输出信息的...
详解嵌入式linux启动信息 详解嵌入式linux启动信息 详解嵌入式linux启动信息
加快嵌入式Linux系统启动速度的方法及应用.pdf
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 C语言开发的自学教材,同时也适合于已掌握C语言基础编程技术,需要提高嵌入式C语言编程实践能力...
本篇主要讲述进行嵌入式 本篇主要讲述进行嵌入式 本篇主要讲述进行嵌入式 本篇主要讲述进行嵌入式 本篇主要讲述进行嵌入式 本篇主要讲述进行嵌入式 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嵌入式linux嵌入式linux
1.1 嵌入式Linux基础 1.2 Linux安装 1.3 Linux文件及文件系统 1.4 实验内容——安装Linux操作系统 本章小结 思考与练习 第2章 Linux基础命令 2.1 Linux常用操作命令 2.2 Linux启动过程详解 ...