转载自: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和Linux发行版的区别
  2. Android中Context用法详解
  3. 在Ubuntu7.10上编译android
  4. Android原生(Native)C开发:编译选项小结
  5. 使用GDB调试Android(安卓)NDK native(C/C++)程序
  6. RMS认为Android没有尊重用户自由
  7. Android(安卓)Building System 总结 收藏
  8. Android原生(Native) C开发之一 环境搭建篇
  9. Android(安卓)网络编程之网络通信几种方式实例分享

随机推荐

  1. This text field does not specify an in
  2. 如何将一个 android工程作为依赖工程
  3. Android之getSystemService
  4. Android属性之build.prop生成过程分析
  5. android 动画
  6. Android中的Handler, Looper, MessageQue
  7. 用户空间第一个程序Init
  8. android 背景平铺
  9. android ssl
  10. Android(安卓)SDK下, 如何在程序中输出日