Android Studio 使用 System.loadLibrary()的一些问题
来源:互联网 发布:唯品会类似淘宝客 编辑:程序博客网 时间:2024/06/04 22:33
我最近一直都更新的Andorid Studio 和sdk,我现在用的是3.6的Android Studio ,sdk的api已经更新到了27, andorid8.0
好了,其他的不说了,我来说一下我的问题吧,我现在加载一些.so包就出现了如下问题
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/device.android.com.hfdemo1-1/base.apk", zip file "/data/app/device.android.com.hfdemo1-1/split_lib_dependencies_apk.apk", zip file "/data/app/device.android.com.hfdemo1-1/split_lib_slice_0_apk.apk", zip file "/data/app/device.android.com.hfdemo1-1/split_lib_slice_1_apk.apk", zip file "/data/app/device.android.com.hfdemo1-1/split_lib_slice_2_apk.apk", zip file "/data/app/device.android.com.hfdemo1-1/split_lib_slice_3_apk.apk", zip file "/data/app/device.android.com.hfdemo1-1/split_lib_slice_4_apk.apk", zip file "/data/app/device.android.com.hfdemo1-1/split_lib_slice_5_apk.apk", zip file "/data/app/device.android.com.hfdemo1-1/split_lib_slice_6_apk.apk", zip file "/data/app/device.android.com.hfdemo1-1/split_lib_slice_7_apk.apk", zip file "/data/app/device.android.com.hfdemo1-1/split_lib_slice_8_apk.apk", zip file "/data/app/device.android.com.hfdemo1-1/split_lib_slice_9_apk.apk"],nativeLibraryDirectories=[/data/app/device.android.com.hfdemo1-1/lib/arm64, /vendor/lib64, /system/lib64]]] couldn't find "libSerialPort.so" at java.lang.Runtime.loadLibrary(Runtime.java:367) at java.lang.System.loadLibrary(System.java:1076)
在api使用大于23了之后就有如下问题,或着引用没有配置时也有如下问题
couldn't find "libSerialPort.so" at java.lang.Runtime.loadLibrary(Runtime.java:367) at java.lang.System.loadLibrary(System.java:1076)
* 现在解决第一个问题,API大于23时引用.so包问题 *
发生的环境:此类问题一般发生在 Android 6.0 及其以上的系统,具体也存在于其他的 api 版本,主要集中在 api >=23;
同一个 APP 在 api <=22 的 sdk 情况下编译,可以运行正常,不存在闪退或者 .so 库加载失败的情况,当你采用 api >=23 的sdk 编译的时候,安装到 Android 6.0 及其以上的手机的时候,大范围出现崩溃 或者 .so 库加载失败,而在 6.0 以下的手机却正常;
Catch的信息:dlopen failed: cannot locate symbol "XXXX" xxxx.so, XX 是泛配,此类崩溃信息。
第一种,把你的 APK target API 先降低到 23以下,若不行再把 编译时 API 降低到 23 以下,还出问题就继续降低,这意味着,你很多 Android Sdk 的新控件用不了;
第二是你有.so文件的源码,在 Application.mk 中修改 APP_STL,重新编译 .so ,如果,我说如果你没有源码,那么悲剧了,要么等他们解决,要么采用第一种,建议尝试,APP_STL := gnustl_shared,
注:如果要重新编译可以去这里看看 http://www.cnblogs.com/linguanh/p/4624768.html
- * 如何正确的引用.so包 *
- 加入.so包, 加到libs下面或回到jniLibs下
- 引用包,修改jniLibs的默认路径为libs,直接修改build.gradle
android { sourceSets { main { jniLibs.srcDirs = ['libs'] }}
- java文件加载包
private void load() { try { System.loadLibrary("xxxxx"); } catch (Throwable e) { Log.d("zzzzz","加载xx库异常 :"+e.toString()); } }
还有一种就是适配机型要使用的各个cpu下都要加入一个.so包
|---arm64-v8a |---xxxxx.so |---armeabi |---xxxxx.so |---armeabi-v7a |---xxxxx.so |---x86 |---xxxxx.so |---x86_64 |---xxxxx.so |---mips |---xxxxx.so |---mips64 |---xxxxx.so
阅读全文
0 0
- Android Studio 使用 System.loadLibrary()的一些问题
- System.loadLibrary("cocos2dcpp"); 的问题
- JNI 在Android中使用System.loadLibrary()
- 使用Android studio 出现的一些问题
- Android studio 使用的一些问题
- System.loadLibrary()使用详解
- system.load和system.loadLibrary 网上反馈的问题
- android studio 一些使用问题
- System.loadLibrary()的使用方法
- Java基础知识JNI 在Android中使用System.loadLibrary()
- Java基础知识JNI 在Android中使用System.loadLibrary()
- 关于JAVA System.loadLibrary()问题
- android Studio的一些问题
- android studio的一些问题
- java 中System.loadLibrary()调用c++Dll的路径问题
- [Android]Java中System.loadLibrary() 的执行过程
- Android Java中System.loadLibrary() 的执行过程
- [Android]Java中System.loadLibrary() 的执行过程
- 逆向工具(待研究)
- splay 学习笔记
- 机器学习教程 之 SKlearn 中 PCA 算法的运用:人脸识别实例
- MediaRecorder官方文档导读
- seagull安装步骤
- Android Studio 使用 System.loadLibrary()的一些问题
- pytorch版的bilstm+crf实现sequence label
- C# 中绑定数据到datagridviewcomboboxcolumn
- java list随机取值
- 七扭八歪解faster rcnn(keras版)(二)
- 小米首次召开IoT开发者大会 抖出了这19条干货!
- 赠票 | 小饭桌全球青年创业者大会下周举行 罗杰斯张颖参加
- [牛客网] 循环数比较
- 开放语音平台与U+云脑 海尔发力智慧家庭生态