当前位置: 代码迷 >> Android >> 从Android驱动到HAL到JNI到SERVICE遇到的有关问题,求交流多谢
  详细解决方案

从Android驱动到HAL到JNI到SERVICE遇到的有关问题,求交流多谢

热度:21   发布时间:2016-04-28 06:34:49.0
从Android驱动到HAL到JNI到SERVICE遇到的问题,求交流谢谢。
本人新手入手Android不到一个月,面对一个这样的一个项目:为Android系统添加CAN总线驱动,然后添加硬件抽象层(HAL),然后添加java本地接口(JNI),然后添加应用程序服务框架service,最后编写APP和电脑通信。。。
        我通过百度等搜索资料。逐渐移植了CAN驱动,添加了HAL层,编写了JNI,最后添加服务的时候编译遇到问题。。我详细描述一下我的过程,请各位准确指点下。(这个问题困扰我3天了。。。)
        首先我编写了HAL层编译出了flexcan.default.so如下图。
接着在源代码下边导入com_android_server_Canservice.cpp进行编译得到了libandroid_servers.so如下图。
然后进入core/android/os/底下创建ICanService.aidl文件写入接口函数,修改对应配置文件。然后到com/android/server/底下创建了CanService.java文件对接口进行实现,对应的配置文件也修改。编译得到framework.jar如下图。。。
最后进行增加自启动服务,可是此时却出现了错误,提示CanService.java实现的接口函数是静态的,无法被复写。。。。如图所示。

此时的错误谁遇到过呢?请解释下。谢谢了。这个问题困扰我三天了还没解决掉,我是新手。请解释下。谢谢了。。。。。。

------解决方案--------------------
你这个问题应该是 CanService.java 文件调用的JNI方法与frameworks/base/services/jni 路径下对应的
com_android_server_ CanService.cpp 定义的JNI方法不匹配导致的。

同时,请确保
frameworks/base/services/java/com/android/server路径下存在 CanService.java  文件
frameworks/base/services/jni 路径下存在 com_android_server_ CanService.cpp  文件
注意你这两个文件的名称一定要匹配,不匹配的话就会出问题。
  相关解决方案