Android程序使用Java语言编写。Android开发套件把数据、资源文件和Java代码编译到一个.以.apk为后缀名的Android压缩包中。一个单独的apk文件中的所有代码被认为是一个android应用程序,可以被安装到android设备中。

一旦被安装到设备中,每一个Android程序运行在自己的安全沙盒中:

l Android操作系统是一个多用户的Linux系统,每个程序都是一个不同的用户。

l 系统默认会为每个程序分配一个唯一的用户标识(这个标识只被系统使用,应用程序并不知道此标识的存在)。系统会为应用程序中所有的文件分配权限,因此只有分配给程序的用户标识可以访问它们。

l 每个进程都拥有自己的虚拟机(VM),所以每个应用程序的代码都独立于其他应用程序运行

l 每个应用程序默认运行在自己的Linux进程中。Android会在应用程序的任意组件需要被运行时启动这个进程,会在不再需要这个进程或者系统需要为其他程序回收内存时结束此进程。

Android系统通过这样实现最小特权原则。每个应用程序默认只能访问完成它的工作时需要的组件。这样创造了一个非常安全的环境,在这个环境中,应用程序无法访问没有被赋予权限的系统功能。

尽管如此,一个应用程序可以有许多方法和其他程序分享数据以及访问系统服务:

l 为两个不同的应用程序共享同一个Linux用户标识是可以的,这样他们就能够相互访问对方的文件。为了节省系统资源,拥有相同用户标识的应用程序也可以运行在同一个Linux进程中,并且共享同一个VM(这些应用程序必须使用同一个证书签名)。

l 一个应用程序可以请求权限来访问设备数据,比如联系人、短信、可挂载的存储(SD卡)、摄像头,蓝牙以及其他的设备数据。所有的应用程序权限必须在用户安装的时候被授予。

以上介绍了关于一个Android应用程序是怎样存在于系统中的基础。此文档的剩余部分会为你介绍:

l 组成应用程序的核心框架组件

l 为你的应用程序声明组件和请求设备特性的manifest文件

l 和应用程序代码是分开的资源,这样你的应用程序可以优雅的为各种设备配置优化它的行为

Android应用程序基础的更多相关文章

  1. Android应用程序窗口(Activity)与WindowManagerService服务的连接过程分析

    在前两文中,我们分析了Activity组件的窗口对象和视图对象的创建过程.Activity组件在其窗口对象和视图对象创建完成之后,就会请求与WindowManagerService建立一个连接,即请求 ...

  2. Android开发之 Android应用程序目录结构解析

    建立的HelloWorld的应用项目,其代码是由ADT插件自动生成的,形成Android项目特有的结构框架. 接下来让我带领大家解析一个Android程序的各个组成部分,这次我们拿一个Hello,Wo ...

  3. gdb 远程调试 android native 程序

    ilocker:关注 Android 安全(新入行,0基础) QQ: 2597294287 先看一张原理图: 我是 Linux 和 Android 双料 0 基础,目前对 gdb 了解的很浅显.(注意 ...

  4. Android应用程序构成

    一个Android应用程序一般是由以下4个组件构成的: 活动(Activity) 意图(Intent) 服务(Service) 内容提供器(Content Provider) 这4个组件是构成andr ...

  5. Unity开发Android应用程序:调用安卓应用程序功能

    开发环境: Eclipse3.4 + adt12 + jdk6 + AndroidSDK2.2 Unity3.4 + windows7 测试设备: HTC Desire HD 本文要涉及到的几个重点问 ...

  6. 如何在Android应用程序中使用传感器模拟器SensorSimulator

    原文地址; 如何在Android应用程序中使用传感器模拟器 - 移动平台应用软件开发技术 - 博客频道 - CSDN.NET http://blog.csdn.net/pku_android/arti ...

  7. 用 Eclipse 开发 Android 应用程序

    转自:http://www.apkbus.com/android-13828-1-1.html 开始之前 本教程介绍如何在 Eclipse 环境中进行 Android 应用程序开发,包括两个示例应用程 ...

  8. Android应用程序进程启动过程的源代码分析

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址: http://blog.csdn.net/luoshengyang/article/details/6747696 Android 应用程序框架层创 ...

  9. 解开Android应用程序组件Activity的"singleTask"之谜

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6714543 在Android应用程序中,可以配 ...

随机推荐

  1. iOS SDWEBImage和collectionView的组合,以及collectionView的随意间距设置

    转载自:http://www.cnblogs.com/tmf-4838/p/5361271.html #import "ViewController.h" #import < ...

  2. CVE-2014-1767 漏洞分析(2015.1)

    CVE-2014-1767 漏洞分析 1. 简介 该漏洞是由于Windows的afd.sys驱动在对系统内存的管理操作中,存在着悬垂指针的问题.在特定情况下攻击者可以通过该悬垂指针造成内存的doubl ...

  3. yii2.0使用ActionForm创建表单

    文本框:textInput(); 密码框:passwordInput(); 单选框:radio(),radioList(); 复选框:checkbox(),checkboxList(); 下拉框:dr ...

  4. MapReduce,DataJoin,链接多数据源

    主要介绍用DataJoin类来链接多数据源,先看一下例子,假设二个数据源customs和orders customer ID       Name      PhomeNumber 1         ...

  5. php中文乱码问题分析及解决办法

    中文乱码问题产生的原因,主要就是字符编码设置问题:             首先,mysql数据库安装的时候字符编码要选择正确,最好选择utf-8比较保险.如果安装时没有设置正确,找到mysql的安装 ...

  6. DLL and LIB

    在StackOverflow中看到一个提问“what's the difference between DLL's and LIB's?” 有如下回复值得参考: 回复一:

  7. HDU2673:shǎ崽 OrOrOrOrz

    Problem Description Acmer in HDU-ACM team are ambitious, especially shǎ崽, he can spend time in Inter ...

  8. Chrome不支持showModalDialog模态对话框和无法返回returnValue的问题

    父窗体部分js代码: var returnValue = window.showModalDialog("son.html ", window); //for chrome if ...

  9. 安装完php 后添加到环境变量

    Run PHP from the command line   up vote5down votefavorite 3 I have installed XAMPP v1.8.3 for my PHP ...

  10. shell 入门教程

    打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好.     一  惯例,第一个shell #!/bin/bash echo "Hello ...