
Android移植
文章平均质量分 89
mr_raptor
北京同远天下创始人,专注于企业服务,企业系统解决方案,物联网,智慧社区,产品有众狐客服系统,众狐邮箱验证系统,著有《深入浅出嵌入式底层软件开发》北航出版社
展开
-
【优快云2012年度博客之星】需要您的一票,感谢大家的支持
从去年11月份,本人一直将自己工作和学习经验写成博文分享给大家,本人有幸被选为2012年88位候选博客之星,如果各位IT‘er喜欢我的博文,请投我一票,做为小小的鼓励,当然了,投票及转发微博有机会得充值卡哦(截止日期12年12月30号) 13年1 月1 日PS: 投票已经结束,感谢大家的参与,再次感谢所有支持我的朋友们~投票地址:http://vote.blog.youkuaiyun.com/item/blo原创 2012-12-10 10:17:07 · 2697 阅读 · 4 评论 -
termios 详解
一、数据成员termios 函数族提供了一个常规的终端接口,用于控制非同步通信端口。 这个结构包含了至少下列成员: tcflag_t c_iflag; /* 输入模式 */ tcflag_t c_oflag; /* 输出模式 */ tcflag_t c_cflag; /* 控制模式 */ tcflag_t c_lflag; /* 本地模式 */ cc_t转载 2012-12-20 12:43:31 · 19503 阅读 · 0 评论 -
Android init进程启动
一、Android Init.c执行流程Android中的内核启动后,kernel会启动第一个用户级别的进程:init,它是一个由内核启动的用户级进程。内核自行启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式,完成引导进程。init始终是第一个进程。PS:可以通过:ps aux | grep init命令来查看其Pid为1。in原创 2012-07-12 23:30:38 · 14892 阅读 · 5 评论 -
深入浅出 - Android系统移植与平台开发(三)- 编译并运行Android4.0模拟器
1. 编译Android模拟器在Ubuntu下,我们可以在源码里编译出自己的模拟器及SDK等编译工具,当然这个和在windows里下载的看起来没有什么区别。编译Android模拟器的步骤和编译Android系统很相似:Ø source build/envsetup.shØ lunch sdk-engØ make sdk在每次执行make的时候,编译系统会自动的验证上次编译项和这次编译项原创 2012-09-08 07:36:46 · 13807 阅读 · 11 评论 -
深入浅出 - Android系统移植与平台开发(一)
+-------------------------------------------------++ 本系列为连载,不定期会更新 + +-------------------------------------------------+一、Android4.0系统的下载与编译Android系统的下载与编译,Google的官方网站上已经给出了详细的说明,请参照Android原创 2012-09-05 14:16:31 · 33685 阅读 · 13 评论 -
Linux3.4.0 Yaffs2文件系统移植-支持Android4.0
本文章主要针对FS100,S5PC100的Android4.0.4 Yaffs2文件系统移植过程,对于类似Android系统或类似Linux内核(版本高于2.6.35)有参考意义。本文分两部分:Nandflash驱动移植Yaffs2文件系统移植一、Nandflash驱动移植由于内核里面没有S5PC100的Nandflash驱动,所以,我们将Nandflash的驱动文件拷贝到内核目录中:将s3c_n原创 2012-12-05 12:16:51 · 6532 阅读 · 4 评论 -
深入浅出 - Android系统移植与平台开发(七)- 初识HAL
1. HAL的module与stubHAL(Hardware AbstractLayer)硬件抽象层是Google开发的Android系统里上层应用对底层硬件操作屏蔽一个软件层次,说白了,就是上层的应用不用关心底层硬件具体如何工作的,只要向上层提供一个统一的接口即可,这种设计思想广泛的存在于当前的软件架构设计里。严格来讲,Android系统里完全可以没有HAL硬件抽象层,上层应用层可以通原创 2012-10-14 13:35:06 · 28993 阅读 · 7 评论 -
深入浅出 - Android系统移植与平台开发(十三) - Sensor HAL框架分析之三
让我们来看看SensorManager的代码SensorManager框架层代码@frameworks/base/core/java/android/hardware/SensorManager.javapublic SensorManager(Looper mainLooper) { mMainLooper = mainLooper; // 上面说了...原创 2012-10-30 16:12:44 · 16124 阅读 · 8 评论 -
深入浅出 - Android系统移植与平台开发(十二) - Sensor HAL框架分析之二
1.1 Sensor应用程序框架这部分对于上层写应用的朋友来比较熟悉,我们通过一个简单的应用来分析框架层和底层的实现。通常编写一个传感器的应用程序有以下步骤:l 通过调用Context.getSystemService(SENSOR_SERVICE)获得传感器服务,实现返回的是封装了SensorService的SensorManager对象l 调用SensorManager...原创 2012-10-19 16:41:58 · 12286 阅读 · 0 评论 -
深入浅出 - Android系统移植与平台开发(四)- Android启动流程
一、Android init进程启动还是从Linux的启动开始吧。Linux被bootloader加载到了内存之后,开始运行,在初始化完Linux运行环境之后,挂载ramdisk.img根文件系统映像,运行里面的init程序,这也是Linux的第一个用户程序,其pid为1。下面的文章是作者关于init进程启动的描述。http://blog.youkuaiyun.com/mr_raptor/article/de原创 2012-09-22 10:07:25 · 15610 阅读 · 2 评论 -
深入浅出 - Android系统移植与平台开发(六)- 为Android启动加速
Android的启动速度一直以来是他的诟病,虽然现在Android设备的硬件速度越来越快,但是随着新版本的出现,其启动速度一直都比较慢,当然,作为程序员,我们是可以理解的,智能手机本身就要启动很多服务来支持应用的功能,并且Android系统大部分还是使用的Java语言编写的,必然要运行在Java虚拟机里,这也决定了它运行速度和启动速度都相对较慢。同时,Android系统为了在执行用户应用程序时提高原创 2012-10-14 13:20:26 · 20811 阅读 · 6 评论 -
深入浅出 - Android系统移植与平台开发(二) - 准备Android开发环境
编译Android源码关于android系统的编译,Android的官方网站上也给出了详细的说明。http://source.android.com/source/building.html Ø 初始化编译环境切换到Android源码目录:$ cd WORKING_DIRECTORY执行下面命令,加载编译过程中用到的命令、环境变量:$ source build/envsetup.shØ 选择编原创 2012-09-07 12:20:25 · 32304 阅读 · 8 评论 -
深入浅出 - Android系统移植与平台开发(十一) - Sensor HAL框架分析之一
1. Sensor的概念Sensor即传感器,在当前智能手机上大量存在:G-Sensor、LightsSensor、ProximitySensor、TemperatureSensor等,其作为Android系统的一个输入设备,对于重视用户体验的移动设备来说是必不可少的。Sensor虽然是一个输入设备,但是它又不同于触摸屏,键盘,按键等这些常规的输入设备,因为Sensor的数据输入从传...原创 2012-10-19 16:37:53 · 25386 阅读 · 27 评论 -
Android编译系统详解(三)
++++++++++++++++++++++++++++++++++++++++++本文系本站原创,欢迎转载! 转载请注明出处:http://blog.youkuaiyun.com/mr_raptor/article/details/7540730++++++++++++++++++++++++++++++++++++++++++ Android编译系统详解(一):http://blog.csdn.n原创 2012-05-09 12:43:05 · 22228 阅读 · 13 评论 -
深入浅出 - Android系统移植与平台开发(五)- 定制手机模拟器ROM
一、 修改化定制Android4.0系统 Android系统启动时,先加载Linux内核,在Linux的framebuffer驱动里可以定制开机界面,Linux内核启动成功后,挂载根文件系统,启动Android系统,这个时候设备屏幕上开始出现滚动的Android动画,等全部的Android服务启动完毕之后,开始启动Android的HOME界面,也就是桌面。而在这个过程中,我们可以将开机界面和And原创 2012-09-22 10:32:26 · 18366 阅读 · 3 评论 -
深入浅出 - Android系统移植与平台开发(十四) - Sensor HAL框架分析之四
Sensor本地封装类SensorDeviceSensorDevice是在本地代码中SensorService对Sensor设备的抽象类型封装,它封装了传感器硬件的硬件操作,该类继承了Singleton类,通过getInstance方法获得单例模式设备操作对象:@frameworks/base/services/sensorservice/SensorDevice.hclas...原创 2012-11-08 00:03:29 · 13562 阅读 · 11 评论 -
深入浅出 - Android系统移植与平台开发(七)- Android系统的启动
第三章、Android系统的启动本章节主要介绍Android系统从init进程启动开始到Android的桌面启动的全部过程。本章节主要内容:Ø Android init进程启动Ø Android本地守护进程启动Ø Zygote进程的启动及SystemServer进程的创建Ø Android系统服务的启动Ø Android桌面HOME的启动3.1 Android init进程启动Linux被boot原创 2014-06-11 21:22:26 · 9684 阅读 · 2 评论 -
深入浅出 - Android系统移植与平台开发(九)- Android系统system_server及Home启动
3.3 Zygote守护进程与system_server进程Android的运行环境和Java运行环境有着本质的区别,在Android系统中每个应用程序都是一独立的进程,当一个进程死掉时,不会影响其它进程的运行,这能极大的保证Android系统的稳定。 Zygote守护进程的启动是Android运行环境启动的开始阶段, Zygote进程通过Linux系统特有的Fork机制分裂克隆出完全相同的运行环原创 2014-06-11 21:46:07 · 10473 阅读 · 0 评论 -
android 添加新的键值,自定义按键
在android中,上层可使用的键值默认情况下是92个,从0-91;一般情况下,这些键值是够用的,但是如果想扩充的话,还是需要添加新的键值的,那么如何将一个新的键值从驱动的设置映射到上层,使应用可以对我们自定义的键值进行相应的处理呢? 对keypad来说,涉及到的文件有以下几个: 1,/vendor/qcom/7k_ffa_keypad.kl原创 2014-06-13 10:22:22 · 12116 阅读 · 2 评论 -
深入浅出 - Android系统移植与平台开发(八)- Android系统的本地服务
3.2 Android本地守护进程由上节可知,最后一个Action boot的最后一个Command为class_startdefault,用来启动所有class为default的Service,其实在init.rc里定义的Service其class类别都没有定义,都使用default,这也意味着所有的Service都会被class_startdefault命令启动,下面列表了Android2.3原创 2014-06-11 21:36:24 · 7041 阅读 · 2 评论 -
深入浅出 - Android系统移植与平台开发(十)- Android编译系统与定制Android平台系统
第四章、Android编译系统与定制Android平台系统 4.1Android编译系统Android的源码由几十万个文件构成,这些文件之间有的相互依赖,有的又相互独立,它们按功能或类型又被放到不同目录下,对于这个大的一个工程,Android通过自己的编译系统完成编译过程。4.1.1 Android编译系统介绍Android和Linux一样,他们的编译系统都是通过Makefile工具来组织编译源码原创 2014-06-11 21:51:01 · 13924 阅读 · 0 评论 -
深入浅出 - Android系统移植与平台开发(十一)- Android系统的定制
4.3定制Android平台系统通常产品厂商在拿到Android源码后会在Android源码基础上进行定制修改,以匹配适应自己的产品,从本节开始,我们从最原始的Android源码系统里一步一步定制出自己的Android系统。本节主要内容包含:根据Android源码,添加新产品编译项,定制系统启动界面和文字,定制系统启动动画和声音,定制系统桌面。4.3.1 添加新产品编译项Android系统的源代码原创 2014-06-11 22:01:06 · 70307 阅读 · 3 评论 -
深入浅出 - Android系统移植与平台开发(九)- JNI介绍
JNI是在学习Android HAL时必须要面临一个知识点,如果你不了解它的机制,不了解它的使用方式,你会被本地代码绕的晕头转向,JNI作为一个中间语言的翻译官在运行Java代码的Android中有着重要的意义,这儿的内容比较多,也是最基本的,如果想彻底了解JNI的机制,请查看:http://docs.oracle.com/javase/1.5.0/docs/guide/jni/spec/desi原创 2012-10-17 13:44:43 · 18117 阅读 · 7 评论 -
关于Android import-module 和NDK_MODULE_PATH
=========================== 一、将NDK代码模块化 二、导出一个预编译库===========================一、将NDK代码模块化Android module paths (sharing code made easy): Android模块路径(方便共享代码):===========================================翻译 2015-10-21 00:20:23 · 6542 阅读 · 0 评论 -
深入浅出 - Android系统移植与平台开发(十二)- Android JNI机制
第五章、JNI机制4.1 JNI概述 由前面基础知识可知,Android的应用层由Java语言编写,Framework框架层则是由Java代码与C/C++语言实现,之所以由两种不同的语言组合开发框架层,是因为Java代码是与硬件环境彻底“隔离”的跨平台语言,Java代码无法直接操作硬件。比如:Android系统支持大量传感器,Java运行在虚拟机中,无法直接得到传感器数据,而Android系统基于原创 2014-06-11 22:05:37 · 16914 阅读 · 3 评论 -
深入浅出 - Android系统移植与平台开发(六)- 搭建基于Linux的Android开发环境
2.4搭建Android SDK开发环境上一节我们讲解了如何下载、编译Android系统及Linux内核,接下来,讲解如何搭建Android SDK开发环境,包括Eclipse下载安装、ADT插件安装、Framework源码级调试、定制Android系统等相关知识。2.4.1 下载、安装Eclipse说明:当前新的SDK开发环境Google采用了ADT Bundle,如果为了方便安装和原创 2014-03-11 11:55:28 · 15801 阅读 · 6 评论 -
深入浅出 - Android系统移植与平台开发(十) - led HAL简单设计案例分析
通过前两节HAL框架分析和JNI概述,我们对Android提供的Stub HAL有了比较详细的了解了,下面我们来看下led的实例,写驱动点亮led灯,就如同写程序,学语言打印HelloWorld一样,如果说打印HelloWorld是一门新语言使用的第一声吆喝,那么点亮led灯就是我们学习HAL的一座灯塔,指挥我们在后面的复杂的HAL代码里准确找到方向。 LedHAL实例架构上图描述了我们Led实例原创 2012-10-17 17:35:37 · 19617 阅读 · 19 评论 -
Android系统访问串口设备
在常见的嵌入式外设中,串口通信是经常使用的一种通信机制,本篇文章给你带来,如何在Android系统中实现对串口设备的访问。在Android中如何访问底层Linux的设备驱动,必然要用到HAL,即:硬件抽象层。关于HAL的概念及框架分析,请查看作者的下面几篇博文。 > 深入浅出 - Android系统移植与平台开发(七)- 初识HAL http://blog.youkuaiyun.com/mr_raptor原创 2014-03-13 11:44:56 · 44070 阅读 · 7 评论 -
深入浅出 - Android系统移植与平台开发(三)- 配置Vmware网络
2.1.3 VMware网络配置VMware软件的强大之处在于它能够保证虚拟机和宿主机平等并列运行,并且让二者进行网络通信,而我们在开发Android系统应用时会使用到网络,将来做Android系统移植时更需要网络的支持,因此VMware的网络配置对开发者非常重要。Ø 宿主机网络接口:在安装完VMware软件后,在宿主机的网络连接里自动创建了三个虚拟网卡:VMnet0、VMnet1和VMnet8原创 2013-05-17 16:49:10 · 11696 阅读 · 8 评论 -
深入浅出 - Android系统移植与平台开发(二)- 安装Vmware虚拟机及Ubuntu12.04
第一章、Android源码开发环境搭建本章节主要讲解如何搭建基于Ubuntu的Android开发环境,为后面章节的内容讲解做铺垫。本章节主要内容:l 安装VMware虚拟机软件l 安装Ubuntu操作系统l VMware网络配置l VMware与主机数据共享l VMware添加新硬件l JDK安装l 安装Android编译工具l 下载Android源码2.1搭建主机虚拟机环境And原创 2013-05-17 16:38:29 · 12242 阅读 · 1 评论 -
深入浅出 - Android系统移植与平台开发(一)
写在前面的 这是我最近两年的Android开发的经验总结,断断续续的写了几个月了,欢迎大家砖头,有不对的地方,或需要改进的地方,请指出来,先贴出来目录来看看。第一章、 概述... 51.1 Android 操作系统介绍.... 51.2 Android软件架构介绍.... 61.3 Android子系统介绍.... 71.原创 2013-05-17 16:25:44 · 23486 阅读 · 11 评论 -
深入浅出 - Android系统移植与平台开发(四)- 搭建Linux编译环境
Android的源码开发可以在MacOS上或Ubuntu系统上,目前不支持在Windows下进行源码开发,在Ubuntu上建立开发环境的步骤如下:Ø 建立Linux编译环境Ø 安装JDKØ 安装编译必备程序包Ø 下载Android源码及Linux内核注:本书中使用的是针对Android2.3开发环境,并没有使用最新Android版本,原因其一是,Android版本升级比较频繁,原创 2014-03-10 16:53:10 · 16548 阅读 · 3 评论 -
深入浅出 - Android系统移植与平台开发(五)- 编译Android源码
2.3编译Android源码Android源码体积非常庞大,由Dalvik虚拟机、Linux内核、编译系统、框架代码、Android定制C库、测试套件、系统应用程序等部分组成,在编译Android源码之前,必须要先掌握Android源码的组成。2.3.1Android源码目录结构在Android源码中,按照不同功能代码被放在不同的目录下:目录描述原创 2014-03-10 17:09:30 · 27000 阅读 · 1 评论 -
深入浅出 - Android系统移植与平台开发(八)- HAL Stub框架分析
1. HAL Stub框架分析HAL stub的框架比较简单,三个结构体、两个常量、一个函数,简称321架构,它的定义在:@hardware/libhardware/include/hardware/hardware.h@hardware/libhardware/hardware.c/* 每一个硬件都通过hw_module_t来描述,我们称之为一个硬件对象。你可以去“继承”这个hw_原创 2012-10-15 20:18:27 · 25835 阅读 · 20 评论 -
深入浅出 - Android系统移植与平台开发(十三)- Android的对象管理
第六章、Android的对象管理在Java中,不再使用的对象会通过gc机制来自动回收,而Android系统运行时库层代码是由C++编写的,在C++中创建的对象通常使用指针来操作,一旦使用不当,轻则造成内存泄漏,重则造成系统崩溃。不过在Android源码实现中,它为我们提供了智能指针来对C++对象进行管理,这使得程序员不再需要关注对象的生命周期、对象是否已经释放。本章主要内容如下:l 智能指针l R原创 2014-06-11 22:11:03 · 7664 阅读 · 1 评论 -
我与《深入浅出嵌入式底层软件开发》
++++++++++++++++++++++++++++++++++++++++++本文系本站原创,欢迎转载! 转载请注明出处:http://blog.youkuaiyun.com/mr_raptor/article/details/6744480++++++++++++++++++++++++++++++++++++++++++ + 硬件-宝剑,软件-剑法,体系结构-内功原创 2011-09-02 21:56:44 · 23931 阅读 · 20 评论 -
V4L2驱动视频开发要点
V4L2是V4L的升级版本,为linux下视频设备程序提供了一套接口规范。包括一套数据结构和底层V4L2驱动接口。1、常用的结构体在内核目录include/linux/videodev2.h中定义struct v4l2_requestbuffers //申请帧缓冲,对应命令VIDIOC_REQBUFS struct v4l2_capability转载 2012-04-09 15:16:35 · 2474 阅读 · 0 评论 -
Android ril移植-6410开发板SIM300模块
++++++++++++++++++++++++++++++++++++++++++本文系本站原创,欢迎转载! 转载请注明出处:http://blog.youkuaiyun.com/mr_raptor/article/details/6598891++++++++++++++++++++++++++++++++++++++++++ 环境介绍: 1. ubuntu 10.10,作为原创 2011-07-11 23:36:27 · 6199 阅读 · 6 评论 -
定制你自己的Andoird桌面Launcher
如果你要定制一个Android系统,你想用你自己的Launcher(Home)作主界面来替换Android自己的Home,而且不希望用户安装的Launcher来替换掉你的Launcher.我们可以通过修改Framework来实现这样的功能。这里以Android2.1的源代码为例来实际说明。1)首先了解一下Android的启动过程。 Android系统的启动先从Zygote开始启动转载 2012-05-20 23:29:02 · 5536 阅读 · 1 评论 -
Android编译错误:You have tried to change the API from what has been previously approved.
android SDK中有些JAVA类是开放的,有些是不开放的,API同样如此。这里所谓开放的类或API,只是javadoc的范畴,并不是java中public和private,也就是说,对于源码的编译无所谓,只是对javadoc的生成有影响关于类的开放和隐藏,但是对android的上层应用有影响,因为非开放的类或API,android上层应用无法直接访问。 类或API是否开放,是通过d转载 2012-05-23 20:31:26 · 17014 阅读 · 3 评论