关于android某些手机java.lang.UnsatisfiedLinkError: No implementation found for ......的问题
来源:互联网 发布:淘宝卖什么好呢 编辑:程序博客网 时间:2024/05/20 07:38
最近手上的一个项目,用了很多第三方库,也有一些调用C++库的内容。
过程当中遇到了java.lang.UnsatisfiedLinkError这样的问题。之前没有遇到过,而且是部分手机的问题,耗费了一些时间来查询和解决。
多余的话不说了,以下是原因和解决方法。
原因:
报这样的错,百度一下,都是说是不能加载底层方法导致的。但是开发者会说,底层包是有这样的方法的。
到底是什么原因导致的呢,不妨我们这样来做:打个apk包,把后缀改成zip或其他,打开这个压缩文件,找到lib文件夹,(如图)
进入文件夹可以看到以下文件夹(如图)
(不一定和我完全一致)。
检查这些文件夹下的文件是否一致(每个文件夹下的文件数量和文件名称应该是一样的),对比会发现文件肯定或多或少,这就是UnsatisfiedLinkError的原因。
为什么有的手机可以有的手机不可以呢?因为手机cup的芯片不一样。
如果是arm64-v8a的芯片,android就加载arm64-v8a文件夹下的so文件,以此类推。
解决方法:
所以这个地方jniLibs下的文件夹下一定要保持一致,不然编译apk包之后各个型号文件夹下的文件会不一致(如图),
。
就拿我目前这个项目来说吧,引用了太多的第三方,整个项目包括第三方的module,所有的jniLibs都要保持一致
(这就是我之前报错的原因,这些文件夹没有保持一致)最终我做了一些删减,只保留了最少的也就是armeabi和armeabi-v7a两个文件夹,问题解决。高版本的cup芯片会向下兼容。
当然了,有些开发者会说需求需要其他版本的包怎么办。那就让第三方so文件提供者,编译出对应的版本,从而解决问题。
最后,说一些这些文件夹是什么含义。
这些都是android设备的cup类型:armeabiv-v7a: 第7代及以上的ARM处理器;
arm64-v8a: 第8代、64位ARM处理器;
armeabi: 第5代、第6代的ARM处理器;
mips:一种RISC处理器。
mips64:64位的。
x86: 平板;
x86_64:64位的平板。
当然了具体深入的意义,请读者自行谷歌。
- 关于android某些手机java.lang.UnsatisfiedLinkError: No implementation found for ......的问题
- Android调用JNI出错 java.lang.UnsatisfiedLinkError: No implementation found for的解决方法
- Android调用JNI出错 java.lang.UnsatisfiedLinkError: No implementation found for的解决方法
- NDK .so Android调用JNI出错 java.lang.UnsatisfiedLinkError: No implementation found for的解决方案
- java.lang.UnsatisfiedLinkError: No implementation found for java.lang.String.....
- 调用百度地图 5.0手机报错java.lang.UnsatisfiedLinkError: No implementation found for int
- 百度地图 5.0手机报错java.lang.UnsatisfiedLinkError: No implementation found for int
- 百度地图SDK 手机报错java.lang.UnsatisfiedLinkError: No implementation found for int--binbinyang
- 调用JNI出错 java.lang.UnsatisfiedLinkError: No implementation found for
- 百度地图java.lang.UnsatisfiedLinkError: No implementation found for int
- 【我的Android进阶之旅】Android调用JNI出错 java.lang.UnsatisfiedLinkError: No implementation found for的解决方法
- Android中java.lang.UnsatisfiedLinkError: No implementation found问题解决
- Android 调用.so包时报错:No implementation found for native Lxxx, java.lang.UnsatisfiedLinkError: XXX时的解决办法
- java.lang.UnsatisfiedLinkError: No implementation found
- 解决:java.lang.UnsatisfiedLinkError: No implementation found
- Android studio 高德sdkjava.lang.UnsatisfiedLinkError: No implementation found for long...错误的记录
- 解决java.lang.UnsatisfiedLinkError: No implementation found for java.lang.String 报错的一个小方法
- 百度地图 java.lang.UnsatisfiedLinkError: No implementation found for java.lang.String
- Java多线程-工具篇-BlockingQueue
- Windows下Nginx的安装与配置
- integer对应的是resultType,不是resultMap
- HDU1262:寻找素数对(简单数论)
- 51Nod - 1116 枚举 + 模拟
- 关于android某些手机java.lang.UnsatisfiedLinkError: No implementation found for ......的问题
- React Native自定义带返回按钮的标题栏组件
- 基于jsonp技术的单点登入案例分享二
- 【C语言函数库】C语言中的string.h库常用函数
- JavaScript常用脚本集锦6
- Android 6.0新特性
- Signals & Slots
- Data Partitioning Guidance
- C 练习实例13 - 水仙花数