转载自:http://www.eoeandroid.com/forum.php?mod=viewthread&tid=53617


这几天正在看HAL,网络上只有这个案例--台湾的Jollen的mokoid 工程代码。
前几天发了个项目代码和PDF,这次记录编译过程。

再附录一个《Android硬件驱动开发关键技术和HAL移植要领.pdf》Jollen的培训文档。
Android硬件驱动开发关键技术和HAL移植要领.pdf(1.43 MB, 下载次数: 515)
预备环境:
1.有Android的项目源代码,已经交叉编译完成。
2.了解Android JNI,自己最好照着NDK r4版本的sample写一个JNI程序;
3.台湾的Jollen的mokoid 工程代码下载http://code.google.com/p/mokoid/

参考文档:
Android HAL实例解析 - 刘洪涛的专栏 - CSDN博客
方法和步骤:
1.编译Android系统源代码。
2.把Jollen的mokoid 工程放到android2.1\vendor的目录下(android2.1 是Android的源代码根目录)
3.遇到的问题在《Android HAL实例解析 - 刘洪涛的专栏 - CSDN博客》基本都有说明。

下面罗列我遇见的各种遇到的情况说明:
1. make: *** 没有规则可以创建“out/target/product/ut6410/obj/SHARED_LIBRARIES/led.goldfish_intermediates/led.goldfish.o”需要的目标“vendor/mokoid/hardware/mo
看vendor\mokoid\hardware\modules\led\Android.mk
注释掉不要的
--------------------------------------------------------------------------------------------------
LOCAL_PRELINK_MODULE := false
LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/hw
LOCAL_SHARED_LIBRARIES := liblog
LOCAL_SRC_FILES := led.c
LOCAL_MODULE := led.default
include $(BUILD_SHARED_LIBRARY)

# Mokoid LED
#include $(CLEAR_VARS)
#
#LOCAL_C_INCLUDES += \
# vendor/mokoid/hardware/modules/include/
#
#LOCAL_PRELINK_MODULE := false
#LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/hw
#LOCAL_SHARED_LIBRARIES := liblog
#LOCAL_SRC_FILES := led.dma6410xp.c
#LOCAL_MODULE := led.smdk6410
#include $(BUILD_SHARED_LIBRARY)
--------------------------------------------------------------------------------------------------

2.target thumb C++: libmokoid_runtime <= vendor/mokoid/frameworks/base/service/jni/onload.cpp
arm-eabi-g++: vendor/mokoid/frameworks/base/service/jni/onload.cpp: No such file or directory
arm-eabi-g++: no input files
看vendor\mokoid\frameworks\base\service\jni\Android.mk文件。
找不到onload.cpp,从google code下载下来就没有,先注释掉。

3.复制com.mokoid.server.xml 到目标系统的system/etc/permissions/目录下。


4.修改LedClient.apk或LedTest.apk的 Makefile.

LOCAL_MODULES_TAGS :=user
eng


5.继续编译,编译成功,打包Image,下载到开发板。

6.运行成程序,界面提示异常,用logcat看日志, 提示找不到 JNI_OnLoad,把《Android HAL实例解析 - 刘洪涛的专栏》文中提到的第三点代码copy到com_mokoid_server_LedService.cpp中,重新编译,在开发板上下载libmokoid_runtime.so到/system/lib下。


运行应用程序OK.大功告成!~

未完待续.....对HAL的和JNI的理解

本人很菜,学习中.

bolg:允许转载,请注明出处: http://blog.csdn.net/win2k3net/archive/2010/12/30/6106803.aspx

更多相关文章

  1. Android 网络编程之网络通信几种方式实例分享
  2. Android上使用ksoap2支持Web Service服务调用实例
  3. 22个值得收藏的android开源代码-UI篇
  4. 把android sdk 1.5源代码加入SDK
  5. Android Google Map实例 - 添加GPS位置标注(Android mapview)
  6. Android中Handler与Message的简单实例
  7. Android Google Map实例 - 在地图和卫星图之间切换(Android mapv
  8. 在Ubuntu16.04上下载并编译Android内核源代码

随机推荐

  1. Android(安卓)Studio开启Lambda
  2. Android(安卓)Studio安装与配置
  3. Android实现自定义时钟控件
  4. 在桌面chrome中调试android设备中的web页
  5. Linux基础 for Android
  6. Qt5.3 For Andoid 安装过程
  7. Ubuntu下安装配置Android(安卓)SDK
  8. AndEngine 分析之八------Texture
  9. "Copy" did not complete normally. Plea
  10. osg for android 学习之十一:从3dmax导出o