4

Android SerialPort APIをプロジェクトに統合しようとしていますが、いくつか問題があります。

  • Eclipseは、すべてのJNIおよびネイティブ関連のメソッドとフィールドを解決しているわけではありません。これは、AndroidSerialPortAPIの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は機能しますが、他の2つでは、eclipseは、シリアルポートのメソッド内のメソッドのすべての呼び出しと同様に、マーキングANDROID_LOG_DEBUGANDROID_LOG_ERRORwithを使用しています。Symbol XXX could not be resolvedJNIEnv *env

    ただし、JNIEXPORTまたはJNICALLステートメントにエラーはありません。

  • この問題を解決しようとしたときに問題1が発生しました。ライブラリ用のすべてのファイルをダウンロードして、Webサイトにあるディレクトリにコピーしました。しかし、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)
    

    常に「実装が見つかりません」というメッセージが表示されます。

問題2に取り組むには、最初に問題1を解決する必要があります。これは、Eclipseでは、コードのコンパイルエラーを解決せずにプロジェクトを開始することができないためです。

4

1 に答える 1

3

Java プラットフォームである Eclipse IDE を再インストールし、Android Eclipse プラグインを追加したところ、動作するようになりました。理由はわかりません。

于 2012-11-20T13:11:11.037 に答える