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_DEBUG
とANDROID_LOG_ERROR
withを使用しています。Symbol XXX could not be resolved
JNIEnv *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では、コードのコンパイルエラーを解決せずにプロジェクトを開始することができないためです。