上周去深圳参加了jollen和高焕堂老先生的android开发技术讲座,时间虽短,但收益颇深。尤其对框架的理解和框架搭建的方案思路感触颇深。
这几天对其中的HAL部分做了一个范例,把jollen的原理和demo变成自己的实例。
|
文件: | Android 内训演示稿.odp.rar |
大小: | 1274KB |
下载: | 下载 |
|
|
文件: | taners.tar.bz2.rar |
大小: | 903KB |
下载: | 下载 |
|
解压到 verdor 目录下后 使用 make PRODUCT-idea6410-eng 编译后,修改 root 目录下的default.prop 文件,设置环境变量为ro.product.board=idea6410, 这样 HAL才能认到 stub库 led.idea6410.so 。
这里边的步骤时:
- Java AP 初始化一个 java service, 然后根据需求组合调用 java service 提供的接口。并在 mainfest.xml 中设置引用Java Service 所在的 JAR包。
- Java Service 设置 Native Interface声明, 并在初始化时加载 Native Service 所在的 库.
- Native Service 实际上是一个动态链接库, 通过JNI 和 Java Service 交互。
- 通过 OnLoad 方法注册与 Java Service 的 Native Function 之间的对应 JNI table 。
- 通过 HAL Module ID 获得当前实际板上对应的硬件设备的 Module, 并通过此 Module 的 HAL接口 Open 获得硬件设备的 device 实例。 通过device提供的接口组合本地函数的实现。
- 编写 HAL stub, 对具体的硬件设备初始化对应 Module 和 Device实例, 并实现对硬件驱动的API封装。
然后在 company/board/ 目录下添加 AndroidBoard.mk (如有需要可以同时添加设置BoardConfig.mk文件), 这说明本目录是一个板级开发板 BSP。
然后添加产品的编译文件(建议放在一个单独目录下,例如 products下), AndroidProducts.mk中引用所有此开发板下的产品的 makefile( 产品名.mk), 其中要设置产品的App及其
自主的配置文件(这部分很重要)。
注意的是
自主的配置文件应包含以下内容:
- Java Service 对应的Jar包, 作成 xml文件,放在 /system/etc/permissions/目录下,系统启动的时候 android会自动加载其文件内容。
- 对于其他配置文件如 init.rc default.prop init.xxx.sh 文件修改建议在编译完成后进行修改,然后在编译就可以做进对应的 img文件里边去了。
阅读(2591) | 评论(0) | 转发(0) |