第四章 andoid本地层.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第四章 andoid本地层

第 * 页 Android系统移植 第四章 android本地层基础部分 一、本地层基础部分 二、C语言基础 Bionic 三、C语言底层库 四、init可执行程序和相关脚本 五、shell工具 六、android属性和套接字机制 Java应用程序 Linux操作系统及驱动 Linux ARM C 第二层本地框架和java运行环境 C/C++ 内核空间和用户接口 平台API 第三层java框架 本地和Java接口 一、本地层基础部分 Android是一个基于嵌入式的Linux的系统,其最下层部分是linux操作系统内核,为了具有一个基本可以运行的系统(最下系统),需要有一些用户空间的内容与linux操作系统的内核配合,从Linux的角度,这些是基础的、底层的用户空间内容,他们由android本地基础部分提供实现。 Android软件中作为本地基础部分使用的,主要具有以下部分。 C语言基础库:提供标准的C库功能 C语言工具库:android特定的C语言工具 Init可执行程序:作为用户空间的第一个进程 Shell工具:提供用户调试功能 后三者均在android源代码的system/core目录中,此目录也就是android系统中最底层的部分(嵌入式linux用户空间的基础),包括基本的启动、操作和调试等。 一、本地层基础部分 以上的各个内容是从静态角度列出系统中存在的库和程序,从系统运行的角度,linux内核启动后,将加载根文件系统中的init课执行程序作为用户空间的第一个进程。因此init静态链接C库和C工具库,他需要在对别的部分有所依赖,init的运行标志着android进入不同于其他linux系统的特殊阶段。 Shell工具则是基本调试必不可少的内容,android的shell工具以两个可执行程序的方式存在。 二、C语言基础:Bionic Bionic提供C语言基础库(简称C库)的功能。他是一个专为嵌入式系统设计的轻量级标准库实现。 Bionic的源码和头文件在bionic目录中,他的体积更小,支持标准C/C++的绝大部分功能,支持数学库,用户动态库的加载和创建。 Bionic加入了一些android的扩展功能 Bionic提供了property系统,这是整个android的全局变量的存储区域,Bionic使用共享内存的方式来实现。 3.2.1、Bionic各个部分的结构 Bionic目录中的各个子目录中内容如下所示。 Libc:C库,生成动态库libc.so和静态库licb.a。(stdio.h、string.h) Libm:数学库,生成动态库Libm.so和静态库Libm.a。 (标准的C环境) Libstdc++:C++库,生成动态库Libstdc.so和静态库 Libstdc.a 。(android特定的库) Libthread_db:线程库,android系统中的特殊实现 3.2.1、C语言的工具库libcutils 对于android中的大多数开发,不需要关心Bionic的实现,但是可能需要使用bionic提供的功能,因此,需要关注Bionic的头文件。 Bionic中的各个子目录中,一般都有include这个目录,这个目录就是这个库的头文件提供的支持。 作为C库功能的实现,Bionic的头文件包含几个部分,C语言的标准头文件,Unix的标准头文件,linux内核的头文件,Bionic特殊的头文件。 Libc/include目录中的各个文件为C语言主要的头文件,例如stdlio.h他们是C的标准头文件。 Libc/include/sys目录中的各个文件是以linux系统(以sys开头)的文件,例如time.h。#inlcude sys/time.h Libc/kernel为linux的内核头文件目录,(在开发中有时还会应用linux的头文件)这个目录是对linux源代码中各个部分文件的重新组织。#include linux/input.h -?libc/kernel/common/linux/input.h 3.3.1、init可执行程序 Init进程是android启动后,系统执行的第一个名称为init的可执行程序,是第一个用户空间程序,是linux进入android系统的入口,这个程序以一个守护进程的方式运行,他提供了以下的功能。 设备管理 启动启动脚本init.rc 执行启动脚本中的基本功能 执行启动脚本中的各种服务 Init可执行程序的代码路径为:system/core/init 编译的结果是一个可执行文件:init 3.3.2、init可执行程序的结构 Init不是库,因此 没有给其他部分使用的头文件。 Init.c:主入口,包含了main函数。 Parser.h和parser.c:底层的解

文档评论(0)

155****8706 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档