1. Native Crash 錯誤信號
信號 | 信號值 | 錯誤描述 |
---|---|---|
SIGILL | 4 | 非法指令 |
SIGFPE | 4 | 算數(shù)錯誤,例如:除以零 |
SIGABRT | 6 | 異常終止 |
SIGBUS | 7 | 內(nèi)存錯誤,不可訪問的內(nèi)存區(qū)域 |
SIGSEGV | 11 | 段錯誤,非法內(nèi)存訪問、越界訪問 |
2. UnsatisfiedLinkError
異常信息:
Process: com.woosiyuan.cruiserobot.robot, PID: 8358
java.lang.UnsatisfiedLinkError: Native method not found: android_serialport_api.SerialPort.openTest:(Ljava/lang/String;II)Ljava/io/FileDescriptor;
at android_serialport_api.SerialPort.openTest(Native Method)
at android_serialport_api.SerialPort.<init>(SerialPort.java:70)
at com.woosiyuan.cruiserobot.electronic_tag.CommOperate.<init>(CommOperate.java:36)
at com.woosiyuan.cruiserobot.electronic_tag.ElectronicTagTask.<init>(ElectronicTagTask.java:38)
...
找不到openTest
這個Native
方法導致的錯誤,so
庫里面的方法路徑、方法名稱都是固定的,java
里面如果不對應就會導致這個錯誤,可以通過查看your.so
文件來確定對錯,文本編輯器用十六進制
方式打開your.so
,搜索報錯class
類名,排除錯誤,效果圖如下:
(圖畫的太丑了,請輕噴,哈哈)
畫紅線的地方找到了兩個
Native
方法: open
和close
,然后對應報錯class
里聲明的Native
方法把
openTest
更正為open
,重新編譯運行就正常了。