Android官网学习笔记002:应用程序基本原理(01)
2012-02-12 13:04
260 查看
################### 声明部分 #####################
主要内容与来源:Google官网www.android.com
本人博客地址:http://blog.csdn.net/DrRiverZhu
声明:由于本文档为阅读Google官网www.android.com的Dev. Guide内容,并结合个人理解与总结所形成的。因此,很多内容均受个人能力与水平限制,难免存在着各种不足与错误,希望各位朋友多多指出。同时,欢迎各位朋友在转载时保留“声明部分”。此外,英文中很多词汇直接译成中文将会引起误解,如Started Service、Bound Service等,均直接引用,而不作翻译。
联系方式:dr.river.zhu@gmail.com
################################################
每个组件在整个应用程序行为中扮演不同的角色,并且每个组件可以单独启动(甚至被其他应用程序使用)
Manifest File(清单文件)必须声明应用程序中所有组件,同样也应该声明该应用程序的要求,如Android最低版本要求、任何所需的硬件配置等
非代码(Non-Code)应用程序资源(如图像、字符串、布局文件等)应该针对不同的设备配置(针对不同语言的不同字符串、针对不同屏幕尺寸的不同布局等)包含不同的替换方案。
Android应用程序使用JAVA编程语言开发。Android SDK工具将代码和其他所有数据、资源文件一起进行编译,生成Android包(Android package)。Android包是压缩文件,具有.apk后缀。一个单独的.apk文件中包含的所有代码被视为一个应用程序。同样,该格式是所有采用Android操作系统的设备用于安装程序的格式。
每个Android应用程序一旦被安装到设备之上,就进驻于其自身的安全沙箱(sandbox)内:
Android操作系统是一个多用户Linux系统,每个应用程序均视为一个不同的用户。
默认情况下,系统为每个应用程序赋予一个唯一的Linux用户ID(User ID)(该ID仅供系统使用,应用程序不知道该ID)。系统为同一个应用程序中的所有文件设置访问权限,只有符合该用户ID的程序的具有访问这些文件的权限。
每个进程均具有其自身的虚拟机(VM),因此,一个应用程序的代码与其他应用程序的代码相互隔离运行。
默认情况下,每个应用程序运行于其自身的Linux进程中。当任何应用程序的组件(Component)需要被执行时,Android为该应用程序启动对应的进程,然后当不再需要该组件或当系统必须为其他应用程序回收内存时关闭该进程。
通过该方式,Android系统实现了最低权限原则(Principle of Least Privilege)。也即,每个应用程序,在默认情况下,仅对为完成工作所需的组件具有访问权限,此外,没有更多的访问权限。在该原则下,一个应用程序无法访问系统中其不具有访问权限的部分,进而创建了一个非常安全的环境。
虽然存在最低权限原则,但应用程序依然可以通过如下几种方式与其他应用程序进行数据共享,以及访问系统服务:
两个应用程序可处理为共享同一个Linux用户ID。在这种情况下,这两个应用程序可以访问彼此的文件。为了节省系统资源,具有相同用户ID的应用程序同样可以处理为运行在同一个Linux进程并共享同一个虚拟机(应用程序也必须被赋予相同的证书(Certificate))。
一个应用程序可以要求获取访问诸如用户通讯录、短讯服务(SMS)消息、可挂载存储器(SD卡)、摄像头、蓝牙等设备数据的权限。所有应用程序权限必须在安装时由用户授予。
以上内容涵盖了一个Android应用程序是如何存在于系统之中的基础知识。下面的内容将介绍:
核心框架组件:应用程序构成。
manifest文件:组件声明、设备特性要求
资源:与应用程序代码分离,并且允许应用程序针对不同设备配置进行行为优化
[align=right]——未完待续[/align]
主要内容与来源:Google官网www.android.com
本人博客地址:http://blog.csdn.net/DrRiverZhu
声明:由于本文档为阅读Google官网www.android.com的Dev. Guide内容,并结合个人理解与总结所形成的。因此,很多内容均受个人能力与水平限制,难免存在着各种不足与错误,希望各位朋友多多指出。同时,欢迎各位朋友在转载时保留“声明部分”。此外,英文中很多词汇直接译成中文将会引起误解,如Started Service、Bound Service等,均直接引用,而不作翻译。
联系方式:dr.river.zhu@gmail.com
################################################
应用程序基本原理
快速一览
Android应用程序由一个或多个应用组件(Components)组成,包括:Activities、Services、Content providers及Broadcast Receivers。每个组件在整个应用程序行为中扮演不同的角色,并且每个组件可以单独启动(甚至被其他应用程序使用)
Manifest File(清单文件)必须声明应用程序中所有组件,同样也应该声明该应用程序的要求,如Android最低版本要求、任何所需的硬件配置等
非代码(Non-Code)应用程序资源(如图像、字符串、布局文件等)应该针对不同的设备配置(针对不同语言的不同字符串、针对不同屏幕尺寸的不同布局等)包含不同的替换方案。
Android应用程序使用JAVA编程语言开发。Android SDK工具将代码和其他所有数据、资源文件一起进行编译,生成Android包(Android package)。Android包是压缩文件,具有.apk后缀。一个单独的.apk文件中包含的所有代码被视为一个应用程序。同样,该格式是所有采用Android操作系统的设备用于安装程序的格式。
每个Android应用程序一旦被安装到设备之上,就进驻于其自身的安全沙箱(sandbox)内:
Android操作系统是一个多用户Linux系统,每个应用程序均视为一个不同的用户。
默认情况下,系统为每个应用程序赋予一个唯一的Linux用户ID(User ID)(该ID仅供系统使用,应用程序不知道该ID)。系统为同一个应用程序中的所有文件设置访问权限,只有符合该用户ID的程序的具有访问这些文件的权限。
每个进程均具有其自身的虚拟机(VM),因此,一个应用程序的代码与其他应用程序的代码相互隔离运行。
默认情况下,每个应用程序运行于其自身的Linux进程中。当任何应用程序的组件(Component)需要被执行时,Android为该应用程序启动对应的进程,然后当不再需要该组件或当系统必须为其他应用程序回收内存时关闭该进程。
通过该方式,Android系统实现了最低权限原则(Principle of Least Privilege)。也即,每个应用程序,在默认情况下,仅对为完成工作所需的组件具有访问权限,此外,没有更多的访问权限。在该原则下,一个应用程序无法访问系统中其不具有访问权限的部分,进而创建了一个非常安全的环境。
虽然存在最低权限原则,但应用程序依然可以通过如下几种方式与其他应用程序进行数据共享,以及访问系统服务:
两个应用程序可处理为共享同一个Linux用户ID。在这种情况下,这两个应用程序可以访问彼此的文件。为了节省系统资源,具有相同用户ID的应用程序同样可以处理为运行在同一个Linux进程并共享同一个虚拟机(应用程序也必须被赋予相同的证书(Certificate))。
一个应用程序可以要求获取访问诸如用户通讯录、短讯服务(SMS)消息、可挂载存储器(SD卡)、摄像头、蓝牙等设备数据的权限。所有应用程序权限必须在安装时由用户授予。
以上内容涵盖了一个Android应用程序是如何存在于系统之中的基础知识。下面的内容将介绍:
核心框架组件:应用程序构成。
manifest文件:组件声明、设备特性要求
资源:与应用程序代码分离,并且允许应用程序针对不同设备配置进行行为优化
[align=right]——未完待续[/align]
相关文章推荐
- Android官网学习笔记004:应用程序基本原理(03)
- Android官网学习笔记003:应用程序基本原理(02)
- 01《老罗Android开发视频教程》第一集:android学习路线图介绍--学习笔记
- Android框架学习笔记01Okhttp框架
- API Demos 2.3 学习笔记 (1)-- Android应用程序架构
- android training 学习笔记002-Android分享操作
- [android](学习笔记6)为应用程序添加对话框(1)
- Android应用程序运行过程分析(学习笔记--ITCAST黎活明)
- android开发学习笔记(6)android应用程序框架
- Android(java)学习笔记123:Clock app编写报错01
- Android Material Design 官网翻译学习笔记(开篇)
- Android总结笔记01:自定义View学习(一)
- Android官网学习笔记 目录
- API Demos 2.3 学习笔记 (3)-- Android应用程序架构
- Android:日常学习笔记(2)——分析第一个Android应用程序
- Mars Android视频学习笔记——01_20_XML文件解析
- [Android新手学习笔记01]-如何手动创建Activity
- Android(java)学习笔记249:ContentProvider使用之获得系统联系人信息01
- Mars Android视频学习笔记——01_18_文件下载
- Android(java)学习笔记220:开发一个多界面的应用程序之界面间数据传递