| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> Android软件架构 -> 正文阅读 |
|
[移动开发]Android软件架构 |
前言本篇文章只是简单解答一下安卓的软件架构,是我在学习中的一个笔记,如果有内容错误,欢迎评论指正,如果有更好的资料也欢迎大家一起分享~ 正文首先看一下Android软件架构的框图,对于框图中库的作用都放进去了,当然库可能不完整,可以下面这篇文章:代码目录https://blog.csdn.net/weixin_39723405/article/details/90199453https://blog.csdn.net/weixin_39723405/article/details/90199453当然还包含了SOA的部分内容,详细可以看下面两篇文章:SOAhttps://mp.weixin.qq.com/s/vFHw3U3ESJs_16x6e2kctghttps://mp.weixin.qq.com/s/vFHw3U3ESJs_16x6e2kctgSOA背景介绍https://mp.weixin.qq.com/s/rSgiu4tEzY9l6WDQHrqB5whttps://mp.weixin.qq.com/s/rSgiu4tEzY9l6WDQHrqB5w Android软件架构如下: ??软件架构主要包含了五层,分别是应用程序层、应用程序框架层、运行库层、硬件抽象层和操作系统内核层。 ?针对其中几个知识点做一个简要的说明:1、Framework 是在应用层之下,用来支持应用层,Framework层预制在设备上,开发时,可以随意使用; 2、Android的运行环境由系统库(core libraries)和虚拟机组成,每个APP都运行在一个系统进程里,每个系统进程都是一个虚拟机,虚拟机运行DEX文件,一般android会用dx工具把JVAV文件转换为DEX文件; 3、Core libraries是源于Java的运行库,在Java库里重写了Java的东西,组织架构; 4、HAL硬件抽象层一般是在用户空间,规定了模块的命名规范和动态共享库的存放路径规范,抽象层不放在Linux内核空间是因为用户空间是可以不公开源代码,但Linux内核是要公开源代码; 5、binder是IPC是进程通信的一种,因为内核间的进程是相互隔离的,需要通信,binder的IPC通信,拷贝只需1次,仅次于共享,该通信的框架明确稳定,为每个APP分配UID,来识别进程身份,更安全,防止各种APP偷窥数据; 接下来是一些我自己不懂的知识点整理: 线程与进程的区别?1、每个APP运行都会占用一个进程,每个进程中至少包括一个线程; 2、资源分配给进程,同一个进程的所有线程都会共享该进程的所有资源; 3、真正在处理机上运行的是线程,线程运行中需要使用计算的内存资源和CPU; 4、进程间的通信方式(IPC):①管道(pipe);②信号(signal);③消息队列(message queue);④共享内存(shared memory);⑤信号量(semaphore);⑥套接字(socket); 5、多线程间的通信采用:①等待/通信机制(基于wait和notify方法);②Volatile(可见性让线程间通信);③join方式(线程调用后按顺序有序执行);④threadLocal(单线程内部通信)。 SOA理解?1、SOA是基于AP(adaptive) AUTOSAR提出面向服务的中间层概念,这里需要说一下AP与CP(classic)? AUTOSAR的区别: 芯片类型不同:AP:运行在64bit的高性能处理器(MPU)、CPU等中,如瑞萨的H3,英伟达的Xavier等。除此之外,AP 也可以运行在虚拟硬件上;CP运行在8bit、16bit、32bit的微控制器(MCU)中,如英飞凌的TC3xx,瑞萨的RH850等; 芯片算力:AP:运行算力高于20000DMIPs的芯片上,CP算力低于1000DMIPs; OS:AP:是POSIX OS POSIX OS说明https://blog.csdn.net/weixin_33788244/article/details/86400142 CP:基于OSEK标准 OSEK OS 与CP Autosar OShttps://zhuanlan.zhihu.com/p/71005662 通信方式:AP:支持以太网IPC、RPC等,CP:CAN、LIN、Flexray,CP也可以支持SOME/IP,但是CP中SOME/IP只不过是把Sender-Receiver的CAN通信转换成了Client-Server的以太网通信,整个通信链路仍是静态配置的,并不是真正的面向服务的通信,所以不会说CP是SOA,而只说AP是SOA; 安全等级:AP可达到ASILB(但不局限于),CP可达到ASILD等级; OTA:AP可以进行OTA,CP常用于ECU间的通信,用于静态配置,自身无法进行OTA, 传输速率:AP传输速率ms级,CP传输速率达到μs级; 应用场景:AP应用于对实时性有一定要求、对功能安全有一定要求,对算力要求较高的场景,如传感器融合动态实时更新,自动驾驶中与云服务器,交融设备通信等,CP一般应用在对实时性要求高、对功能安全要求高、对算力要求较低的场景中,如制动系统等 总的来说,在软件架构中,AP是向上的接口,CP是向下的接口,两者相互补充,共同作用。 2、SOA分为基础中间层和专用中间层,基础中间层是以原子服务封装,并提供标准化接口,原子服务是基于功能定义的(并不是软件或者硬件层级),原子服务是稳定的,不易变的,原子服务要完成硬件端口、网络信号还有外围器件的抽象,原子服务可包括诊断信息(I/O、器件、信号等诊断),原子服务之间是低耦合的,例如门锁开服务,门锁关服务,车窗关服务,车窗开服务; 3、专用中间层是将原子服务进行组合,且是独立执行的,如门锁服务,车窗服务等。 ? ?Android runtime虚拟机?1、虚拟机分为ART和Dalvki,其中Dalvki在Android4.4版本以下使用,ART(Android Runtime)在Android4.4版本以上使用; 2、Dalvki采用JIT(just in time Compiler)技术,ART采用AOT(Ahead Of Time)技术; 3、JIT就是即时编译技术,在Java开发Android,编译打包APK文件会经历以下流程: ? ?Dalvik虚拟机负责将DEX文件解码为机器码,即在每一次APP运行时,都需要进行译码工作,使得运行速度慢,Google是加入了JIT编译器,编译了运行较多的DEX文件为本地机器码; 4、AOT已经彻底取代了JIT,在第一次安装APK时,字节码会预先编译成机器码,将DEX文件编译为oat文件,让他变成本地应用,在APP真正运行时,不再额外编译,直接就读取oat文件,提高运行速度,但是这样APK在安装时,需要更大的存储空间,通常是代码包的20%空间,安装时间变长。 结尾多多指正,有好的资料期待你的分享。 |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 7:46:22- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |