版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第10章
Linux及Android操作系统的编译内容10.1Android系统架构10.2Ubuntu编译环境配置10.3快速入门与预编译二进制文件10.4从源代码构建10.1Android系统架构4Android概述Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。Android操作系统最初由AndyRubin开发,主要支持手机。2005年8月由Google收购注资。2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。随后Google以Apache开源许可证的授权方式,发布了Android的源代码。第一部Android智能手机发布于2008年10月。当前版本2013年9月4日凌晨,谷歌对外公布了Android新版本Android4.4KitKat(奇巧巧克力),并且于2013年11月01日正式发布,新的4.4系统更加整合了自家服务,力求防止安卓系统继续碎片化、分散化。Linux3.14内核GregKroah-Hartman
2014-02-10宣布LinuxKernel3.14第二个候选版本发布,该版本带来了大量更新和修复,用户现在即可免费下载测试。Linuxkernel3.14-rc2版本包括驱动(GPU、media、block等)更新,架构(x86、arm64、s390)升级,系统文件改进(Btrfs、NFS、OCFS、VFS),以及bug修复等。此外,Linux官方还发布了Linuxkernels1,现均可下载。Android系统架构8Linux内核9Binder:问题应用与服务可以运行在不同的进程中,但是相互必须通信且共享数据IPC会带来巨大额外处理开销和安全10Binder:解决方法驱动程序加快进程之间的通信通过共享数据提高性能对于处理请求,每个进程有单独的线程池引用计数和对象引用进程间映射进程间同步调用IPC进程间通信(Inter-ProcessCommunication)就是指多个进程之间相互通信,交换信息的方法。Linux
IPC基本上都是从Unix平台上继承而来的。主要包括最初的Unix
IPC,SystemV
IPC以及基于Socket的IPC。另外,Linux也支持POSIX
IPC。11电源管理:问题移动设备通过电池提供电力电池的容量十分有限12电源管理:解决方法建立在标准的LinuxPowerManager(PM)之上更激进的能耗管理策略组件通过“唤醒锁”发出保持开机的请求支持多种类型的唤醒锁13本地库BionicLibc函数库(FuntionLibraries)本地服务(NativeServers)硬件抽象库(HardwareAbstractionLibraries)14BionicLibc什么是BionicLibc定制库应用,优化嵌入式的应用
15BioniclibcBSD协议,使得GPL不出现在用户空间体积小,代码路径短,会在每个进程中加载自定义的pthread实现,十分快速而简洁16Bioniclibc不支持某些POSIX特征与标准的GNUglibc库不兼容所有的本地程序必须依照bionic库进行编译POSIX表示可移植操作系统接口(PortableOperatingSystemInterface,缩写为POSIX17FunctionlibcWebkitMediaFrameworkSQLite嵌入式数据库18WebKit建立在开源的WebKit之上网页渲染以桌面视图模式完整显示完全的支持CSS,Javascipt,DOM,AJAX支持单栏和自适应视图渲染WebKit是一个开源的浏览器引擎,与之相对应的引擎有Gecko(MozillaFirefox等使用)和Trident(也称MSHTML,IE使用)。同时WebKit也是苹果MacOSX系统引擎框架版本的名称,主要用于Safari,Dashboard,Mail和其他一些MacOSX程序。WebKit前身是KDE小组的KHTML,WebKit所包含的WebCore排版引擎和JSCore引擎来自于KDE的KHTML和KJS,当年苹果比较了Gecko和KHTML后,仍然选择了后者,就因为它拥有清晰的源码结构、极快的渲染速度。Apple将KHTML发扬光大,推出了装备KHTML改进型WebKit引擎的浏览器Safari。19MediaFrameWork建立在PacketVideoOpenCORE平台之上支持标准的视频,音频格式支持硬件/软件解码插件20SQLite轻量级事务数据存储多数平台数据存储的后端SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。21本地服务器表面抛射器 SurfaceFlinger音频抛射器 AudioFlinger
SurfaceFlinger服务负责绘制Android应用程序的UI。22SurfaceFlinger提供全系统的表面“设计器”,将所有表面渲染动作处理后传递到帧缓冲可以结合二维和三维的表面,或者多个应用的表面23AudioFlinger控制所有的视频设备处理多视频流进行PCM视频输出路径控制视频到不同的输出24HardwareAbstractionLibrariesC/C++库文件层定义Android的驱动接口将Android逻辑平台从硬件接口中分开硬件抽象层25AndroidRuntimeDalvik虚拟机核心库26Dalvik虚拟机完全为Android定制的虚拟机,基于QEMU提供应用程序可移植性和运行环境的一致性运行优化的dex格式文件和Dalvik字节码Java.class/.jar在创建的时候就被转换成为了.dex为嵌入式环境设计支持每设备多个虚拟机进程高度CPU优化的字节码解释器高效内存使用Dalvik特点
每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。Dalvik被设计成一个设备可以同时高效地运行多个虚拟系统。
Dalvik虚拟机执行(.dex)的Dalvik可执行文件,该格式文件针对小内存使用做了优化。
同时虚拟机是基于寄存器的,所有的类都经由JAVA编译器编译,然后通过SDK中的“dx”工具转化成.dex格式由虚拟机执行。DalvikVM中间代码Dalvik虚拟机有许多地方是参考Java虚拟机的设计,Dalvik虚拟机所执行的中间代码并非是Java虚拟机所执行的JavaBytecode,同时也不直接执行Java类(JavaClassFile),而是依靠转换工具将Javabytecode转为DalvikVM执行时特有的dex(DalvikExecutable)格式,成为.dex。DalvikVM与JavaVM区别DalvikVM与JavaVM最大的不同在于JavaVM是Stack-based,而DalvikVM是(register-based)。以技术层面来看Register-basedVM的特性有个很大的好处,那就是对于目前主流的硬件架构,很容易与现有系统整合且达到最优化,而所需要的资源也相对较少。甚至在硬件实现VM上会比较容易实现。最重要的是Dalvik并不是由J2ME实现,而不存在J2ME授权相关的问题。通常来说,Java比较慢不单单只是因为VirtualMachine的关系,Java的程序编译成Bytecode也是关键因素之一,因为JavaVM采用了Stack-based的方式来产生指令,所以所有的变量都需要push,pop操作,所以就会多出不少指令,而DalvikVM则采用Register-based方式,变量都存储在寄存器中,相比较而言,DalvikVM的指令就会少一点,速度也就会更加快一点。31核心库数据结构
实用类
文件访问……针对Java语言的APIs提供了一个强大,然而简单的开发平台应用程序框架活动管理器包管理器窗口管理器资源管理器内容提供器视图系统通知管理器电话管理器各种服务AJAX网页应用程序<canvas>使JavaScript可直接绘图DOM可以创建UI特效Android目前不支持HTML5,但有GearsGoogleReaderGmail10.2Ubuntu编译环境配置Ubuntu编译环境配置可以参考/wiki/Host_PC_Setup网页上的步骤,详细介绍了如何开始在Ubuntu中使用OMAP平台上的预构资源构建二进制文件。
本章主要介绍OMAP4460开发板Linux及Android操作系统的编译方法。OMAP4460开发板代码资源地址:/win32-image-writer。10.2.1主机环境
Ubuntu是OMAP平台推荐的Linux发行版本,OMAP平台下的Ubuntu资源下载地址是:/community/Installation。
注:建立一个版本的Android,约需要10GB的硬盘空间。1.工具和套件下面是一个用于构建、测试和调试OMAP开发平台所需的软件包。这些软件包可以下载到主机的分发包管理系统,或通过“apt-get”命令安装。工具和套件之中包括如下内容:Git版本控制系统;GCC编译器/GNUMake;util-linux;minicom。E2fsprogs;6.ARM交叉编译器CodeSourcery的ARM编译器版本2009Q3-67可以用于建立OMAP平台上不同的发生版本。更多信息可以访问CodeSourcery网站:。
当前代码的编译,可能会导致Sourcery产生一个内部错误。如果出现这样的情况,可以下载较新的CodeSourcery版本:2010Q1-202。
先前的交叉编译器编译版本可以下载2009Q3-67。也可能需要不同的CodeSourcery版本,具体情况根据构建的要求进行选择。例如选择IA32GNU/LinuxTAR(2c2b324f0a84916afd9920029286eb10),2008年第三季度-72。另一个更早的交叉编译器编译版本可以下载,选择IA32GNU/LinuxTAR(75465352c9ee21c06c8e0c4709969d42)。10.2.2初步设置1.工具链2.Lucid工作站3.SD卡的容量4.引导程序OMAP4使用u-boot+x-loader的启动平台。10.3快速入门与预编译二进制文件快速入门与预编译二进制文件的方法,可参考如下网页上面的相关介绍:/wiki/Android_Panda_Pre_Built
从Linaro的官方网站可以获得PandaBoard的预构建二进制文件,可以得到Android的二进制文件。
下面是获得二进制文件和保存到SD卡上的典型步骤。想要得到Linaro的安装版本,有两种方法:使用预构建的image;使用Linaro的image工具创建自己的image。10.4从源代码构建从源代码构建Android的方法可以参考如下网页:/wiki/Android_Panda_Build_Source10.4.1编译平台设置1.工具和依赖包
先决条件是封装用于构建Android的文件系统(注意:这里参考Ubuntu10.0464位),Ubuntu的64位CreamSandwich版本。如果是在防火墙后面,必须按前面的说
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 模拟试题一及答案
- 莲子深加工建设项目可行性研究报告
- 专题19+主题范文引领-【同步作文课】2024-2025学年七年级语文上册单元写作深度指导(统编版2024)
- 模块二 第3讲 冠词
- 武汉市2026年高三3月份模拟考试语文试题含解析
- 东盟跨境数字火龙果输华包装厂注册线上年审定位核查-基于越南平顺省台账实证
- 保山市隆阳区2025届数学四下期末学业水平测试模拟试题含答案
- ISOIEC 15944-162023 信息技术.业务操作视图.第16部分ISOIEC 15944业务操作视图标准及其IT实现中确定的一套统一规则和指南标准立项发展报告
- 国民经济-运动休闲针织服装制造行业(2025年)分析报告
- 国民经济-烟叶复烤行业(2025年)分析报告
- 2026贵州能源集团有限公司第一批综合管理岗招聘41人(公共基础知识)测试题附答案解析
- DB61∕T 1399-2020 公共机构能耗定额
- 建筑装饰基本知识培训课件
- 成都设计咨询集团有限公司2025年社会公开招聘(19人)笔试参考题库附带答案详解(10套)
- 医院智慧管理分级评估标准体系(试行)-全文及附表
- T/CAQI 40-2018直饮水水站安全技术要求
- 涉密文件印制协议书
- IVUS相关知识考核试题及答案
- 班组培训与人才培养方案
- DB14-T 3223-2024 产业规划类专利导航项目质量要求
- GB/T 18281.1-2024医疗保健产品灭菌生物指示物第1部分:通则
评论
0/150
提交评论