4

我正在尝试将Android SerialPort API集成到我的项目中,但这样做时遇到了一些问题。

  • Eclipse 没有解析所有 JNI 和本机相关的方法和字段。这是Android SerialPort API的 SerialPort.c 文件的开头:

    #include <termios.h>
    #include <unistd.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    #include <string.h>
    #include <jni.h>
    
    #include "SerialPort.h"
    
    #include "android/log.h"
    static const char *TAG="serial_port";
    #define LOGI(fmt, args...) __android_log_print(ANDROID_LOG_INFO,  TAG, fmt, ##args)
    #define LOGD(fmt, args...) __android_log_print(ANDROID_LOG_DEBUG, TAG, fmt, ##args)
    #define LOGE(fmt, args...) __android_log_print(ANDROID_LOG_ERROR, TAG, fmt, ##args)
    

    第一个define-statement有效,但在其他两个中,eclipse是markingANDROID_LOG_DEBUGANDROID_LOG_ERRORwith Symbol XXX could not be resolved,以及JNIEnv *env串口方法内部的方法的每次调用。

    但是 JNIEXPORT 或 JNICALL 语句没有错误。

  • 当我试图解决这个问题时,出现了一个问题。我下载了库的所有文件并将它们复制到网站上给出的目录中。但似乎 JNI 部分出了点问题,我无法调用open()以获取我的串行设备。

     11-19 14:18:22.232: D/dalvikvm(17898): Trying to load lib /data/data/master.androidsirfparser/lib/libserial_port.so 0x416a8570
     11-19 14:18:22.232: D/dalvikvm(17898): Added shared lib /data/data/master.androidsirfparser/lib/libserial_port.so 0x416a8570
     11-19 14:18:22.232: D/dalvikvm(17898): No JNI_OnLoad found in /data/data/master.androidsirfparser/lib/libserial_port.so 0x416a8570, skipping init
     11-19 14:18:22.232: W/dalvikvm(17898): No implementation found for native Lmaster/serial/SerialPort;.open (Ljava/lang/String;II)Ljava/io/FileDescriptor;
     11-19 14:18:22.240: W/dalvikvm(17898): threadid=11: thread exiting with uncaught exception (group=0x40a471f8)
     11-19 14:18:22.240: E/AndroidRuntime(17898): FATAL EXCEPTION: Thread-651
     11-19 14:18:22.240: E/AndroidRuntime(17898): java.lang.UnsatisfiedLinkError: open
     11-19 14:18:22.240: E/AndroidRuntime(17898):   at master.serial.SerialPort.open(Native Method)
     11-19 14:18:22.240: E/AndroidRuntime(17898):   at master.serial.SerialPort.<init>(SerialPort.java:61)
     11-19 14:18:22.240: E/AndroidRuntime(17898):   at master.androidsirfparser.ReadThread.init(ReadThread.java:38)
     11-19 14:18:22.240: E/AndroidRuntime(17898):   at master.androidsirfparser.ReadThread.run(ReadThread.java:48)
    

    我总是收到“找不到实现”的消息。

为了解决问题二,我必须先解决问题一,因为 Eclipse 不允许我在不解决代码中的编译错误的情况下启动我的项目。

4

1 回答 1

3

我重新安装了我的 java 平台,eclipse IDE,添加了 android eclipse 插件,现在它可以工作了。我不知道为什么。

于 2012-11-20T13:11:11.037 回答