Android调用JNI时报异常: java.lang.Unsa
2018-09-20 本文已影响43人
蘑菇v5
【声明:】本文是作者(蘑菇v5)原创,版权归作者 蘑菇v5所有,侵权必究。本文首发在简书。如若转发,请注明作者和来源地址!未经授权,严禁私自转载!
项目需求:
对接平板硬件,使其能够根据状态,动态变换两边颜色。
异常问题:
根据厂家提供的demo
,调试自己程序的时候,每次都报java.lang.UnsatisfiedLinkError: No implementation found for xxx...
但是自己的各种配置,都是根据demo
的,所以很疑惑。使用第三方的so
库时候,调用JNI
方法时出现了错误。报错如下所示:
异常原因:
我们.so
中函数声明涉及到的package name
和class name
与调用它的package name
和class name
不符,对照本项目,就是项目中类的包名一定要是com.example.elcapi
,而项目中写的是com.example.test
。原因是JNI
接口Java_com_example_elcapi_jnielc
中,com.example.elcapi
代表的是package name
,jnielc
则是class name
。
解决方法:
修改项目结构,新建包名com.example.elcapi
,路径不能错,并把jnielc
类移到该包名下面。如下图所示:
其他配置(红色是重点) 其他配置项
效果图1 效果图2效果图: