摘要:System Server是Android系统的核心,他在Dalvik虚拟机启动后立即开始初始化和运行。其它的系统服务在System Server进程的环境中运行。/base/services/java/com/android/server/SystemServer.javaJava代码 /** *ThismethodiscalledfromZygotetoinitializethesystem.Thiswillcausethenative*services(SurfaceFlinger,AudioFlinger,etc..)tobestarted.Afterthatitwillcallbac
阅读全文
随笔分类 - Android
摘要:Android系统的移植的主要目的是为了能在特定的硬件上运行Android系统。而在移植的过程中,一个重要的方面就是把握关键要点,减少工作量。从工作的角度,首先要熟悉硬件抽象层的接口,其次要集成和复用已有的驱动程序,主要的工作量在硬件抽象层的实现中。为了更好地理解和调试系统,也应该适当地了解上层对硬件抽象层的调用情况。 移植方面主要的工作有两个部分: Linux驱动 Android系统硬件抽象层 Linux中的驱动工作在内核空间,Android系统硬件抽象层工作在用户空间,有了这两个部分的结合,就可以让庞大的Android系统运行在特定的硬件平台上。 Android移植的主要工作如...
阅读全文
摘要:恢复出厂设置流程概括: 一. 设置模块中进行恢复出厂设置操作,系统一共做了两件事: 1. 往 /cache/recovery/command 文件中写入命令字段: 2. 重启系统 二. 重启系统会必须进入 recovery 模式 进入 recovery 模式的几种方式 1. 通过读取 /cache 分区中文件 /cache/recovery/command 内容进入 2. 通过按键操作进入 (G1 通过同时按 HOME 和 挂断键) 以上两种方式进入都需要 blob的支持 三. 所以恢复出厂设置,进入 recovery 模式,必须做以下几件事情: 1. blob 必须能从 recovery 分
阅读全文
摘要:Recovery简介Android利用Recovery模式,进行恢复出厂设置,OTA升级,patch升级及firmware升级。升级一般通过运行升级包中的META-INF/com/google/android/update-script脚本来执行自定义升级,脚本中是一组recovery系统能识别的UI控制,文件系统操作命令,例如write_raw_image(写FLASH分区),copy_dir(复制目录)。该包一般被下载至SDCARD和CACHE分区下。如果对该包内容感兴趣,可以从http://forum.xda-developers.com/showthread.php?t=442480下
阅读全文
摘要:关键字: Android , build system 非常有用的记录,感谢作者!=======================================1. Android编译系统分析编译脚本及系统变量build/envsetup.sh脚本分析在编译源代码之前通常需要在android源代码顶层目录执行 . ./build/envsetup.sh 目的是为了使用脚本 envsetup.sh 里面定义了一些函数:function help()function get_abs_build_var()function get_build_var()function check_product(
阅读全文
摘要:Android文件系统具有什么样的结构?我们如何才能将这一文件系统分离出来?又能以何种方式挂载文件系统呢?这些问题都会在文中找到具体的解决答案。用过Linux的朋友可能对开源的系统有一个非常好的印象。那么在日益成熟的手机操作系统中,有没有一款像Linux一样的开源系统呢?谷歌公司就退出了一款基于Linux平台的Android 操作系统来满足人们的需求。在这里大家可以先来了解一下Android文件系统的相关内容。1、Android文件系统的结构Android源码编译后得到system.img,ramdisk.img,userdata.img映像文件。其中, ramdisk.img是emulato
阅读全文
摘要:Android Source Code Download TOP Website android 的最新源代码下载的官方网站是:http://source.android.com 源代码的下载说明页面是:http://source.android.com/download (现在貌似用还用不了) 现在的网站是http://git.android.com TOP Create Directory 在HOME(/home/justin)目录下创建如下目录结构: /home/justin/android : 总计 36 drwxr-xr-x 7 justin ju...
阅读全文
摘要:http://raymond1860.spaces.live.com/Blog/cns!BF47B6FD104579C9!797.entry1.目录树/framework/base/api/framework/base/awt/framework/base/build/framework/base/camera 关 于camera的HAL接口库。最终生成native共享库libcamera.so ,编译时根据是否定义USE_CAMERA_STUB来决定系统是否有Camera硬件支持。若没有实际的Camera硬件,则编译时会和虚拟 camera静态库(libcamerastub.a,由camer
阅读全文
摘要:Android 加速度传感器的类型是 Sensor.TYPE_ACCELEROMETER 通过 android.hardware.SensorEvent 返回加速度传感器值。 加速度传感器返回值的单位是加速度的单位 m/s^2(米每二次方秒),有三个方向的值分别是 values[0]: x-axis 方向加速度 values[1]: y-axis 方向加速度 values[2]: z-axis 方向加速度 其中x,y,z方向的定义是以水平放置在的手机的右下脚为参照系坐标原点(如下图) x 方向就是手机的水平方向,右为正 y 方向就是手机的水平垂直方向,前为正 y 方向就是手机的空间垂...
阅读全文
摘要:浅析dev目录下设备文件mknod节点gid,uid和mode的如何方便设置init=>handle_device_fd 收到uevent信息=>handle_device_event=>static void handle_device_event(struct uevent *uevent){.../* are we block or char? where should we live? */if(!strncmp(uevent->path, "/block", 6)) {block = 1;base = "/dev/block/&q
阅读全文
摘要:/system/core/init初始化程序1.执行sigaction函数,对SIGCHILD信号进行处理。实际上暂时屏蔽2.设置umask来清空后面创建文件的mask3. 创建文件系统mount point & mount 内存文件系统4. open_devnull_stdio 0 1 2 is the fd. They are all the file descriptor of /dev/__null__5.open /dev/__kmsg__ as log fd.6.parse_config_file首先打开/init.rc然后读出所有的数据到内存,然后调用parse_conf
阅读全文
摘要:电池的信息,电压,温度,充电状态等等,都是由BatteryService来提供的。BatteryService是跑在system_process当中,在系统初始化的时候启动,如下 在BatteryService.java中: Log.i(TAG, "Starting Battery Service."); BatteryService battery = new BatteryService(context); ServiceManager.addService("battery", battery);==========================
阅读全文
摘要:摘录几篇android研发日志1 http://blog.csdn.net/linweig/archive/2010/06/01/5640697.aspxFirmware 加载原理分析----分析的比较透彻,我在wifimodule调试时遇到的问题几乎跟这个一样,不过我采取了另外一个方法,直接用kernel的read和write了,没有使用request_firmware,有空小结下。前言 前段时间移植 wifi 驱动到 android 的内核上,发现 firmware 的加载始终出错,问了几个人,都不是很了解,没办法,只好自己研究一下。 原理分析 从本质上来说, firmware 需要做..
阅读全文
摘要:JNI是Java Native Interface的缩写,译为Java本地接口。它允许Java代码和其他语言编写的代码进行交互。在android中提供JNI的方式,让Java程序可以调用C语言程序。android中很多Java类都具有native接口,这些接口由本地实现,然后注册到系统中。 主要的JNI代码放在以下的路径中:frameworks/base/core/jni/,这个路径中的内容被编译成库 libandroid_runtime.so,这是个普通的动态库,被放置在目标系统的/system/lib目录下。此外,android还有其他的 JNI库。JNI中的各个文件,实际上就是普通的..
阅读全文
摘要:android 系统关机,重启 1.android系统的关机,重启代码位于frameworks/base/core/jni/android_os_Power.cpp,里面有static void android_os_Power_shutdown(JNIEnv *env, jobject clazz){/*关机*/ sync();#ifdef HAVE_ANDROID_OS reboot(RB_POWER_OFF);#endif}static void android_os_Power_reboot(JNIEnv *env, jobject clazz, jstring reason){/*重
阅读全文
摘要:Android主要有6部分 Applications (java)-------------------------------- FrameWork (java)===================================== | Core Libraries external Lib | -------------- | dalvik (jvm) |----------------------------------- HAL==================================== Linux Kernel 第一部分 : Kernel 先把kernel的代码拉下来
阅读全文
摘要:“苹果(Apple)公司的应用程序商店(app store)和谷歌(google) Android都为大家提供了更加容易赚钱的机会,但是我认为,为苹果应用程序商店开发软件的公司和个人赚的都只是小钱,利用Android的特性进行软硬件整合设计、再加上适当的艺术和工业设计才能赚到大钱。比较起来,苹果为大家提供的机会就像是芝麻,Android却能为大家带来一个汉堡。”在日前由创意时代主办的Android工作坊上,亚太地区Android促进会主席、台湾著名架构设计师高焕堂与参与工作坊的上百名嘉宾分享了他利用 Android、整合软硬件设计以及工业设计赚大钱的思路。高焕堂介绍,由于Android兼具开放
阅读全文