栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > 架构设计

Android-系统架构-编译源码

架构设计 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android-系统架构-编译源码

文章目录
  • 系统架构
    • Android系统架构
    • 编译源码

系统架构 Android系统架构


Linux内核层:
  包含Linux内核和一些驱动模块(比如USB驱动,Camera驱动,蓝牙驱动)。
Libraries层:
  这一层提供动态库(也叫做共享库),Android运行时库,Dalvik虚拟机等。
Framework层:
  这一层大部分使用的是java语言编写,也叫java框架层,为应用程序提供API。
Applications层:
  与用户进行交互的就是这些应用程序,他们都是用java进行开发的。

  java是通过JNI层调用Linux OS中的系统调用来完成对应的功能。java世界是通过JNI层通过IPC方式与Native世界进行交互(IPC方式我们后面再说),除此之外,Socket也是常见的IPC方式。

编译源码

  Android平台提供了三个命令用来编译,分别是make,mmm,mm,使用方法和优劣如下:
make:
  不带任何的参数,它用于编译整个系统,时间比较长,除非想要编译整个系统,否则一般不推荐。
make MediaProvider:
  优点是会把该模块依赖的其他模块一起编译,例如make libmedia依赖的库全部编译好,其缺点也很明显,需要整个源码来定位MediaProvider模块所使用的Android.mk文件,并且还要判断该模块所依赖的其他模块是否有修改,整天编译时间比较长。
mmm packages/providers/MediaProvider:
  该命令将编译指定目录下的目标模块,而不是编译所依赖的模块,所以,如果是初次编译,采用这种方式一个模块往往会报错,错误原因是因为它所依赖的模块未被编译。
mm:
  这种方式需要先用cd命令进入packages/providers/MediaProvider目录,然后执行mm命令,它和mmm一样,只编译目标模块,执行编译的速度都很快。
使用推荐:
  1.如果只知道目标模块的名称,则应使用make模块名的方式进行编译,初次编译需要使用这种方法。
  2.如果不知道目标模块的名称,但是直到目标模块的目录,需要使用cd进入目录,然后使用mmm或mm来编译,如果是初次进行编译,则需要使用make,以后就可以使用mmm或mm,这样节约时间。
注意:
  1.一般编译时都是用的是增量编译,就是只编译发生变化的目标文件,但是有时候需要编译所有的目标文件,那么就可以使用make中的-B选项,-B选项强制编译所有的目标文件。
  2.系统服务被杀掉一般都会自动重启(由init控制)。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/908545.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号