Android系统
Arrow
在技术上具有Arrow一样的钉子精神
展开
-
系统去掉 Android 4.4.2 的StatusBar和NavigationBar
1. 简介 在Android4.4.2中,原创 2014-05-13 14:29:17 · 29179 阅读 · 4 评论 -
Android init.rc语法详解
1. 简介 init.rc由许多的Action和Service组成。 每一个语句占据一行,并且各个关键字被空格分开。c规范中的(如 /n)反斜杠将被忽略(backslash escapes)而被认为是一个空格 ,双引号用来保证空格不会把一个文字串分分为多个关键字。行最后的反斜杠用作续行。由 # (前面允许有空格)开始的行都是注释行(comment)转载 2013-05-17 15:42:08 · 2716 阅读 · 0 评论 -
linux下热插拔事件的产生是怎样通知到用户空间,kobject_uevent_env之uevent
1.kobject, ktype, kset 1) kobject: 代表sysfs中的目录。 2) ktype: 代表kobject的类型,主要包含release函数和attr的读写函数。比如,所有的bus都有同一个bus_type;所有的class都有同一个class_type。 3) kset: 包含了subsystem概念,kset本身也是一个kobject,所转载 2012-12-05 14:45:20 · 4700 阅读 · 0 评论 -
Android热插拔事件处理流程--Vold
一、Android热插拔事件处理流程图Android热插拔事件处理流程如下图所示: 二、组成1. NetlinkManager: 全称是NetlinkManager.cpp位于Android 4.x 源码位置/system/vold/NetlinkManager.cpp。该类的主要通过引用NetlinkHandler类中的onEvent()方法来接收来自内核的事原创 2012-12-01 16:38:20 · 21357 阅读 · 6 评论 -
Android系统权限和root权限
1. Android权限说明 Android系统是运行在Linux内核上的,Android与Linux分别有自己的一套严格的安全及权限机制,Android系统权限相关的内容,(一)linux文件系统上的权限-rwxr-x--x system system 4156 2012-06-30 16:12 test.apk. 代表的是相应的用户/用户组及其他人转载 2012-11-28 17:04:55 · 15523 阅读 · 0 评论 -
Android中使用ALSA声卡及alsa.conf asound.conf
1. 配置文件总共有三个配置文件: 1) /system/usr/share/alsa/alsa.conf :它指定了另外两个配置文件的路径 2) /etc/asound.conf 3) .asoundrc可通过cat /proc/asound/cards查看当前系统有哪些声卡。 2. 第一步cd到Android源码树根目录下:cd /home/xxx/and转载 2012-11-08 12:04:58 · 15220 阅读 · 0 评论 -
Android AIDL分析
1. AIDL接口 对于WindowManagerService,如果client需要访问它,需要通过AIDL接口来访问,其接口在IWindowManager.aidl中定义,ADIL接口在编译时将生成一个IWindowManager.java文件(此文件在out目录下),其主要相关代码如下: /** * System private interface to the wind原创 2012-11-06 16:14:32 · 8148 阅读 · 1 评论 -
Android系统--事件读取及分发
1. 简介 WindowManagerService分发事件是通过它的InputManager来完成的。 在初始化时,各部分状态如下: • InputManager.InputReader:正在睡眠等待事件的发生 • InputManager.InputDispatcher:正在等待InputReader从睡眠中醒过来并且唤醒它原创 2012-11-07 16:42:44 · 10537 阅读 · 1 评论 -
Activity启动分析
1. Activity简介 一个Activity是用户要做的一件单一工作。它包括与用户交互的所有功能,因此它负责创建Window,以便你通过setContentView放置你的UI。其所有派生类将实现以下两个方法: 1) onCreate:初始化你的activity,通常调用setContentView设置定义UI的资源,并且通过findViewById获取UI中的控件,以便程原创 2012-11-06 16:49:58 · 5463 阅读 · 0 评论 -
Android UI管理系统
Activity可以看做是整个android系统的人机接口,它提供了一个窗口来绘制UI,每个Activity在启动时,我们都需要给它设置一个Content view,作为Activity所呈现的UI内容,这个过程是通过setContentView()方法来实现的。 众所周知,android系统中强化了view的概念,主要是体现在对view的管理上,Android中的view以2种形态转载 2012-11-06 18:12:48 · 2484 阅读 · 0 评论 -
interface_cast做什么的?
1. 前面对interface_cast已经进行了详解,为加深理解,现单独把结果抛出来。它本身是一个模板,如:interface_cast(reply.readStrongBinder());2. reply.readStrongBinder());返回的结果是一个新创建的BpBinder对象。3. interface_cast(BpBinder);新创建一个BpMediaPlayer原创 2011-12-08 19:12:01 · 12171 阅读 · 0 评论 -
Android属性系统
1. 属性是什么? 属性(property)系统对Android来说是一个重要的功能。他作为一个系统服务管理着系统的配置和状态,所有的这些系统配置和状态都是属性(property)。属性(property)是一对键/值(key/value)组合,键和值都是字符串类型。总体感觉属性系统非常像Windows的注册表的功能。Androd中非常多的应用程序和库直接或者间接的依赖于属性系统,并由转载 2013-05-17 16:54:05 · 1867 阅读 · 0 评论 -
查看init进程的log信息
cat /dev/initLog原创 2013-05-20 09:36:57 · 3277 阅读 · 0 评论 -
Android Activity生命周期
首先看一下Android api中所提供的Activity生命周期图(不明白的,可以看完整篇文章,在回头看一下这个图,你会明白的):Activity其实是继承了ApplicationContext这个类,我们可以重写以下方法,如下代码:1public class Activity extends ApplicationContext原创 2012-05-04 09:05:04 · 1454 阅读 · 0 评论 -
Android4.0 Code 和 Kernel下载方法
1.依次执行以下命令,下载Android Code$ mkdir ~/bin$ PATH=~/bin:$PATH 下载Repo script$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo $ chmod a+x ~/bin/repo 创建工作目录原创 2011-12-10 10:35:41 · 2575 阅读 · 0 评论 -
Android4.2 G-Sensor工作流程
1. 简介 在了解Sensor工作流程以前,一直以为其事件是通过Event Hub来进行输送的,可是研究完Android4.0代码之后,才发现自己错了。 其主要框架如下图所示: 2.功能模块2.1 SensorManager.java与下层接口功能:1) 在SensorManager函数中 (1) 调用native sensors_module_原创 2013-06-07 10:11:40 · 20584 阅读 · 2 评论 -
Android查看FrameBuffer Resolution
http://www.whatismyscreenresolution.com原创 2013-09-09 10:01:12 · 2589 阅读 · 3 评论 -
Ubuntu12.10 编译Android 4.2
1. 简介 本文描述在X86 64位机(CPU i5)建立Android 4.2编译环境。2. 安装Ubuntu12.10 从http://releases.ubuntu.com/quantal/上下载 PC (Intel x86) desktop image,然后进行安装即可。 3. 建立Android4.2编译环境 Android编译环境原创 2013-08-16 09:12:50 · 4595 阅读 · 0 评论 -
Android System.loadLibrary及JNI_OnLoad简介
1. Android系统加载JNI Lib的方法 Android系统加载JNI Lib的方法有如下两种: 1) 通过JNI_OnLoad 2) 如果JNI Lib没有定义JNI_OnLoad,则dvm调用dvmResolveNativeMethod进行动态解析2. JNI_OnLoadSystem.loadLibrary调用流程如下所示:System.loa原创 2013-08-02 16:42:12 · 17548 阅读 · 0 评论 -
获取正在显示的activity名称
1. 在AndroidManifest.xml中增加权限2. 实现函数 String getTopActivity() { ActivityManager manager = (ActivityManager)getSystemService(ACTIVITY_SERVICE); List runningTaskInfos = manager.ge原创 2013-07-03 11:36:37 · 4230 阅读 · 1 评论 -
Android系统升级流程
一、前提条件 要进行Android系统升级,必须首先进入recovery模式,进入recovery模式的方式有: 1. 通过读取 /cache 分区中文件 /cache/recovery/command 内容进入,当然在重启之前已经向文件 /cache/recovery/command 写入了命令字段 2. 通过按键操作进入 (G1 通过同时按 HOME 和转载 2012-08-14 15:24:23 · 5593 阅读 · 0 评论 -
Android中如何根据端口号寻找对应的进程
1. Android的netstat netstat代码如下所示:int netstat_main(int argc, char *argv[]){ printf("Proto Recv-Q Send-Q Local Address Foreign Address State\n"); ipv4("/proc/net/tcp",原创 2013-05-15 15:44:45 · 9229 阅读 · 0 评论 -
Android APK反编译详解(附图)
这段时间在学Android应用开发,在想既然是用Java开发的应该很好反编译从而得到源代码吧,google了一下,确实很简单,以下是我的实践过程。在此郑重声明,贴出来的目的不是为了去破解人家的软件,完全是一种学习的态度,不过好像通过这种方式也可以去汉化一些外国软件。本文Android反编译教程,测试环境:Win7 Ultimate x64Ubuntu 12.04 x86转载 2013-05-28 10:11:36 · 2197 阅读 · 1 评论 -
把APK安装到SD卡和TF卡实现方案
1. 简介 为了能把应用程序安装到SD卡和TF卡上,Android系统默认是不支持的,它只有一个asec mount点: /mnt/secure/asec,在我的系统中,此mount点由/mnt/sdcard给占用了,所以TF卡就支持不了。为了解决此问题,除了把代码读明白之外,无其它的办法。为了方便理解下面的描述,先看下Vold(管理外设热插拔)的系统框架图:关于相关类图,引原创 2013-04-09 17:08:08 · 9450 阅读 · 2 评论 -
Android解包打包system.img的方法
1. system.img为yaffs2镜像2. 解包 对system.img的解包需要用到unyaffs这工具,下载地址:http://code.google.com/p/unyaffs/downloads/list 下载以后和system.img放入同一个文件夹,可直接下载可执行文件,也可以自己编译“gcc -o unyaffs unyaffs.c”转载 2012-10-25 10:56:53 · 19370 阅读 · 0 评论 -
Android Image文件结构
1. ramdisk.img 一个分区影像文件,它会在kernel 启动的时候,以只读的方式被 mount ,这个文件中只是包含了 /init 以及一些配置文件,这个ramdisk 被用来调用init,以及把真正的root file system mount 起来。它经常被打包到boot.img中,boot.img文件结构见另外一篇文章。 2.system.img转载 2012-10-25 11:11:36 · 4844 阅读 · 0 评论 -
Android build system note
1. Android编译系统分析编译脚本及系统变量build/envsetup.sh脚本分析在编译源代码之前通常需要在android源代码顶层目录执行 . ./build/envsetup.sh 目的是为了使用脚本 envsetup.sh 里面定义了一些函数:function help()function get_abs_build_var()function get_转载 2012-03-23 10:20:46 · 1274 阅读 · 0 评论 -
Android Prelink实现的源码分析
1. 原理简介1) PrelinkPrelink即预链接技术是利用事先链接以代替运行时链接的技术,以加快共享库的加载速度,它不仅能加快程序启动时间,还可以减少部分内存开销(它能使KDE的启动时间减少50%)。每次程序执行时,进行的链接动作都是一样的,链接相对来说开销很大,尤其是嵌入式系统。2) 普通Linux系统的PrelinkRedhat系统中prelink工具(/etc/cro转载 2012-03-23 10:09:04 · 1793 阅读 · 0 评论 -
查看基于Android 系统单个进程内存、CPU使用情况的几种方法
一、利用Android API函数查看1.1 ActivityManager查看可用内存。ActivityManager.MemoryInfo outInfo = new ActivityManager.MemoryInfo(); am.getMemoryInfo(outInfo); outInfo.availMem即为可用空闲内存。1.2、android.os.Debug查询转载 2012-03-09 11:57:27 · 11454 阅读 · 2 评论 -
android系统开发(六)-HAL层开发基础
Android HAL层,即硬件抽象层,是Google响应厂家“希望不公开源码”的要求推出的新概念1,源代码和目标位置源代码: /hardware/libhardware目录,该目录的目录结构如下:/hardware/libhardware/hardware.c编译成libhardware.so,目标位置为/system/lib目录/hardware/libhardware/inc转载 2012-03-23 17:17:01 · 1814 阅读 · 0 评论 -
android系统开发(八)-SDCARD
关于android系统开发sdcard移植,主要有如下工作:1,内核驱动开发,完成后每次插入和拔出sdcard系统都会有相关的信息显示,而且sdcard可以手动挂载。2,android的sdcard挂载主要是vold来完成,vold的源代码在/system/vold目录下,编译成/system/bin/voldinit.rc文件中有vold系统服务,确保android系统开机后vo转载 2012-03-23 17:13:49 · 1868 阅读 · 0 评论 -
Android系统移植(三)-按键字符表
上节讲android的Window Manager将内核按键码通过按键映射表转换成android按键码,这节讲的是android按键码向android字符的转换,转换也是通过Window Manager来完成的(1)原始按键字符表,我们知道一个按键是可以显示多个字符的,决定显示字符的是CAPS(大小写),FN,NUNMBER等按键举例如下:[type=QWERTY]转载 2012-03-23 16:41:25 · 1705 阅读 · 0 评论 -
Android系统移植(一)-让android系统在目标平台上运行起来
Android系统由于用的是linux内核,因此内核移植和嵌入式linux内核移植差异不大,过程如下:(1)移植boot-loader和linux2.6内核到目标平台上,让linux内核可以启动起来,基本的驱动允许正常。此过程完全是嵌入式linux的开发,这里直接跳过。需要注意的是,由于android已经被linux官方开除,因此从网站上(如http://www.kernel.or转载 2012-03-23 15:16:28 · 2128 阅读 · 0 评论 -
android启动过程配置文件的解析与语法
(1)android启动文件系统后调用的第一个应用程序是/init,此文件的很重要的内容是解析了init.rc和init.xxx.rc两个配置文件,然后执行解析出来的任务。相关代码在android源代码/system/core/init/init.c文件中,如下: parse_config_file("/init.rc"); /* pull the kernel com转载 2012-03-23 16:47:32 · 2151 阅读 · 0 评论 -
Android系统移植(二)-按键移植
这一部分主要是移植android的键盘和按键(1)Android使用标准的linux输入事件设备(/dev/input目录下)和驱动,按键定义在内核include/linux/input.h文件中,按键定义形式如下:#define KEY_ESC 1#define KEY_1 2#define KEY_2 3转载 2012-03-23 16:37:01 · 2131 阅读 · 0 评论 -
android系统开发小知识-启动脚本文件内部的执行顺序
我们知道android在启动的时候通过init进程来解析init.rc和init.xxx.rc文件,然后执行这两个文件解析出来的内容,init.rc和init.xxx.rc文件中的内容却并不是按照顺序来执行的,而是有固定的执行顺序,首先,init.rc和init.xxx.rc文件中的内容全部会放在4个关键字下:early-init, init, early-boot, boot转载 2012-03-23 17:09:50 · 2030 阅读 · 0 评论 -
Android 系统用户态启动过程
Android 从系统启动有4个步骤:1. init进程启动2. Native服务启动3. System Server,Android服务启动4. Home启动 第一步: Init进程(System\core\init)init 进程,它是一个由内核启动的用户级进程.内核自行启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用转载 2012-02-10 09:18:33 · 2039 阅读 · 0 评论 -
android系统关机流程
android系统都有一个关机按键,长按这个按键系统会进行关机操作。具体实现流程如下:在android层通过系统调用reboot(arg)调用内核中的sys_reboot,具体流程如下:reboot——>sys_reboot()——>kernel_power_off()——>machine_power_off()——>pm_power_off();pm_power_off 是一个函数指转载 2012-05-04 11:52:31 · 4725 阅读 · 1 评论 -
分析Android 根文件系统启动过程(init守护进程分析)
今天开始分析Android 根文件系统启动过程。在Android系统启动时,内核引导参数上一般都会设置“init=/init”,这样的话,如果内核成功挂载了这个文件系统之后,首先运行的就是这个根目录下的init程序。这个程序所了什么呢? 我们只有RFSC(Readthe Fucking Source code)!!init程序源码在Android官方源码的system/core/ini转载 2012-10-24 15:52:57 · 1806 阅读 · 0 评论 -
Android boot.img 结构
1. Android 的boot.img 包括 boot header,kernel, ramdisk2. 首先来看看Makefile是如何产生我们的boot.img的: boot镜像不是普通意义上的文件系统,而是一种特殊的Android定制格式,由boot header,压缩的内核,ramdisk以及second stage loader(可选)组成,可以从mkbootimg.转载 2012-10-24 14:48:21 · 2211 阅读 · 0 评论