Android应用程序基础
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应用程序基础的更多相关文章
- Android应用程序窗口(Activity)与WindowManagerService服务的连接过程分析
在前两文中,我们分析了Activity组件的窗口对象和视图对象的创建过程.Activity组件在其窗口对象和视图对象创建完成之后,就会请求与WindowManagerService建立一个连接,即请求 ...
- Android开发之 Android应用程序目录结构解析
建立的HelloWorld的应用项目,其代码是由ADT插件自动生成的,形成Android项目特有的结构框架. 接下来让我带领大家解析一个Android程序的各个组成部分,这次我们拿一个Hello,Wo ...
- gdb 远程调试 android native 程序
ilocker:关注 Android 安全(新入行,0基础) QQ: 2597294287 先看一张原理图: 我是 Linux 和 Android 双料 0 基础,目前对 gdb 了解的很浅显.(注意 ...
- Android应用程序构成
一个Android应用程序一般是由以下4个组件构成的: 活动(Activity) 意图(Intent) 服务(Service) 内容提供器(Content Provider) 这4个组件是构成andr ...
- Unity开发Android应用程序:调用安卓应用程序功能
开发环境: Eclipse3.4 + adt12 + jdk6 + AndroidSDK2.2 Unity3.4 + windows7 测试设备: HTC Desire HD 本文要涉及到的几个重点问 ...
- 如何在Android应用程序中使用传感器模拟器SensorSimulator
原文地址; 如何在Android应用程序中使用传感器模拟器 - 移动平台应用软件开发技术 - 博客频道 - CSDN.NET http://blog.csdn.net/pku_android/arti ...
- 用 Eclipse 开发 Android 应用程序
转自:http://www.apkbus.com/android-13828-1-1.html 开始之前 本教程介绍如何在 Eclipse 环境中进行 Android 应用程序开发,包括两个示例应用程 ...
- Android应用程序进程启动过程的源代码分析
文章转载至CSDN社区罗升阳的安卓之旅,原文地址: http://blog.csdn.net/luoshengyang/article/details/6747696 Android 应用程序框架层创 ...
- 解开Android应用程序组件Activity的"singleTask"之谜
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6714543 在Android应用程序中,可以配 ...
随机推荐
- 当用反射获取一个model,这个model里面字段有nullable的时候,获取字段真实类型
Using Reflection to Determine whether an Type is Nullable And Get the underlying Type /// <summar ...
- 关于maven相互依赖的工程部署问题
环境:win7 64位,myeclipse10.6,eclipse4.5,都配置了svn插件 问题描述:1.工程模块化之后都是通过pom配置model来关联的,svn提交之后,通过myeclipse的 ...
- SVN ---文件加锁,执行clean up命令
一.SVN 中 clean up 的功能 当Subversion改变你的工作拷贝(或是.svn中的任何信息),它会尽可能的小心,在修改任何事情之前,它把意图写到日志文件中去,然后执行log文件中的命令 ...
- 【读书笔记】Linux源码注释
第二章 大概的内部组成 IO端口寻址: 统一寻址: 就是把地址归入存储器寻址范围. 独立寻址: 跟存储器分开,专门的寻址空间 没怎么理解, PC机一般都是采用独立寻址, 见下图 在linux里,可以在 ...
- 《Java Mail》
<Java Mail> 文/冯皓林 完稿:2016.3.16--2016.3.19 “特定环境.一类问题.N个解决方案” 一.RFC821文档说明 核心: 邮件(Mail): 1.邮件头( ...
- 二分法习题HDU2199
AC代码 : #include<iostream>#include<cmath>using namespace std;double y;double f(double n){ ...
- Entity Framework技巧系列之六 - Tip 20 – 25
提示20. 怎样处理固定长度的主键 这是正在进行中的Entity Framework提示系列的第20篇. 固定长度字段填充: 如果你的数据库中有一个固定长度的列,例如像NCHAR(10)类型的列,当你 ...
- sysbench使用教程【转载】
水晶命匣 2016-08-16 20:02 一.环境描述 此次使用的虚拟机环境如下所示: CPU:双核 2.4GHz 内存:4 GB 硬盘:120 GB IP:192.168.21.129 操作系统: ...
- Failed to load c++ bson extension, using pure JS version
Failed to load c++ bson extension, using pure JS version npm install mongodbnpm install bson npm ins ...
- Oracle 锁
select for update对某行加锁之后: select语句可以执行: select for update 这行不可以: 会一直等待锁释放 select for update wait 3 ...