今天工作的时候。发现了一个jni的问题,java.lang.UnsatisfiedLinkError: No implementation found for......

问题1:后来查了资料后发现。是因为我在java中定义了native方法。可是在jni中没有相应的方法,这种话java就无法链接到本地方法。

原因:

造成这样的Error的有两种情况:

    (1) 没有在本地方法中的头文件里定义方法;

    (2) 缺少so文件。



解决方式:


    (1)在.h文件里第一方法,并在.c中实现方法。

    (2)引入so文件;









方案实行分析:

方案1:这个不用多说,定义方法,自己依据自己的需求去实现;

方案2:

    步骤(这里仅仅解说在Android Studio下的解决方式):

(1)在  项目名\app\src\main下新建jniLibs目录,并将相应的.so文件放进去{目录结构为:处理器版本号/***.so(如:armeabi/***.so)},

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

这样Android Studio就能够在编译的时候载入对用的so文件了;

        (2)注意:重点来了,

           在Android Studio下假设你仅仅有部分平台下的.so文件,并且你不在gradle中做不论什么配置的话,

那么智能的Android Studio就会在编译的时候编译出其它平台下的.so文件(我在Eclipse中測试的时候没有发现这个问题)

看好了,我如今仅仅在jniLibs中放入了armeabi版本号的*.so文件,可是在apk中却出现了'x86_64','x86','mips64'等多个版本号的*.so文件。

这样就会造成程序无法执行【如图】

解决方式:

在.gradle指定相应平台的(代码例如以下),这样就能够在编译的时候让studio仅仅生成相应平台的*.so文件【如图】

splits {
abi {
enable true
reset()
include 'x86', 'x86_64', 'armeabi-v7a', 'arm64-v8a' //select ABIs to build APKs for
universalApk true //generate an additional APK that contains all the ABIs
}
}

Android的.so文件教程參考地址:关于Android的.so文件你所须要知道的

UnsatisfiedLinkError: No implementation found for , AndroidStudio使用*.so的更多相关文章

  1. java.lang.UnsatisfiedLinkError: No implementation found for long org.opencv.core.Mat.n_Mat()

    Android调试openCV4Android的时候出现以下错误 java.lang.UnsatisfiedLinkError: No implementation found for long or ...

  2. java.lang.UnsatisfiedLinkError: No implementation found for int com.baidu.platform.comjni.map.commonmemcache.JNICommonMemCache.Create()

    完整异常: Process: com.example.ai.tabhostdemo, PID: 1287 java.lang.UnsatisfiedLinkError: No implementati ...

  3. java.lang.UnsatisfiedLinkError: No implementation found for int com.xxx.xx中的couldn’t find “XX.so”或loadLibrary("xxx")失败

    我觉得这是个神坑,虽然早几年网上就很多po出来的解决方式,但是同样的问题,我的bug却稳如泰山,一点用都没有,好气 下面总结一下 这里前面先是有个系统打印信息 I/System.out: loadLi ...

  4. 【我的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/a ...

  5. Android学习笔记----天地图API开发之UnsatisfiedLinkError

    由于在jniLibs目录下移除了x86的相关so文件,后来又因为需要在PC模拟器上调试,将该文件夹恢复后,增加了天地图的sdk,却忘记将libMapEngine.so文件同时拷贝至x86目录下,导致如 ...

  6. android 百度地图 No implementation found for int

    java.lang.UnsatisfiedLinkError: No implementation found for int com.baidu.platform.comjni.map.common ...

  7. No implementation found for long com.baidu.platform.comjni.map.commonmemcache.JNICommonMemCache.Create()

    3-21 10:14:20.833 2892-2892/? E/art: No implementation found for long com.baidu.platform.comjni.map. ...

  8. No implementation found for void `org.webrtc.PeerConnectionFactory.initializeAndroidGlobals(android.content.Context, boolean)

    背景介绍 最近在使用 AndroidRTC 利用WebRtc屏幕共享时使用PeerConnectionFactory.initializeAndroidGlobals(context, true, t ...

  9. 拥抱 C/C++ : Android JNI 的使用

    编译工具 CMake 以及 Android 上 JNI 的使用介绍. 编译工具 CMake 在Android Studio 2.2 之后,工具中增加了 CMake 的支持,于是我们有两种选择来编译 c ...

随机推荐

  1. 【EF 1】EF实体框架 原理+实例

    一.知识回顾 到目前为止,自己学到的链接数据库操作已经经历了几个阶段,分别是:学生信息管理和(第一次)机房收费时的直接连接数据库操作表格,然后是机房个人重构中应用的操作实体,在其中还利用了一个很重要的 ...

  2. post 发送ajax请求

    1.ajax五步曲 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  3. Oracle spool 用法小结

    关于SPOOL(SPOOL是SQLPLUS的命令,不是SQL语法里面的东西.) 对于SPOOL数据的SQL,最好要自己定义格式,以方便程序直接导入,SQL语句如: select taskindex|| ...

  4. BZOJ3122 [Sdoi2013]随机数生成器 【BSGS】

    题目 输入格式 输入含有多组数据,第一行一个正整数T,表示这个测试点内的数据组数. 接下来T行,每行有五个整数p,a,b,X1,t,表示一组数据.保证X1和t都是合法的页码. 注意:P一定为质数 输出 ...

  5. 自己写的java返回结果集封装

    import java.io.Serializable; import com.fasterxml.jackson.core.JsonProcessingException; import com.f ...

  6. VMware View 要求操作句柄的状态错误

    win10系统安装的VMware-viewclient,版本是

  7. RabbitMQ核心组件及应用场景

    一.适用场景 1.解耦 2.最终一致性 3.广播 4.错峰与流控(秒杀业务用于流量削峰场景) 秒杀场景 二.核心组件,关键点(交换器.队列.绑定) AMPQ消息路由必要三部分:交换器.队列.绑定. J ...

  8. IntelliJ IDEA常用统一设置(Linux/Mac/Windows)

    前言:如果说VS是宇宙超级无敌第一大开发工具,那么IDEA是当之无愧的第二大开发工具,将来有机会把VS干掉. 说明:除了以下说明的配置地方外,其它尽量保持默认,这样有利于团队代码风格的统一. 运行VM ...

  9. Ubuntu下使用UFW配置防火墙(简化iptables的操作)

    UFW全称为Uncomplicated Firewall,是Ubuntu系统上配置iptables防火墙的工具.UFW提供一个非常友好的命令用于创建基于IPV4,IPV6的防火墙规则. 但是,UFW是 ...

  10. 用canvas实现一个colorpicker

    http://www.cnblogs.com/ufex/p/6382982.html 每个浏览器都有自己的特点,比如今天要做的colorpicker就是,一千个浏览器,一千个哈姆雷特,一千个color ...