在使用so库的时候遇到一个问题,背景以下:java

项目中有一个录像功能,将录像功能抽取出来变成一个module,这个module引入了一个ffmpeg的so库,将录像功能集成后经测试好用。架构

后来项目中须要集成定位功能,使用了高德定位,定位功能没有抽取,而是直接写在app中。此时再次点击录像后发生crash,报出以下错误:app

java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader

既在Load库的时候找不到so文件。测试

主app中引入so的时候分别放在了 arm64-v8a 和 armeabi 中,录像module引入的so放在armeabi-v7a中。spa

看下这三个文件夹的做用:v8

arm64-v8a是能够向下兼容的,其下有armeabi-v7a,armeabi ;armeabi-v7a向下兼容armeabi。对于一个cpu是arm64-v8a架构的手机,它运行app时,进入jnilibs去读取库文件时,先看有没有arm64-v8a文件夹;若是没有该文件夹,去找armeabi-v7a文件夹,若是没有,再去找armeabi文件夹,若是连这个文件夹也没有,就抛出异常

若是有arm64-v8a文件夹,那么就去找特定名称的.so文件,注意:若是没有找到,不会再往下(armeabi-v7a文件夹)找了,而是直接抛出异常。module

将生成的apk解压,发现lib下有三个文件夹,分别对应以上三种cpu架构,而咱们的录像so只在armeabi-v7a中。也就是说系统只在arm64中寻找录像so,找不到天然就报错了。ffmpeg

而后尝试将录像so放入主app的arm64-v8a中,这样一样会出现个问题:cpu

.依赖Module引入的so库必须存放在该module自己的jnilib目录下,而不能放入app Module的库目录下。不然报错。项目

既然这样不行拿就在录像Module下创建一个arm64-v8a目录,此时若是你有so支持64位处理器的话没有问题,若是只有32位的so一样不行。

最后的解决方案是把app Module目录下的arm64目录改成armeabi-v7a,录像Module中的结构保持不变,使得系统在加载so库的时候直接到armeabi-v7a中寻找。解决问题。



android module 加载.so,关于Android Studio主Module与依赖Module同时引入so库的问题相关推荐

  1. android 自定义加载动画效果,Android自定义View实现loading动画加载效果

    项目开发中对Loading的处理是比较常见的,安卓系统提供的不太美观,引入第三发又太麻烦,这时候自己定义View来实现这个效果,并且进行封装抽取给项目提供统一的loading样式是最好的解决方式了. ...

  2. android异步加载视频缩略图,Android 视频缩略图的缓存机制和异步加载

    关注微信号:javalearns   随时随地学Java 或扫一扫 随时随地学Java 在这次的工作开发项目中,涉及到一个视频缩略图的视频列表:这个在大家看来,制作视频缩略图就是两行代码就搞定的事.确 ...

  3. android无法加载系统so,android - android资源无法加载 - SO中文参考 - www.soinside.com

    android资源无法加载 问题描述 投票:0回答:1 Android resource linking failed /Users/suhaibaskar/Downloads/AndroidStud ...

  4. android webview加载闪屏,Android Webview:加载url时出现闪屏

    我是Android应用程序中的新手,这是我的第一个应用程序. 我已经创建了启动画面和工程..但其后走了一个长长的白色空白屏幕约2-5秒,然后URL开始加载..Android Webview:加载url ...

  5. android资源加载失败,解决Android WebView拦截url,视频播放加载失败的问题

    解决Android WebView拦截url,视频播放加载失败的问题 发布时间:2020-10-08 05:19:44 来源:脚本之家 阅读:86 作者:灵均子孟 需求:Android调用webVie ...

  6. android webview加载不出来,android 中用webview 显示本地html,为什么里面的内容显示不出来?...

    // 设置WebView属性 WebSettings settings = webView.getSettings(); //支持js settings.setJavaScriptEnabled(tr ...

  7. android 自定义加载动画效果,Android 自定义View修炼-自定义加载进度动画LoadingImageView...

    一.概述 本自定义View,是加载进度动画的自定义View,继承于ImageView来实现,主要实现蒙层加载进度的加载进度效果. 支持水平左右加载和垂直上下加载四个方向,同时也支持自定义蒙层进度颜色. ...

  8. android webview 加载本地pdf,android – 在WebView中打开PDF

    我想在我的WebView中打开一个PDF,我在这个论坛上找到并组合了代码. 但是,虽然我安装了多个PDF应用程序,包括Adobe Reader,但它仍然可以找到"找不到PDF应用程序&quo ...

  9. Android动态加载技术

    基本信息 Author:kaedea GitHub:android-dynamical-loading 我们很早开始就在Android项目中采用了动态加载技术,主要目的是为了达到让用户不用重新安装AP ...

最新文章

  1. EF 4.1中内部经常提交的 exec sp_reset_connection 的用途原来是为了重用池中的连接...
  2. WinCE文件目录定制及内存调整
  3. 4 指针运算_C++用指针访问数组元素(学习笔记:第6章 08)
  4. login控件authenticate_asp.net Login控件基本属性及事件说明
  5. 数据结构之外部排序:最佳归并树
  6. Spring Security:初体验
  7. 在工作中你卑微到什么程度?
  8. Apache Spark机器学习3.3 特征准备
  9. SqlServer自增长字段归零
  10. iso硬盘安装 凤凰os_多系统下成功硬盘安装phoenix OS
  11. 海康/大华/华为等摄像头或者录像机无法通过GB28181注册到国标平台LiveGBS的问题排查方法...
  12. 阿里云、腾讯云、UCloud、华为云云主机对比测试报告
  13. cad计算机绘图知识点,CAD工程制图的基本知识要点.ppt
  14. 空间滤波 - 钝化掩蔽和高提升滤波
  15. NOIp2017——追求那些我一直追求的
  16. vb 读取mysql所有表名_VB 读取ACCESS数据库中所有表名和指定表字段名.doc
  17. 使用不同的命令去打包正式,测试,本地vue项目
  18. executeQuery、executeUpdate和execute
  19. burn suite启动_Microsoft计划(最终)启动Web Office Suite
  20. easycode 表配置信息不正确

热门文章

  1. 电商系统中API接口防止参数篡改和重放攻击(小程序/APP)
  2. linux目录自动同步,Linux下rsync+inotify实现实时文件自动同步
  3. 一个小案例精通lamda表达式与函数式接口
  4. Elasticsearch——filter过滤查询
  5. 浅悉软考网络工程师考试出题风格变化
  6. Fedora16 下更改多系统、多内核的默认启动项
  7. 改2003远程端口3389的方法!
  8. 打破凉凉诅咒:三个有大量用户基础的区块链项目
  9. 从Maven远程存储库下载
  10. Struts2+Spring+Hibernate step by step 11 ssh拦截验证用户登录到集成