我想在tiny6410的Android2.3上移植对GPS的支持,通过分析,我发现2.3中对GPS的框架已经完全使用了HAL的对象代理框架,不再像2.2的传统HAL结构。在对HAL的对象代理架构分析之后,便开始对GPS进行移植。但在过程中出现了一点问题,请大家分析一下:
首先,我在源码中找到了sdk/emulator/gps/gps_qemu.c, 然后再对其进行修改后使其实现了对GPS硬件的支持,会被编译成gps.default.so,这个库将被JNI层的frameworks/base/services/jni/com_android_server_location_GpsLocationProvider.cpp使用。
在对整个系统进行修改后,出现了当GPS应用程序启动后VM就重启的情况。我在跟踪代码的过程中发现 底层的GPS数据能够得到并被回调到JNI层使用,但是当在JNI层回调frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java中提供给JNI的GpsLocationProvider类的方法 “reportLocation” 时候,VM就重启了。不知道大家有谁有过类似的问题或者对此有什么好的想法。