记录一下自己的学习心得
有错误的地方希望大佬们可以指正
开始启程
只是简单简单简单了解一下Android系统
Android系统架构
- 应用层
- Framework框架层(View系统,活动管理器,包管理器…)
- 额外的C库+虚拟机(Dalvik已淘汰,目前使用ART)
- 硬件接口封装
- linux C语言内核
在Dalvik虚拟机上,APK中的dex文件在安装时会被优化成odex文件,在运行时会被JIT编译器编译成native代码
在ART虚拟机上安装时,dex文件会直接由dex2oat工具翻译成oat格式的文件,oat文件中既包含了dex文件中原先的内容,也包含了已经编译好的native代码
Android系统目录
在每个Android手机上都可以查看到
目录 | 用途 |
---|---|
system/app | 系统APP |
system/bin | Linux自带组件 |
system/build.prop | 设备属性信息 |
system/framework | Framework层 |
system/lib | lib库层 |
system/usr | 用户配置 |
data/app | 用户安装的APP |
data/data | 内部存储空间 |
data/system | 系统信息 |
data/misc | WIFI,VPN,蓝牙等(Mobile Information Service Center) |
应用层四大组件
- Activity 门面
- Service 后台
- Broadcast Receiver 广播
- Content Provider 程序间共享数据
Android系统迭代
4.0:
禁止在UI线程中开启网络操作
6.0:
引入了运行时权限
读写SD卡成为危险权限
不再支持HttpClient
7.0:
直接使用本地路径的Uri(file://...)被认为是不安全的,会抛出FileUriExposedException异常
8.0:
静态注册的广播接收器无法接收大部分隐式广播(防止APP未启动就可以开启后台操作)
引入了通知渠道和应用图标上的通知圆点
Service运行在后台时随时会被系统回收,只有应用前台可见时,Service才能稳定运行
9.0:
不再支持HTTP明文,只允许使用HTTPS,强行使用HTTP需要额外配置
使用前台Service需要在Manifest里声明FOREGROUND_SERVICE权限