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. 查找一个数组中最小的前n项

    /****************************************************************** find the biggest x number in a s ...

  2. UGUI学习笔记

    基本情况:熟悉NGUI  没接触过UGUI 目标:熟练掌握UGUI,并用在实际项目中 一 在网上寻找视频教程,快速了解UGUI http://www.taikr.com/course/89 不错的视频 ...

  3. iOS https plist

    <key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key ...

  4. 学习multiprocessing(2)

    1 代码1: from multiprocessing import Pool import os, time, random def long_time_task(name): print('Run ...

  5. Android底部导航栏创建——ViewPager + RadioGroup

    原创文章,引用请注明出处:http://www.cnblogs.com/baipengzhan/p/6270201.html Android底部导航栏有多种实现方式,本文详解其中的ViewPager ...

  6. JDBC事务和JTA事务的区别

    转自:JDBC和JTA事务的区别 一.事务概述事务表示一个由一系列的数据库操作组成的不可分割的逻辑单位,其中的操作要么全做要么全都不做.与事务相关的操作主要有:BEGIN TRANSACTION: 开 ...

  7. tsung: an open-source multi-protocol distributed load testing tool

     ROPERTIES::type: KnowledgeBase_Cloud:END: 开源.多协议.分布式的压力测试工具   Item Summary tsung-recorder start 通过p ...

  8. flashbuilder mx组件 MenuBar

    来源:http://www.cuplayer.com/player/PlayerCode/Flex/2013/0118661.html <fx:Script> <![CDATA[ i ...

  9. 昨天上架出现问题,you binary is not optimized for iphone5.。。。。

    这个时候只需要加一个lanuch image 就可以了

  10. SQLServer在多个表中都增加一个字段的方法

    1.使用游标 declare @sql varchar(), @name varchar() declare my_cursor scroll cursor for select name from ...