Chinaunix首页 | 论坛 | 博客
  • 博客访问: 9176771
  • 博文数量: 1728
  • 博客积分: 12961
  • 博客等级: 上将
  • 技术积分: 19870
  • 用 户 组: 普通用户
  • 注册时间: 2009-01-09 11:25
个人简介

偷得浮生半桶水(半日闲), 好记性不如抄下来(烂笔头). 信息爆炸的时代, 学习是一项持续的工作.

文章分类

全部博文(1728)

文章存档

2024年(4)

2023年(26)

2022年(112)

2021年(217)

2020年(157)

2019年(192)

2018年(81)

2017年(78)

2016年(70)

2015年(52)

2014年(40)

2013年(51)

2012年(85)

2011年(45)

2010年(231)

2009年(287)

分类: LINUX

2009-11-12 14:26:45

上周去深圳参加了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 。

这里边的步骤时:
  1.  Java AP 初始化一个 java service, 然后根据需求组合调用 java service 提供的接口。并在 mainfest.xml 中设置引用Java Service 所在的 JAR包。
  2.  Java Service 设置 Native Interface声明, 并在初始化时加载  Native Service 所在的 库.
  3. Native Service 实际上是一个动态链接库, 通过JNI 和 Java Service 交互。
    • 通过 OnLoad 方法注册与 Java Service 的 Native Function 之间的对应 JNI table 。
    • 通过 HAL Module ID 获得当前实际板上对应的硬件设备的 Module, 并通过此 Module 的 HAL接口 Open 获得硬件设备的 device 实例。 通过device提供的接口组合本地函数的实现。
  4. 编写 HAL stub, 对具体的硬件设备初始化对应 Module 和 Device实例, 并实现对硬件驱动的API封装。

然后在 company/board/ 目录下添加 AndroidBoard.mk (如有需要可以同时添加设置BoardConfig.mk文件), 这说明本目录是一个板级开发板 BSP。

然后添加产品的编译文件(建议放在一个单独目录下,例如 products下), AndroidProducts.mk中引用所有此开发板下的产品的 makefile( 产品名.mk), 其中要设置产品的App及其自主的配置文件(这部分很重要)。

注意的是自主的配置文件应包含以下内容:
  1.    Java Service 对应的Jar包, 作成 xml文件,放在 /system/etc/permissions/目录下,系统启动的时候 android会自动加载其文件内容。
  2. 对于其他配置文件如 init.rc default.prop init.xxx.sh 文件修改建议在编译完成后进行修改,然后在编译就可以做进对应的 img文件里边去了。
阅读(2564) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~