Android HAL
2010-04-21 06:36:00 来源:WEB开发网HAL 介绍
Android 的 HAL (硬件抽像层)是 Google 因应厂商「希望不公开源码」的要求下,所推出的新观念,其架构如下图。虽然 HAL 现在的「抽象程度」还不足,现阶段实作还不是全面符合 HAL 的架构规划,不过也确实给了我们很好的思考空间。
图 1 : Android HAL 架构规划
这是 Patrick Brady (Google) 在 2008 Google I/O 所发表的演讲「 Anatomy & Physiology of an Android 」中,所提出的 Android HAL 架构图。从这张架构图我们知道, HAL 的目的是为了把 Android framework 与 Linux kernel 完整「隔开」。让 Android 不至过度依赖 Linux kernel ,有点像是「 kernel independent 」的意思,让 Android framework 的开发能在不考虑驱动程序的前提下进行发展。
在 Android 原始码里, HAL 主要的实作储存于以下目录:
1. libhardware_legacy/ - 过去的实作、采取链接库模块的观念进行
2. libhardware/ - 新版的实作、调整为 HAL stub 的观念
3. ril/ - Radio Interface Layer
在 HAL 的架构实作成熟前(即图 1 的规划),我们先就目前 HAL 现况做一个简单的分析。另外,目前 Android 的 HAL 实作,仍旧散布在不同的地方,例如 Camera 、 WiFi 等,因此上述的目录并不包含所有的 HAL 程序代码。
HAL 的过去
图 2 : Android HAL / libhardware_legacy
过去的 libhardware_legacy 作法,比较是传统的「 module 」方式,也就是将 *.so 档案当做「 shared library 」来使用,在 runtime ( JNI 部份)以 direct function call 使用 HAL module 。透过直接函数呼叫的方式,来操作驱动程序。
当然,应用程序也可以不需要透过 JNI 的方式进行,直接以加载 *.so ?( dlopen )的做法呼叫 *.so 里的符号( symbol )也是一种方式。
HAL 的现实状况
图 3 : Android HAL / libhardware
- ››Android 当修改一些代码时,使用什么编译命令可以最...
- ››Android 如何添加一个apk使模拟器和真机都编译进去...
- ››Android 修改Camera拍照的默认保存路径
- ››Android 如何修改默认输入法
- ››android开发中finish()和System.exit(0)的区别
- ››Android手势识别简单封装类
- ››android中查看项目数字证书的两种方法
- ››Android中获取IMEI码的办法
- ››android 相机报错 setParameters failed
- ››Android重启运用程序的代码
- ››Android为ListView的Item设置不同的布局
- ››android bitmap与base64字符串的互相转换
更多精彩
赞助商链接