关键字:

isolation  隔离

Fundamentals 基本原理‘

sandbox 沙箱

安卓应用程序使用JAVA语言编写,使用Android SDK工具编译你的代码,并将数据与资源文件打包成能够在Android操作系统上安装的压缩包apk。应用程序一旦在系统上安卓成功,便运行在一个安全的并且属于自己的的沙箱中。安卓操作系统是一个多用户的linux系统,在这个系统中,一个APP对应一个不同的用户。

  • 默认情况下,系统给每个app指定分配一个独一无二的linux用户ID(这个ID只能够使用在这个系统中,并且对应用程序来说是未知的)。系统设置权限给应用程序中的所有文件,所以只有用户ID被分配给应用程序时才,程度才能访问这些文件。
  • 每个进程都拥有自己的VM虚拟机,所以每个应用程序都与其它远程应用程序隔离的。
  • 默认情况下,每个应用程序运行在自己的Linux进程中,当应用程序中的组件需要被执行的时候,安卓才去开启这个进程.当他们不再需要运行了,或者当其他应用程序需要内存的时候,进程才会被杀死。

如此,安卓系统实现了最小权限的原则。因此,每个应用程序在默认的情况除了能够让组件工作外,没有其他权限。应用没有权限的情况下无法访问系统部分,从而创建了一个非常安全的运行环境。

然而,以下几个方法可提供应用程序共享数据,以及访问系统的服务

  • 可提供给两个应用程序相同的linux用户ID,如此,它们可以相互访问对方的文件。为了能够与系统资源交互,应用程序可以提供他们相同的用户ID,如此可以运行在相同的LINUX进程中,并且可以分享相同的虚拟机。
  • 应用程序可以请求权限去访问设备的数据,例如使用者的联系人信息、短信信息、SD卡,照相机、蓝牙等等,所有程序的权限必须在用户安装应用程序的时候授予。