Android系统开发
文章平均质量分 76
kevin_hcy
这个作者很懒,什么都没留下…
展开
-
android启动过程和build过程
首先下载下android源码并编译,网上的资料特别多,可以参考一下这个网站http://blog.csdn.net/liaoshengjiong/archive/2009/03/04/3957749.aspx按照网站上的步骤,将android内核编译成功,如果不出意外的话,在out/target/product/generic目录下会生成三个文件,分别是ramdisk.img、sytem.img、userdata.img。这三个文件到底有什么用呢?下面开始分析一下。首先在linux终端下使用命令file r转载 2010-11-01 11:08:00 · 544 阅读 · 0 评论 -
Android系统的Binder机制之一——Service Manager
<br />Android虽然构建在Linux上面,但是在IPC(进程间)机制方面,没有利用Linux提供IPC机制,而是自己实现了一套轻量级的IPC机制——binder机制。并且Android Binder机制之上,Android框架提供了一套封装,可以实现对象代理(在本地进程中代理远程进程的对象)。本文简单分析一下Android Binder机制。Binder情景分析<br /> 一个IPC通讯我们可以理解成客户端-服务器模式,因此我们先在这里分析一下典型的Binder应用模式:<br />1、客转载 2011-04-29 14:39:00 · 1042 阅读 · 0 评论 -
Android Looper和Handler分析 .
第一次接触android应用程序(这里指的是JAVA层的UI程序,也难怪了,Google放出的API就只支持JAVA应用程序了),很难搞明白内部是如何实现的。但是,从原理上分析,应该是有一个消息循环,一个消息队列,然后主线程不断得从消息队列中取得消息并处理之。然而,google封装得太厉害了,所以一时半会还是搞不清楚到底是怎么做的。本文将分析android内的looper,这个是用来封装消息循转载 2013-09-26 19:30:44 · 950 阅读 · 0 评论 -
Android中线程通讯类Handler
handler是线程通讯工具类。用于传递消息。它有两个队列:1.消息队列2.线程队列消息队列使用sendMessage和HandleMessage的组合来发送和处理消息。线程队列类似一段代码,或者说一个方法的委托,用户传递方法。使用post,postDelayed 添加委托,使用 removeCallbacks移除委托。由上面的特性我们可以简单看出handler类似转载 2013-09-27 10:04:15 · 5300 阅读 · 0 评论 -
Android系统启动过程浅谈
一、 系统启动流程简介在Linux内核启动后,init 1(1号进程)将作为第一个用户空间(Linux虚拟内存的大小为232(在32位的x86机器上),内核将这4G字节的空间分为两部分。最高的1G字节供内核使用,称为“内核空间”。而较低的3G字节供各个进程使用,称为“用户空间”。)的进程来启动Android系统,该启动流程可以分为如下5个阶段,如下图: (1) 启动准备:该阶段包括转载 2014-02-18 09:04:44 · 4171 阅读 · 0 评论 -
Android Framework 分析
1.目录树/framework/base/api /framework/base/awt/framework/base/build/framework/base/camera 关 于camera的HAL接口库。最终生成native共享库libcamera.so ,编译时根据是否定义USE_CAMERA_STUB来决定系统是否有Camera硬件支持。若没有实际的C转载 2014-02-18 19:20:17 · 4697 阅读 · 0 评论 -
Android 操作系统的内存回收机制(转载)
Android APP 的运行环境 Android 是一款基于 Linux 内核,面向移动终端的操作系统。为适应其作为移动平台操作系统的特殊需要,谷歌对其做了特别的设计与优化,使得其进程调度与资源管理与其他平台的 Linux 有明显的区别。主要包含下面几个层次:Application FrameworkApplication Framework 将整个操作系统分隔转载 2014-06-07 10:30:12 · 5442 阅读 · 0 评论 -
Android内存管理原理
一般来说,程序使用内存的方式遵循先向操作系统申请一块内存,使用内存,使用完毕之后释放内存归还给操作系统。然而在传统的C/C++等要求显式释放内存的编程语言中,记得在合适的时候释放内存是一个很有难度的工作,因此Java等编程语言都提供了基于垃圾回收算法的内存管理机制:垃圾内存回收算法常见的垃圾回收算法有引用计数法(Reference Counting)、标转载 2014-06-08 23:15:11 · 5171 阅读 · 0 评论 -
Android属性(property)机制
1. 属性简介Android里有很多属性(property),每个属性都有一个名称和值,他们都是字符串格式。这些属性定义了Android系统的一些公共系统属性。比如:[dalvik.vm.dexopt-flags]: [m=y][dalvik.vm.heapgrowthlimit]: [48m][gsm.operator.iso-country]: [][g转载 2015-11-05 10:39:53 · 4789 阅读 · 0 评论 -
Android输入法框的梳理
<br />/frameworks/base/services/java/InputMethodManagerService.java<br />这是整个系统当中,一切与输入法有关的地方的总控制中心。它通过管理下面三个模块来实现系统的输入法框架。<br />1、/frameworks/base/services/java/WindowManagerService<br />负责显示输入法,接收用户事件。<br />2、/frameworks/base/core/java/android.inputmetho转载 2011-04-20 10:11:00 · 1873 阅读 · 0 评论 -
Android 按键消息path
<br />下面是我自己总结的android中的按键消息传递path, 首先我们可以来看一下general flow:<br /> <br /> 如上图所示,Window manager service会起两个Thread,一个线程负责从kernel读取消息到keyQ队列;另外一个线程负责将keyQ队列中的消息分发给应用程序。具体的path见下面的几个图,大家可以参考几个图对着代码看一遍,就理解了。<br /><br /><br /><br /><br />转载 2011-04-15 11:01:00 · 976 阅读 · 0 评论 -
分析Android 根文件系统启动过程(init守护进程分析)
今天开始分析Android 根文件系统启动过程。在Android系统启动时,内核引导参数上一般都会设置“init=/init”, 这样的话,如果内核成功挂载了这个文件系统之后,首先运行的就是这个根目录下的init程序。这个程序所了什么呢? 我们只有RFSC(Read the Fucking Source code)!!init程序源码在Android官方源码的system/core/init中,main在init.c里。我们的分析就从main开始。init:(1)安装SIGCHLD信转载 2010-11-03 10:21:00 · 564 阅读 · 0 评论 -
NDK使用心得
NDK使用心得昨天开始弄NDK编程,做之前觉得很简单,网上的例子和说明也一大堆,但直到今天才搞定,其中遇到的种种问题把它记录下来供以后查看,1.如何通过NDK编译JNI的so文件供android应用使用?首先在ndk开发目录的samples文件夹下面建myjni文件夹,在myjni文件夹下建jni文件夹用来放生成so代码的myjni.c文件和android.mk文件,myjni.c文件为编译.so的文件,内容如下#include #include #include #include //这个地方需要注意,原创 2011-03-04 16:55:00 · 3714 阅读 · 0 评论 -
加快Android单模块编译
转载时请注明出处和作者联系方式文章出处:http://www.limodev.cn/blog作者联系方式:李先静 习惯了automake之后,再用Android的编译系统,就是感觉不爽。编译一个小模块也等上几分钟,有次实在受不了,看了一下它的实现,发现它对任何一次编译都要查找所有的Android.mk:subdir_makefiles=$(shell cat build/tools/Android.mk.cache)我把build/core/main.mk修改了一下,增加了一个cache:subdir_ma转载 2011-02-22 14:15:00 · 676 阅读 · 0 评论 -
Android 2.2 源码结构分析
Android 2.2 |-- Makefile |-- bionic (bionic C库) |-- bootable (启动引导相关代码) |-- build (存放系统编译规则及generic等基础开发包配置) |-- cts (Android兼容性测试套件标准) |-- dalvik (dalvik JAVA虚拟机) |-- development原创 2011-02-22 14:20:00 · 985 阅读 · 0 评论 -
编译SDK
9、编译SDK 直接执行make是不包括make sdk的。make sdk用来生成SDK,这样,我们就可以用与源码同步的SDK来开发 Android了。 1)修改/frameworks/base/include/utils/Asset.h ‘UNCOMPRESS_DATA_MAX = 1 * 1024 * 1024’ 改为 ‘UNCOMPRESS_DATA_MAX = 2 * 1024 * 1024’ 原因是Eclipse编译工程需要大于1.3M的buffer 2)编译ADT。 注意,我们是转载 2011-02-22 15:13:00 · 4645 阅读 · 0 评论 -
Android的编译系统
一、Makefile的主要流程以下主要流程都在build/core/main.mk里安排。l 初始化相关的参数设置(buildspec.mk、envsetup.mk、config.mk)l 检测编译环境和目标环境l 决定目标productl 读取product的配置信息及目标平台信息l 清除输出目录l 检查版本号l 读取Board的配置l 读取所有Module的配置l转载 2011-02-22 11:27:00 · 1954 阅读 · 0 评论 -
Android事件处理
Android事件处理Init-----------zygote---------system-server-------------------windosmanager ------------------------------------------------------------ UEventObserver ------------------------------------------------------------ InputDeviceRead ---------------转载 2011-03-25 08:25:00 · 724 阅读 · 0 评论 -
android启动过程详解(代码)
Zygote进程在init.rc中有service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-serverzygote进程通过init进程启动,zygote进程就奠定了Android的基础。从zygote的main()开始,见/frameworks/base/cmds/app_process/app_main.cppint main(int argc, const char * const argv原创 2011-03-30 15:13:00 · 2457 阅读 · 0 评论 -
MTK cmdline传递过程
1. Preloader部分 Platform.h(mediatek\platform\[$platform]\preloader\src\drivers\inc\platform.h) 在如下结构体中加cus_param变量,如果是char型,请注意4byte对其: typedef struct { u32 magic; boot_mode_t mode;原创 2015-11-19 11:37:41 · 6890 阅读 · 0 评论