java.lang.UnsatisfiedLinkError: No implementation found for

最近在android4.4升5.0的项目中,经常遇到java.lang.UnsatisfiedLinkError: No implementation found for的问题,出现这个问题主要是因为MTK或高通5.0的框架代码相比于4.4有了很大的改变,尤其是它的jni库等都发生了变化,出现这个错误说明是找不到java层引用的那个jni函数。最近发现的可能原因如下:

1. 没有调用System.loadLibrary()函数加载库。在4.4中,有些应用的相应load函数是在框架中发生的,而在5.0中却没有了,因此首先需要检查load函数是否存在。对应用而言,load函数最好写在Application中,可确保一定会被加载。注意库加载时,比如库名称为libtest.so,那么对应的load函数写法为System.loadLibrary("test");

2. 底层库文件与上层Java jni文件对应的包名或类名发生了变化,这需要核对jni文件注册的地方jniRegisterNativeMethods(),这个函数对应了上层Java jni的包名和类名。

3. 底层库文件与上层Java jni文件对应的函数名称,函数参数等发生了变化,这需要核对JNINativeMethod gMethods[],jni函数注册的地方。

时间: 2024-10-23 09:52:45

java.lang.UnsatisfiedLinkError: No implementation found for的相关文章

【我的Android进阶之旅】Android调用JNI出错 java.lang.UnsatisfiedLinkError: No implementation found for的解决方法

错误描述 今天使用第三方的so库时候,调用JNI方法时出现了错误.报错如下所示: 11-01 16:39:20.979 4669-4669/com.netease.xtc.cloudmusic E/art: No implementation found for void com.netease.xtc.cloudmusic.utils.NeteaseMusicUtils.nativeInit(android.content.Context) (tried Java_com_netease_xt

NDK Caused by: java.lang.UnsatisfiedLinkError:

Caused by: java.lang.UnsatisfiedLinkError: No implementation found for java.lang.String 如果你的文件是cpp文件, 你需要使用 extern "C" { void foo(); } 否则java连接不到 实现

java.lang.UnsatisfiedLinkError: D:\apache-tomcat-7.0.57\bin\tcnative-1.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform 错误

为了开发JavaWEB,安装了MyEclipse,在运行tomcat的时候发现报错:java.lang.UnsatisfiedLinkError: D:\apache-tomcat-7.0.57\bin\tcnative-1.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform.自己上网查了下,发现这个错误对于项目的运行时没有什么大碍的,可能自己有强迫症,总是想没错,就上网找了解决方法.我先麻烦,就选择了最简单的方法,去tomcat目录下

J2EE引擎出现java.lang.UnsatisfiedLinkError: CC错误的原因

运行JSP报表程序页面出现java.lang.UnsatisfiedLinkError: CC错误有以下几种原因和处理方法: 1.请查看控制台的错误信息 a:如果控制台的消息是类似 java.lang.UnsatisfiedLinkError: no MRChkLib in java.library.path,Error loading library MRChkLib 这样的错误信息,那么是因为MRChkLib.dll没有拷贝到windows的System32目录下. (MRChkLib.dl

Caused by: java.lang.UnsatisfiedLinkError: Couldn't load BaiduMapVOS_v2_1_3: findLibrary returned nu

在使用百度地图进行开发的时候,如果遇到了 Caused by: java.lang.UnsatisfiedLinkError: Couldn't load BaiduMapVOS_v2_1_3: findLibrary returned null 这时候你可以尝试把armeabi-v7a这个包删除....如果实在不行可以尝试一下把X86这个报业删除试一下. Caused by: java.lang.UnsatisfiedLinkError: Couldn't load BaiduMapVOS_v

Error: java.lang.UnsatisfiedLinkError: no ntvinv in java.library.path

Error Message When compiling or executing a Java application that uses the ArcObjects Java API, the following error is returned: java.lang.UnsatisfiedLinkError: no ntvinv in java.library.path Cause The PATH variable does not include a directory which

Error loading RS jni library: java.lang.UnsatisfiedLinkError 解决方案

我们可能会用到模糊效果,就会想到renderscript.jar , 但是模糊效果是3.0以后的效果,在有的4.x以上的手机上也会造成错误,Error loading RS jni library: java.lang.UnsatisfiedLinkError,会报出这样的错误,明显是手机上没有.so包. 错误图示 明显可以得出,没有.librsjni.so的包存在,那么要怎么处理呢,其实在sdk中已经提供了相应的.so库.我们只要找到即可,然后放入libs下即可 这样在任何机型上都不会报错了,

Android studio java.lang.UnsatisfiedLinkError

最近开始转android Studio 本来以为新的开发工具会大大的提高效率 .结果我错了.今天踩了一天的坑. 我的项目中用到了so的文件.通常情况下在 eclipse中我们在libs/armeabi 这个目录下放so文件.一般情况下 都可以加载的到. 但是,刚换到AS 我也是这样做的.把so 文件放到 libs/armeabi 这个目录下.同时也在 app的gradle 文件中配置了如下的信息: sourceSets { main { jniLibs.srcDirs = ['libs'] }

Android中运行的错误:java.lang.UnsatisfiedLinkError: Couldn't load locSDK3: findLibrary returned null.

今天在使用百度地图的时候运行发现报错: 明明已经加入了liblocSDK3.so,但总是无法定位.提示错误java.lang.UnsatisfiedLinkError: Couldn't load locSDK3: findLibrary returned null. 网上找了很多的资料找到一个方法: 在libs下新建一个armeabi-v7a,然后将liblocSDK3.so复制一份到该文件夹" 如果这个不行,那么新建一个armeabi文件夹再放入liblocSDK3.so就可以了. Andr