从许多方面来说,每个Android应用程序存活在它们自己的世界中

应用基础-Application Fundamentals

Android应用程序以java作为开发语言。用Android SDK 提供的工具,可以将应用程序所需要的数据和资源文件打包到一个android包文件中,这个文件用.apk作为扩展名。所有代码都在单个.apk文件中, 当成一个应用,这个文件就是通常安装在Android设备中的应用. 一旦安装到了一个设备,每个应用生存在它自己的安全沙箱中。

  • 一个Android系统是一个多用户的Linux系统,其中的每个应用都是一个不同的用户。

  • 默认情况下,系统给每个应用分配一个独立的Linux用户ID(这个ID只由系统使用并且对应用来说是不可知的),系统给在某个应用中的所有文件设置了权限,所以只有分配了那个用户ID的应用才能访问它们

  • 每个进程拥有它自己的虚拟机,所以一个应用代码的运行,与其他应用代码的运行是隔离的.

  • 默认情况下,每个应用程序均运行于它自己的Linux进程中。当应用程序中的任意代码开始执行时,Android启动一个进程,而当不再需要此进程而其它应用程序又需要系统资源时,则关闭这个进程。

通过这种方法,Android系统实现了最小特权原则。默认,每个应用仅仅访问需要工作的组件,并不多做其他的事。这样创建了一个非常安全的环境,应用不能访问系统没有授权的其他部分.

然而,应用可以有多种方法来与其他应用,共享数据及访问系统服务:

  • 有可能安排两个应用共用一个linux用户ID,在那种情况下,它们能互相访问相互的数据。为了节约系统资源,拥有相同用户ID的应用,可能也被安排运行在同一个Linux进程中并共享相同的VM(应用必须被签名成同样的认证)。

  • 所有应用能请求允许访问硬件数据,比如像用户通信录,SMS消息及可挂载的存储设备(SD card),摄像头,蓝牙等,所有应用的权限必须在用户安装时被许可。