关于Android系统 和 Android应用程序

                               

 

  Android系统是专为移动终端设计的操作系统,基于Linux 2.6版内核为其提供安全,进程管理,内存管理,网络以及驱动模型等。

  一个Android应用程序能被安装到Android系统的移动终端上,并满足用户对某些功能的需求,它需要android系统对它的支持。要取得Android系统的支持,它就必须遵守Android系统的游戏规则。 Android系统是基于Linux内核,说白了就是要靠Linux来驱动终端设备来完成所有底层操作。每种操作在系统内部其实都是进程来完成的。

 

  我们能看到的所有应用程序一般都是可执行的文件,但是当它们运行起来后,进入系统便成为了一个或者多个进程,中央处理器会轮流让这些进程使用,从而达到应用程序执行的目的。当然进程中也会产生子进程,Linux系统如何处理他们呢?它会为每一个进程或者子进程都赋予了一个唯一的ID,把它们看成不同的用户,这样说来一个应用程序就如同一个用户组了。Linux通过为每一个用户ID赋予许可,来保证对资源的访问安全。并有专门的服务管理这些进程的状态。以便能够更好的管理这些进程占有的系统内存资源。那么Android系统呢? 同样也是这样。

 

Google这样解释Android系统和Android应用的关系:

  "Android操作系统是一个多用户的Linux系统,在这个系统中,每个应用程序都是不同的用户。"

  " 默认情况下,Android系统会为每个应用程序赋予一个唯一的Linux用户ID,但这个ID只有Linux系统自己知道,应用程序本身不了解。”

  " Linux系统会为一个应用程序中所有的文件授权,让这些文件只能被这个应用程序的Linux用户可以访问。"

 

  Google的工程师们在Linux内核的基础上增加了许多模块和驱动,并未Linux内核封装了更加统一的接口类库,使得应用程序不必直接去访问Linux内核。

 

  再看Android App, 统一由Java语言编写,并使用其SDK提供的工具将他们连同数据和资源文件编译成一个Android Package.  就是那些我们安装的.apk 。

这些文件一旦被安装完成,每个Android App都会有一个自己的安全沙箱Android Runtime。这里有Dalvik VM 和Java语言封装的操作系统核心功能模块类库。它有效的隔离了Java应用和Android系统内核同时却又提供了更加安全的与内核的交流途径。

  

      默认情况下,每个应用程序都运行在自己的Linux进程中。当应用程序中任何一个组件需要运行时,Android就会启动这个进程,并关闭那些已经不再需要的进程或者系统不得不为其他应用程序释放内存时也会关闭某些进程。

       

      通过这种方式,Android系统实现了最小特权原则。也就是说每个应用程序,默认情况下,仅仅能访问那些需要他们工作的组件。这样它就创建了一个非常安全的环境,在这里面应用程序不能访问系统的未授权任何内容。

 

      这当然不符合应用程序运行的需要,所以Android系统提供了另外的途径来供应用程序们访问系统资源服务以及交流各自的数据资源。

 

      之前说过,每个应用程序都有一个Linux用户ID,Linux系统根据用户ID来授权用户可访问的资源。那么如何来实现资源共享和系统其它服务的调用呢?

 

  在Android系统中允许安排两个应用程序共享同一个Linux用户ID,这样他们就能相互访问各自的文件了。为了能节约系统资源,两个共享同一个Linux用户ID的应用程序,可以运行在同一个Linux进程中并共享同一个VM,当然他们必须有系统签发的同样的证书才行。

 

  我们的应用程序可以实现请求许可去访问终端数据,比如用户的通讯录,SMS信息,以及可插拔存储(SD 卡),相机,蓝牙等。但所有应用程序的这些许可都来源于用户安装它们时的授权。我们在安装Android应用程序的时候一定要注意提示的协议信息啊!!!

      

 

     据称,Google说Android就是Android,已经不再是Linux了,我们走到路已经不同!Linux则在希望Android 能够回到Linux怀抱。

 

posted @ 2012-06-16 12:10  Seekr  阅读(488)  评论(0编辑  收藏  举报