我知道Android不提供对串行端口的开箱即用的访问,除非设备是基于根的,或者是一个定制的Android版本被闪烁,比如在BeagleBone黑板上--这正是我的情况。使用安卓SerialPort API项目,我可以通过样例GUI应用程序访问和测试我的设备的串口(稍微修改一下)。
但是,我也想为Serial添加JUnit测试,因为我将把它扩展到一个库模块中,供客户端程序员使用。我尝试使用AndroidTestCase,但是我收到了错误:
java.lang.UnsatisfiedLinkError: Native method not found:
com.XXX.android.serialport_api.SerialPort.open:
(Ljava/lang/String;II)Ljava/io/FileDescriptor;
at com.XXX.android.serialport_api.SerialPort.open(Native
Method)
at com.XXX.android.serialport_api.SerialPort.<init
(SerialPort.java:32)在我看来,serialport.so文件在AndroidTestCase提供的模拟环境中无法加载/可见。我正在使用Android中的"New“向导创建的标准测试结构。
任何建议或提示都会很感激,因为我对这个话题的搜索没有结果。如果需要的话,我很乐意提供测试类和实现(尽管实现与上面提到的开源示例中的SerialPort.java类基本相同)。
发布于 2015-08-05 13:10:12
我发现了问题。包名是在预编译的.so文件中硬编码的。因此,不必使用像com.XXX.XXX这样的自定义包名,而必须将SerialPort (和其他实现类)直接放在/java文件夹下的顶层包中。包名应该是android_serialport_api --就像库示例中的那样。
https://stackoverflow.com/questions/31474350
复制相似问题