安卓系统架构
官网介绍:https://developer.android.google.cn/guide/platform
- linux 内核,主要是内存管理,进程管理,驱动管理等
- HAL,硬件抽象层,由于 linux 开源许可的原因,各个厂家的驱动不希望开源,所以提供 HAL 各个厂家实现自己的驱动
- android 运行层,包括 c/c++的各种库和 java 虚拟机 davlik 以及 java 标准库,ndk 接口:https://developer.android.google.cn/ndk/reference
- java framework 层,app 框架,提供 activty 管理等,api 接口:https://developer.android.google.cn/reference
Android 系统启动流程
- init 进程
- Zygote 受精卵进程,所有 app 进程都从这里创建,监听 socket:666
- ServiceManager:系统服务的注册查询,bindler 通信的基础,提供 app 和个系统服务的通信
- SystemServer:启动各种系统服务线程 - 系统 ready 后,AMS 启动 home 桌面
- Zygote 受精卵进程,所有 app 进程都从这里创建,监听 socket:666
SystemServer 启动的系统服务:
- ActivityManagerService:四大组件的管理,app 的生命管理
- WindowManagerService: 输入事件的分发和管理
- PackageManagerService :软件包的解包验证安装
apk 安装流程
PackageManagerService 负责解析 apk 包,然后注册 AndroidManifest.xml 所声明的所有组件
APP 启动
HOME 进程发送 startActivity 给 ActivityManagerService,AMS 发送 Zygote 消息创建进程,system_server 发送消息给 App 进程,主线程收到消息后回调 Activity.onCreate
flutter 与 react native 跨平台技术
flutter 框架采用 dart 语言,底层是 dart 虚拟机,release 版本默认 AOT 编译,就是将 dart 代码编译成机器码,所以效率高
reactnative 框架,底层桥,中间是 js 解释器,上层是 jsx,桥接主要包装原生控件或其他功能给上层使用,性能差的原因是一有解释器,而是有桥接转换
参考:
https://www.jianshu.com/p/e084414c7e1c
https://blog.csdn.net/freekiteyu/article/details/70082302
https://www.jianshu.com/p/2f95ab717078