修改Android 4.2.2的原生Camera应用,做一些定制,将Camera的包名从之前的 package com.android.* 修改成了com.zhao3546.*. 调整后,应用可以正常运行,但是Camera自带的特效编辑等功能,无法正常使用.一点图片编辑的图标,就出现了下面的异常: 09-12 18:52:48.131: E/AndroidRuntime(6071): java.lang.UnsatisfiedLinkError: Native method not found:…
调用native方法时报错如下 : “java.lang.UnsatisfiedLinkError: Native method not found....  ”: 原因分析: 链接器只看到了在so中该方法声明,没有看到该方法定义.只要让它们匹配就可. 解决方法: 1.检查包名,类名是否出错. 2.c++中的方法Java_xxx_xxx 中的Java 首字母一定要大写.  (这种情况我测试并没有出现) 3.在xxx.cpp中 忘记 include "xxx.h",这是其中一种可能的情况…
so文件编译生成后,运行时,有时候会遇到java.lang.UnsatisfiedLinkError: Native method not found问题,有可能是以下三种因素: 一.Jni方法头部大小写问题 在C++中,方法名:Java_com_XXX,而不是java_com_XXX.建议直接从生成的.h头文件直接复制方法名到C或者C++文件中. 二.C++文件问题 如果是C++文件(.cpp或者.cc),要使用extern "C" {   } 把本地方法括进去. 三.往Jni方法中…
昨天拿到JNI的Android工程Demo,然后把demo整合到开发的主线工程上,发现调用JNI方法一直抛同一个异常 java.lang.UnsatisfiedLinkError: XXXclass.XXXmethod() 我以为是JNI的so库有问题,但是demo运行时正常的,我无法找到原因的所在.我可以确认的我自己的问题,今天上午问到另外一个写C的同事,向他描述了我的情况.然后他问我是不是包名不一致的原因,我恍然大悟.确实在我移植到主线上的工程时,将定于调用JNI的包名改掉了.而so库在编译…
这次开发是用的百度地图api,导入两个so文件,结果启动的时候总是报Caused by: java.lang.UnsatisfiedLinkError: findlibrary return null: 两个文件已经正确放到armeabi目录下,考虑到(实际上我想了好几个小时)是不是AVD的cpu的原因,我是用的intel,于是我在libs下面创建了一个intelx86文件夹,把两个so文件放进去,启动也不行.可以这么解决这个问题: 1.下载ARM EABI IMAGE,如下图: 2.然后把AV…
错误描述 今天使用第三方的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…
这个异常一般是由于JNI的链接器不能正常识别C++的函数名造成的.处理的方法是用exern "C" {},来包裹需要export的C++的native方法. 如果native的方法比较多,可以在头文件中定义宏: #ifdef __cplusplus extern "C" { #endif JNIEXPORT jint JNICALL Java_com_sample_native_method1 (JNIEnv *, jobject, jobject); JNIEXP…
在Android项目中引用高德地图,程序运行时出现上述问题,如果引用了Map3D的jar包,则需要在引入Jar文件的同时引入so文件,在高德地图的demo中,找到so文件: 然后将其复制到jniLibs中 而jar文件则可以直接添加进Libs文件夹中即可. 更多信息可以参考以下文章: 1. http://www.androidchina.net/3380.html Android Studio工程放在jniLibs/ABI目录中(当然也可以通过在build.gradle文件中的设置jniLibs…
我调试的是串口程序,程序中需要继承.so文件,AndroidStudio中集成.so文件的方法是将存放.so的文件夹(通常这个文件夹名字是:armeabi)拷贝到app的libs文件夹中,然后在app下的build.gradle文件夹中添加如下代码:(这段代码包含在android{}范围内) sourceSets { main { jniLibs.srcDirs = ['libs'] } } 但是这个过程中我遇见以下问题.,截图: 适用我的解决办法是:将libs文件夹下的armeabi重命名为a…