
Android系统框架学习
andyhuabing
这个作者很懒,什么都没留下…
展开
-
android系统移植(一) 总述
一、先说明一下平台要求平台硬件要求•RAM: 512MB•FLASH:256MB•CPU: ARM平台指令集要求 ARM9 Family以上,ARMv5以上指令集, mips平台指令集要求 MIPS32 revision 2 - Little-Endian, O原创 2011-07-08 16:58:34 · 13548 阅读 · 3 评论 -
Android Service 两种编写及应用
最近在编写系统级service,借此也同时编写了java应用级service,感觉流程有点重要,编写还是没有太大问题。很多情况下,一些与用户很少需要产生交互的应用程序,我们一般让它们在后台运行就行了,而且在它们运行期间我们仍然能运行其他的应用。为了处理这种后台进程,Android原创 2011-07-29 14:35:56 · 2901 阅读 · 0 评论 -
android编译错误(二)
将一些常见错误记录下来,以便自已查看使用,节省去搜索的时间1、stlport的问题解决external/stlport/src/num_put_float.cpp: In function 'bool std::priv::_Stl_is_nan_or_inf(d转载 2011-07-30 16:52:05 · 2500 阅读 · 0 评论 -
android编译产生的apk或so不安装
上周六碰到android在线编译系统中的几个问题,记录如下:问题1:问题描述:将java应用放在packages\apps下面一起编译,单独进入应用mm编译,可以install安装到out下面的system/app下面,但根目录上make却不会原因:LOCAL_M原创 2011-08-01 10:48:19 · 7914 阅读 · 1 评论 -
Android系统与数字电视之我见
Android系统与数字电视之我见本文将与您一起探讨如下的话题1、数字电视的现状与未来2、移植到数字电视面临的挑战数字电视的现状与未来数字电视使用不同的操作系统,中间件,CA及应用程序,使得整个软件架构出现极大的差异。面对用户不断升级的需求,消费者不仅可收看节目,还可将电视作为登录浏览器的入口平台,搜索更多节目内容,安装各种应用程序,并自行开发、共享各种程序原创 2011-11-16 10:20:07 · 3522 阅读 · 6 评论 -
Android深入浅出之Binder机制
这篇文章对于binder机制分析比较到位,记录一下:原文地址: http://www.cnblogs.com/innost/archive/2011/01/09/1931456.html一 说明 Android系统最常见也是初学者最难搞明白的就是Binder了,很多很多的Service就是通过Binder机制来和客户端通讯交互的。所以搞明白Binder的话,在很大程度上就能转载 2011-11-23 15:56:51 · 2065 阅读 · 1 评论 -
Android 2.3 input输入事件处理
linux内核提供了一个Input子系统来实现的,Input子系统会在/dev/input/路径下创建我们硬件输入设备的节点,一般情况下在我们的手机中这些节点是以eventXX来命名的,如event0,event1等等,可以利用EVIOCGNAME获取此事件结点名称。这就是android中对于input事件处理数据的来源点,至于驱动写入数据这块就不说了。首先,简而言之的介绍一下android事原创 2011-11-24 11:44:54 · 8543 阅读 · 7 评论 -
Sensor 代码流程分析
本文针对android 2.3 版本的sensor从应用到hal层接口进行逐层分析。4.0的代码也拿到了,不过还没有来得及进行分析。一、应用程序,一般的应用程序写法:package com.sensors.testSensor; import android.app.Activity;import android.os.Bundle; import android.ut原创 2011-11-24 17:09:23 · 9143 阅读 · 6 评论 -
写binder客户端与服务端碰到的编译错误
调试C++使用binder进行两个进程通讯的代码编译错误,记录下来给朋友们作为参考:1、BpBInder端客户端函数未定义,如target SharedLib: libgui (out/target/product/generic/obj/SHARED_LIBRARIES/libgui_intermediates/LINKED/libgui.so)out/target/prod原创 2011-11-28 11:50:47 · 5363 阅读 · 0 评论 -
Tinyxml简单使用法
1、概要介绍一下:尝试了tinyxml,rapidxml,libxml2等3中第3方库,前两者相对较为轻量级,libxml2非常完善,强大。这是网上总结出来的优缺点:1、tinyxml当节点内容的空而使用GetText()方法时候会出错2、rapidxml编码问题不是特别好3、libxml2对内存释放要求较高,否则时常遇到core dump.TinyXML是一个原创 2011-11-10 17:35:58 · 9505 阅读 · 0 评论 -
Android2.3触摸屏功能详解
Android2.3触摸屏功能详解手机设备上常用触摸屏进行用户操作,非常方便快捷,而且正好有个项目上用到这个设备,所以就花时间研究了一下。好了,还是老规则:大体了解概念先,细节线索找代码:InputReader.cpp 中有针对单点触摸SingleTouchInputMapper及多点触摸MultiTouchInputMapper的处理代码,这两个类都继承自TouchInputMa原创 2011-12-19 21:36:40 · 8326 阅读 · 5 评论 -
Skia 的图像编解码部分
今天在调试一个png图片时,发现解码出来的效果很差,显示出一个个模糊块,后来查看代码发现原来使用的解码是RGB565,所以就查证一下代码,修改成ARGB8888解码及输出,希望对需要的朋友有所帮助。Skia 是 Google一个底层的图形、图像、动画、SVG、文本等多方面的图形库,是 Android 中图形系统的引擎。Skia 作为第三方软件放在 external 目录下: external/原创 2011-12-13 18:08:23 · 7146 阅读 · 4 评论 -
Android4.0 与 android2.3 差异
自从2011-10-19 google公司发布了android4.0版本,下载源码后,一直没有时间看下,正好需要看下JoyStick(游戏手柄)框架代码,所以两者代码进行对比浏览看看。Android系统差不多每半年一次的升级步伐,每代Android系统都以甜点命名,1.5版叫做Cupcake(纸杯蛋糕)1.6版为Donut(甜甜圈)2.0/2.1叫Éclair(闪电泡芙,一原创 2011-12-22 19:25:35 · 13541 阅读 · 1 评论 -
android 图形系统加速学习系列 (一)
Android 系统使用OpenGL的标准接口来支持3D图形功能,包含框架层及本地代码两个主要部分,这里先介绍本地代码部分。 源代码目录为:frameworks\base\opengl\libs 在这个代码路径下面会编译生成三个库: libEGL , libGLESv1_CM.so , libGLESv2.so ,那么这三个库之间是个什么关系呢? 首先说明一下主要实现的功能:原创 2012-01-04 19:55:05 · 12118 阅读 · 2 评论 -
android2.3-adb源码分析
android2.3-adb源码分析ADB是android debug bridge的缩写,负责计算机与Android设备的几乎所有通信和协作,可以认为是连接两者的桥梁。其完整源代码路径:system\core\adb1、首先查看其Android.mk文件,确认会生成哪此文件。可执行进程由两部分组成:LOCAL_MODULE := adbin原创 2012-01-11 18:19:47 · 10820 阅读 · 3 评论 -
android 图形系统加速学习系列 (二)
上一节介绍下android 2D&3D库加载的过程,节绍下软件实现的libagl库并重点介绍一下copybit 2D图形加速部分。如果处理器只有2D硬件加速而没有3D硬件加速,则可以利用opengl中的libagl,实现封装在libagl里的copybit,因为相对3D API来说,这个模块的封装基本是做好的,只要去实现一个copybit HAL即可;如果处理器2D/3D硬件加速均原创 2012-01-06 17:54:16 · 7218 阅读 · 0 评论 -
android Camera 数据流程分析
上一篇文章 android Camera --- 架构简介 地址: http://blog.csdn.net/andyhuabing/article/details/7229557 对其层次结构进行了简要的介绍,这篇文章主要针对其数据流程进行分析。Camera一般用于图像浏览、拍照和视频录制。这里先对图像浏览和拍照的数据流进行分析,后面再对视频电话部分进行分析。原创 2012-02-03 15:46:15 · 22415 阅读 · 15 评论 -
android2.3 鼠标输入集成
Android系统对鼠标的支持并不好,因为Android系统原本是为手机量身定做的,手机系统基本上是不需要鼠标的。但是随着Android系统移植到其他领域,对鼠标的支持也越来越有意义。在android中鼠标的绘制代码在:\frameworks\base\services\java\com\android\server\WindowManagerService.java ,原创 2011-12-13 11:31:26 · 6542 阅读 · 17 评论 -
android Camera 架构简介
目前需要做一个语音通话及视频聊天功能开发,主要分为音频及视频两个部分,必然会涉及到Camera及AudioFlinger部分,对于显示部分又会涉及到SurfaceFlinger部分,因此需要一步步的进行学习并确认设计是否合理.这篇文章主要针对Camera作个简要的介绍,了解需要开发的各个环节。摄像头系统提供的功能如下几个方面:a、预览功能previewb、视频儿取功能原创 2012-02-02 20:50:13 · 21826 阅读 · 5 评论 -
android键盘输出增加按键码
开发过程中免不得需要增加或减少按键码值,在android2.3系统事件处理部分,主要向上层提供统一的按键码(KeyCode),这个按键码是一个整数,在上层的JAVA程序中主要通过这个值来判断系统的实现。关于输入事件的处理前面已经讲过,请参考:http://blog.csdn.net/andyhuabing/article/details/7006688 这里主要讲android原创 2011-12-31 18:04:10 · 8050 阅读 · 3 评论 -
android native service编写及两个服务进程通讯
题外话:由于同事咨询,口头讲解的话1对1,但不方便多方传播及继承性,因此特意写此文章讲解一番。1、android service简要说明:Android Service :又称为 Java Service ,是实现在框架层里的 Service ,使用Java语言编写。Native Service :又称为 System Service ,是实现在 Runtime 层里的 Ser原创 2012-02-09 12:28:43 · 10540 阅读 · 4 评论 -
跨进程C/S native service服务编写
纯Native的Service表示代码都在Native层,前面的文章讲到了两个service进程通过这binder中的onTransacton进行通讯,而这篇文章主要讲利用C/S结构的方法,利用IInterface进行相互访问。以具体代码为例:test.cpp :using namespace android;int main(int argc, char** argv)原创 2012-02-09 21:31:31 · 3632 阅读 · 3 评论 -
JNI多个线程中使用
上一篇文章说到 JNIEnv 是一个与线程相关的变量,即线程A有一个 JNIEnv变量, 线程B也有一个JNIEnv变量,由于线程相关,所以A线程不能使用B线程的 JNIEnv 结构体变量。问题描述:一个java对象通过JNI调用DLL中一个send()函数向服务器发送消息,不等服务器消息到来就立即返回,同时把JNI接口的指针JNIEnv *env(虚拟机环境指针),和jobjec原创 2012-02-14 10:20:44 · 12180 阅读 · 2 评论 -
Android -- SurfaceFlinger 概要分析系列 (一)
图形显示整个架构是android中相当复杂的系统,涉及到众多的概念,但是非常重要,如花屏,透明,显示速度等等都与其相关,所以是必须破解的障碍,那么就深入学习吧。基本处理流程:应用程序直接与Surface交互,Surface就像是UI的画布,则APP则在Surface直接画图,最后由SurfaceFlinger进行混合所有Layer数据,在此利用OpenGL或者2D Copy原创 2012-02-14 14:52:17 · 3585 阅读 · 0 评论 -
android源码编译的小小总结
android源码相当大,全部编译会相当的花时间。其编译的主要规则就是,找到所有的 Android.mk 进行编译。一、编译流程:1、执行 source build/envsetup.sh 或者 ./build/envsetup.sh ,设定android的编译环境2、lunch 选择编译目标(硬件平台,eng或者user等)You're building on Linu原创 2012-02-14 11:05:23 · 5364 阅读 · 5 评论 -
Android -- SurfaceFlinger 合成主线程 系列 (三)
SurfaceFlinger 属于system_server进程,在system_init.cpp中利用SurfaceFlinger::instantiate()启动,在此加入到service manager中,所以本身提供service服务功能。首先看下SurfaceFlinger的类声明:class SurfaceFlinger : public Bind原创 2012-02-25 15:51:41 · 5944 阅读 · 0 评论 -
Android -- SurfaceFlinger Surface创建 系列 (二)
应用程序中的每个窗口,对应本地代码中的Surface,而Surface又对应 于SurfaceFlinger中的各个Layer,SurfaceFlinger的主要作用是为这些Layer申请内存,根据应用程序的请求管理这些 Layer显示、隐藏、重画等操作,最终由SurfaceFlinger把所有的Layer组合到一起,显示到显示器上。一、Surface的创建过程:请看如下序原创 2012-02-14 18:00:20 · 3417 阅读 · 1 评论 -
Android-- bionic介绍
Android-- bionic介绍小组人员移植ntfs-3g碰到lseek越界问题,经过查证其使用了llseek函数导致死机的问题。其实问题很简单:调用处: llseek (int, unsigned long, unsigned long, loff_t*, int);但是在android bionic中将其对应到函数lseek,其函数声明如下:off_t原创 2012-01-07 12:58:52 · 28182 阅读 · 1 评论 -
android启动--深入理解init进程
init是一个进程,它是linux系统中用户空间的第一个进程,其进程PID是1,父进程为linux系统内核的0号进程。所以其被赋予很多极其重要的职责,linux内核初始化完成后就开始执行它。代码路径:\system\core\init\init.c下面就分析一下先吧,只分析重点的函数功能:int main(int argc, char **argv){原创 2012-03-12 19:55:28 · 6318 阅读 · 0 评论 -
android系统硬件OpenGL 3D 移植
通过前面两篇文章: http://blog.csdn.net/andyhuabing/article/details/7176049http://blog.csdn.net/andyhuabing/article/details/7177757大家应该对于OpenGL的框架层有个完整的理解了,而这一篇文章将是基本总结android系统中对于OpenGL的处理流程,这也是原创 2012-03-12 16:45:06 · 6239 阅读 · 3 评论 -
android启动--深入理解zygote (II)
上一节说到 使用 Zygote.forkSystemServer 利用 fork 生成 SystemServer进程,那个这个进程到底干了哪些事情呢?下面从 handleSystemServerProcess 处理流程开始讲解代码片段如下:/* Request to fork the system server process */pid = Zygote.forkSy原创 2012-03-14 09:54:57 · 2531 阅读 · 0 评论 -
Activity的概念
Activity相关概念 说明:翻译自google android开发手册,错误在所难免,欢迎指正。 一个activity相当于手机的一屏,它能够获得焦点,用户一般都在它上面操作。几乎所有的activity都跟用户打交道,所以Activity类主要负责创建一个窗口,而你可以通过调用setContentView(View)方法在Activity上放置你的UI组件。Activity除了通常转载 2012-03-14 16:29:55 · 3019 阅读 · 0 评论 -
Intent的概念
一、 Intent 作用 Intent 是一个将要执行的动作的抽象的描述,一般来说是作为参数来使用,由Intent来协助完成android各个组件之间的通讯。比如说调用startActivity()来启动一个activity,或者由broadcaseIntent()来传递给所有感兴趣的BroadcaseReceiver, 再或者由startService()/bindservice()来启动一转载 2012-03-14 16:31:49 · 1661 阅读 · 0 评论 -
android启动--深入理解启动HOME
ok, 通过前面讲解,系统已经从 init 进程 --> 启动 zygote --> 启动 SystemServer --> ??? 那么现在应该启动什么呢?从前面分析来看,基本的native及 java 世界的环境都已建立完成,那么还差一个HOME主页显示? 可视化系统下面即将开始了。在讲解 Zygote 中,有一个函数:main @ frameworks\base\cor原创 2012-03-14 17:34:14 · 7439 阅读 · 0 评论 -
android启动--深入理解zygote
前一篇文章介绍了init进程的启动过程,其中就有解析init.rc脚本,而根据其内容配置启动了很多重要的服务:Servicemanager和zygote进程就奠定了Android的基础,建立了真正的android空间。 进程名称 进程路径zygote /system/bin/app_processservicemanager原创 2012-03-13 18:05:30 · 4710 阅读 · 0 评论 -
Android 应用五大核心块 --- Service后台服务
Android 应用五大核心块 --- Service后台服务概念:Service:后台服务,用于将一些计算或常用系统通用功能放在一个独立的进程中进行处理,这样主进程可以全力并快速处理界面响应,提高用户体验效果。下面以 packages\apps\Phone 应用举例说明:编写应用时定义:AndroidManifest.xml Emergen原创 2012-03-20 18:28:54 · 3028 阅读 · 0 评论 -
Android 应用设计--- 无边界设计理念
看了 maxleng的大作而记录如下,后面会将行具体的代码验证这些立论: Android提供给开发程序员的概念空间中Application是个很虚的概念,仅仅是Activity及Service之类组件的上下文描述而已。Application并不是Android的核心概念,而Activity才是Android的核心概念。android系统完全利用组件化进行构建及设计。原创 2012-03-21 08:57:10 · 2216 阅读 · 3 评论 -
android2.3权限问题
android2.3相对于2.2来说,有个最大的变化就是权限管理模块的更新,导致明明有root权限,但是无法执行很多底层命令和api,举例:在终端上su到root用户,执行ls等命令都会报没有权限。该问题引发的问题包括:A 大多数PC客户端(包括91助手、豌豆夹等)都无法自动安装daemon程序B 很多需要root权限执行的程序无法正常运行那么就到底是什么原因导致的呢? 这些权原创 2011-12-01 11:40:32 · 7305 阅读 · 6 评论 -
Android 属性系统设计分析
Android 属性系统设计分析前面已经讲过 "Android 属性系统 Property service 设定分析" ,请参考这篇博文主要讲解其属性系统的设计原理与思想方法,前一篇是实践,这一篇是理论,本质性原理。首先看下整个属性系统结构图:属性读取进程(property consumer)把这块共享内存映射到自己的进程空间,然后直接读原创 2012-03-29 14:06:46 · 4530 阅读 · 0 评论 -
Android 权限控制代码分析
Android 权限控制代码分析前在文章介绍过android系统管理层次:http://blog.csdn.net/andyhuabing/article/details/7030212 ,这里就核心代码分析一下android系统充分利用了linux的用户权限管理方法,所以如果需要移植到其它系统,这一块也是一个相当不小的工作量。那么android系统到底是如何使用这些的有利原创 2012-04-16 11:02:07 · 22458 阅读 · 10 评论