Android 系统组件及其作用

1.Zygote:Android应用的孵化器,一切Android程序由此进程fork而来。

2.Binder:Android的进程间通信机制,它是Android平台最核心的功能组件。

3.Package Manager Service:应用安装包管理服务,不仅负责包的安装和卸载,更重要的是负责Android应用信息的查询和控制,例如Android权限管理。

4.Activity Manager Service:管理Android框架层的进程,也包含了Android应用四大组件的逻辑实现。

5.Dalvik,art虚拟机:android 系统的虚拟机,google自己编写的一个虚拟机.可执行文件是dex文件。

Android安全机制    

1.进程沙箱隔离机制

Android应用程序在安装时被赋予独特的用户标识(UID),并永久保持;应用程序及其运行的Dalvik虚拟机运行于独立的Linux进程空间,与UID不同的应用程序完全隔离。如下图:

在特殊情况下,进程间还可以存在相互信任关系。如源自同一开发者或同一开发机构的应用程序,通过Android提供的共享UID(Shared UserId)机制,使得具备信任关系的应用程序可以运行在同一进程空间

2.应用程序签名机制

应用程序包(.apk文件)必须被开发者数字签名;同一开发者可指定不同的应用程序共享UID,进而运行于同一进程空间,共享资源。

签名的过程:   • 生成私有、公共密钥和公共密钥证书   • 对应用进行签名   • 优化应用程序签名的作用:   • 识别代码的作者。   • 检测应用程序是否发生了改变。   • 在应用程序之间建立信任,以便于应用程序可以安全地共享代码和数据。

在安装应用程序APK时,系统安装程序首先检查APK是否被签名,有签名才能安装。当应用程序升级时,需要检查新版应用的数字签名与已安装的应用程序的签名是否相同,否则,会被当做一个新的应用程序。Android开发者有可能把安装包命名为相同的名字,通过不同的签名可以把他们区分开来,也保证签名不同的包不被替换,同时防止恶意软件替换安装的应用。

3.权限声明机制
动态权限:
要想获得在对象上进行操作,就需要把权限和此对象的操作进行绑定。不同级别要求应用程序行使权限的认证方式也不一样,Normal级申请就可以使用,Dangerous级需要安装时由用户确认,Signature和Signatureorsystem级则必须是系统用户才可用。一般我们接触的比较多的就是Normal的声明和Dangerous的动态权限申请 
• 通过manifest文件中声明以下属性:
• 通过以下属性添加自定义权限:

• 系统组件权限,如activity组件:
4.访问控制机制
确保系统文件和用户数据不受非法访问。尽量控制系统和程序的访问权限。
Linux用户权限:

5.进程通信机制

基于共享内存的Binder实现,提供轻量级的远程进程调用(RPC)。通过接口定义语言(AIDL)定义接口与交换数据的类型,确保进程间通信的数据不会溢出越界,污染进程空间。至于这一块具体的Bindler机制,自己也没有理解的太透彻,大家有兴趣可以去看其他文章

6.内存管理机制

基于标准 Linux的低内存管理机制(OOM),设计实现了独特的低内存清理(LMK)机制,将进程按重要性分级、分组,当内存不足时,自动清理最低级别进程所占用的内存空间;同时,引入不同于传统Linux共享内存机制的Android共享内存机制Ashmem,具备清理不再使用共享内存区域的能力。

更多相关文章

  1. 浅析android通过jni控制service服务程序的简易流程
  2. 浅析Android中的消息机制-解决:Only the original thread that cr
  3. 关于Android(安卓)Studio3.2新建项目Android(安卓)resource link
  4. Android(安卓)- Manifest 文件 详解
  5. Android之应用程序基础
  6. Android异步消息机制之Handler
  7. Android四大组件的理解
  8. Android的Handler机制详解3_Looper.looper()不会卡死主线程
  9. Android官方入门文档[1]创建一个Android项目

随机推荐

  1. Android重写onConfigurationChanged规避
  2. JavaScript或PHP检测Android设备
  3. Android主线程与子线程的关系
  4. BroadcastReceiver 该思考的问题(沉思篇)
  5. android TextView常用属性
  6. 使用css3中transition的页面切换
  7. 关于ellipsize属性使用的一些细节
  8. 关于Android堆内存的设置
  9. Android获取经纬度、计算距离、方位角
  10. Android ApiDemos示例解析(83):Graphics-