这几天正在看HAL,网络上只有这个案例:分析台湾的Jollen的mokoid 工程代码,本文记录编译过程。

预备环境:
1.有Android的项目源代码,已经交叉编译完成。
2.了解Android JNI,自己最好照着NDK r4版本的sample写一个JNI程序;
3.台湾的Jollen的mokoid 工程代码下载 http://code.google.com/p/mokoid/

参考文档:
Android HAL实例解析 - 刘洪涛的专栏 - CSDN博客

《Android硬件驱动开发关键技术和HAL移植要领.pdf》Jollen的培训文档,这个Blog不好上传pdf,有兴趣的tx到eoe下载。


方法和步骤:
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.

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

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

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

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

本文来自CSDN博客,转载请标明出处:

更多相关文章

  1. Android(安卓)AIDL远程调用
  2. [原]Android应用程序在新的进程中启动新的Activity的方法和过程
  3. Android仿IOS上拉下拉弹性效果的实例代码
  4. Android应用开发实例篇(2)-----挂接电震动
  5. 使用GIT工具获取android应用程序源代码
  6. 从四个视角理解Activity的启动模式
  7. android学生管理系统,利用linerLayout,实现xml的读取和写入,以及按
  8. Android(安卓)MediaScanner源代码解析
  9. Android(安卓)增量更新实例(Smart App Updates)

随机推荐

  1. Microsoft.XMLHTTP对象介绍
  2. maven项目不编译xml文件的解决办法
  3. Jaxb2实现Bean与xml互转的示例代码详解
  4. java对象转换为xml格式的示例代码分享
  5. 如何打开xml文件介绍
  6. XStream实现Bean与xml互转的代码示例
  7. XML数据岛之数据修改与添加
  8. 利用xmllint命令处理xml
  9. XML PULL和PUSH技术的区别
  10. XML数据岛之数据分页显示