Android学习1
来源:互联网 发布:盐城网络买花花店 编辑:程序博客网 时间:2024/06/05 14:12
Android的整体架构如下图所示:
其中Dalvik 虚拟机是类似于JVM,保证了上层的java代码可以运行在Linux Kernal上。Android中每一个运行的应用都会对应一个自己的虚拟机实例。之所以这样做,一部分原因就是考虑到了数据的安全问题,每个应用能够很好地保护到自己的数据,类似于运行在360沙箱中。
每当一个新的应用被使用的时候,Android会clone一个新的虚拟机实例该应用对应的进程。需要注意的是,新的虚拟机实例并非完全clone一份内存,而是会同之前的虚拟机实例共享一部分内存。这样就引出了一个问题,多个实例读写一份内存,容易产生数据的不一致。对此,Android采取的方案是写时复制,在一个虚拟机实例写共享内存区域的时候,复制一份该内存的数据给该实例。从统计学的观点看,80%的情况下都是虚拟机实例在读取共享内存区域,写内存的情形只占到20%。因此,写时复制的方案大大提升了运行效率。
关于apk文件。apk 文件实际上是资源文件(Manifest,Resources,Assets)和可执行文件classes.dex(可以在虚拟机上运行)共同打包之后形成的文件。在Android 5.0之前,使用的一直是Dalvik 虚拟机,5.0及之后,采用的是Android Runtime(ART)。二者所识别的可执行文件不同,前者是.dex(Dalvik excutable),后者是.oat(ahead of time)。但是如果我们使用apkTool逆向解析apk文件的时候,会发现不仅仅在5.0之前,5.0及之后的apk文件也只有.dex,而没有.oat。这是为了保证整个Android系统的兼容性,实际上在5.0以及之后的Android操作系统中,会将.dex文件进一步转换成.oat文件,然后才能在ART上运行。
关于Android的应用权限问题。为了管理每个Android应用的权限,Android采用了POLP(最小特权)的策略,即每个应用一开始都只能拥有最小的权利,就是只能操作自己对应的内存区域的数据,在用户安装应用的Android会让用户自己选择是否对应用进行额外的授权,如读取短信,读取联系人等。5.0之后,Android进一步增加了运行时授权,比如使用美团接收验证码的时候,系统会提示美团试图读取短信内容,询问用户是否进行授权。
以上就是今天的学习内容,匆忙码字,不准确的地方欢迎商讨。
- android 学习 1 创建android
- Android学习(1)
- android学习笔记1
- Android学习笔记-1
- android jni 学习1
- android学习笔记1
- android学习历程1
- android学习笔记(1)
- android学习资源-1
- Android学习日记1
- android 北风 学习1
- Android学习-计算器1
- Android 学习笔记1
- android学习笔记1
- android 学习笔记1
- android phone学习1
- android学习笔记(1)
- Android学习笔记1
- C语言(6)------基本数据类型之浮点型数据类型
- test
- 【WP】Chrome主题diy
- 在Ubuntu系统中安装Redis数据库服务器(附Redis常用的命令)
- 求两个排好序的数组的中位数 - 二分法
- Android学习1
- Activity四种启动模式
- 在mooc的Python路
- 【WP】Json抓包
- 单个进程最大线程数
- oracle学习笔记名词篇
- 行人检测资源
- UVa 12034 Race
- 啥?