Android笔记:了解Android系统

216 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

本系列记录一下自己的Android学习心得,有错误的地方希望大佬们可以指正呀~

开始启程

只是简单简单简单了解一下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/binLinux自带组件
system/build.prop设备属性信息
system/frameworkFramework层
system/liblib库层
system/usr用户配置
data/app用户安装的APP
data/data内部存储空间
data/system系统信息
data/miscWIFI,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权限