【问题标题】:eclipse can not resolve android native codeeclipse无法解析android原生代码
【发布时间】:2012-11-07 12:04:35
【问题描述】:

我正在尝试将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)
    

    第一个定义语句有效,但在其他两个中,eclipse 是 将ANDROID_LOG_DEBUGANDROID_LOG_ERROR标记为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 不允许我在不解决代码中的编译错误的情况下启动我的项目。

【问题讨论】:

    标签: android eclipse android-ndk serial-port native


    【解决方案1】:

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

    【讨论】:

    • 不幸的是,这是让 eclipse 再次工作的最常见方法,我不得不经常这样做真的很伤心:(
    • 刚刚通过重启解决了同样的问题。男孩,我准备好让 Android Studio 获得 NDK 支持了吗...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-29
    • 1970-01-01
    相关资源
    最近更新 更多