Android开发入门记录

AIDL与HIDL

https://www.cnblogs.com/ArsenalfanInECNU/p/17972200

AIDL:Android接口定义语言。用来定义Android基于Binder通信的Client和Service之间的接口。 即负责App之间通信,App与Framework通信。
HIDL:HAL接口定义语言。 用来定义Android Framework和Android HAL实现之间的接口,即负责Framework与HAL之间的通信。
由于framework是和HAL一起被编译,Android升级意味着framework升级,就意味着HAL升级,耦合度过高。HIDL就是用于解耦Framework和HAL,framework不再调用HAL,而是通过HIDL来使用HAL模块,每个HAL模块对应一个HIDL服务,通过HIDL服务打开HAL下的设备。

  • 为什么Google鼓励将Android的HIDL HAL实现替换为AIDL HAL实现?这种鼓励仅限于Audio模块,还是对Android内的所有组件都适用?
  1. 实际上,HIDL和HAL的紧密耦合度仍然较高,需要进一步独立HAL
  2. AIDL具有更好的版本控制系统和更广泛的兼容性
  3. AIDL在某些情况下可能提供更优的性能表现
    这种鼓励并不仅限于Audio模块,而是所有组件。
    展开说说:
  4. 如果HAL层也使用了AIDL的方式,那么就可以直接从应用进程调用到HAL进程,而不是先访问HAL的服务,通过system server进程的中介
    在这里插入图片描述

使用AIDL for HALs

1. 定义HAL接口
创建对应模块目录
创建按照规则子目录下的aidl文件
2. 配置Android.bp
模块目录配置顶层Android.bp
3. 编译模块,生成AIDL API接口
4. 实现HAL接口
5. 实现服务

AOSP架构概览

什么是AOSP

“Android Open Source Project”,安卓开放源代码项目。AOSP是基于Linux开的,通过 AOSP 可以编译出一个比较纯净的操作系统。

和Android有什么区别?

Android = AOSP(开源) + GMS(闭源),AOSP 是个毛坯房,Android 是个精装房。

AOSP兼容级别

实现 AOSP 的设备有两种兼容性级别:AOSP 兼容性和 Android 兼容性。AOSP 兼容的设备必须符合CDD要求,Android 兼容的设备必须符合 CDD 和 VSR(供应商软件要求),包括实习时写的VTS测试等。

AOSP架构

AOSP 软件堆栈架构
Android Framework
安卓框架。构建应用所依据的一组 Java 类、接口和其他预编译代码。框架的某些部分可通过使用 Android API 公开访问。框架的其他部分只能由 OEM 通过系统 API 来访问。Android 框架代码在应用进程内运行。

AOSP结构目录

https://blog.youkuaiyun.com/u011077027/article/details/103541542


Android启动

在这里插入图片描述
init初始化过程中:

  • Android分别挂载tmpfs,devpts,proc(获取系统信息/修改内核参数),sysfs,selinuxfs这5类文件系统
  • 初始化属性系统、解析SELinux匹配规则建立SELinux系统、启动系统属性服务
  • 解析init.rc,将各个配置转换成数组(队列),然后开启无限循环去处理,并通过epoll监听子进程结束和属性设置 (.rc文件主要有根目录下的 /init.rc ,以及{system,vendor,odm}/etc/init/这三个目录下的 *.rc)

init.rc使用特定语言(Android Init Language)编写,主要配置两个东西:actionservice,两者都加上一些补充内容组成一个Section,rc文件就是由一个个Section组成的。

  • action的格式如下:
    on <trigger> [&& <trigger>]*
       <command>
       <command>
       <command>

以on开头,trigger是判断条件,command是具体执行一些操作,当满足trigger条件时,执行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值