Android 缺少SO库(只有armabi)的解决办法

前段时间做一个项目,需要引用一些第三方的插件,结果插件只有armabi的so库,而项目中其他依赖除过armabi的库外基本都有(“arm64-v8a”, “armeabi-v7a”, “x86”, “x86_64”),假如放到项目中肯定运行崩溃,所以我用load的方法加载armabi的库文件作为通用库,其他的库文件则让系统选择合适的库文件,毕竟armabi效率不是很好

Usage

JNI native 文件

static{String path = FileUtils.checkSoFileExists(DataConfig.context,"libuscasr.so");if(path!=null){System.load(path);}DataConfig.context = null;
}

下面是so读取文件,为什么要IO去读取呢?因为我将so库放在了assets下面了,需要拷贝到系统文件夹下面去加载

public static String checkSoFileExists(Context context,String fileName){final String path = "/libs/";String localPath = context.getFilesDir().getAbsolutePath()+ path;File file =new File(localPath + fileName);if(!file.exists()){//对于经常更换so库的问题,可以添加MD5对比,来更换库文件copySoFile(context,localPath,fileName);if(!file.exists()){return null;}else {return localPath + fileName;}}else{return localPath + fileName;}
}private static void copySoFile(Context context,String filePath,String fileName){final String TAG = "copySoFileTest";InputStream inputStream = null;FileOutputStream fileOutputStream = null;Log.v(TAG, "LazyBandingLib localPath:" + filePath);File libsDir = new File(filePath);if(!libsDir.exists()){//noinspection ResultOfMethodCallIgnoredlibsDir.mkdirs();}try {inputStream = context.getAssets().open(fileName);fileOutputStream = new FileOutputStream(filePath+fileName);//分配缓冲区的大小byte[] bytes = new byte[1024];while (inputStream.read(bytes) != -1) {fileOutputStream.write(bytes);}} catch (Exception e) {e.printStackTrace();}finally {try {if(inputStream!=null) {inputStream.close();}if(fileOutputStream!=null) {fileOutputStream.close();}} catch (IOException e) {e.printStackTrace();}}}

好了,这样只有armabi的情况下也能运行起来,注意假如你的项目只有一个库文件依赖,就没必要这样弄了,用loadlibary就搞定了,本文只针对项目中有的依赖有(“arm64-v8a”, “armeabi-v7a”, “x86”, “x86_64”)库,而有的只有armabi的情况

Android 缺少SO库(只有armabi)的解决办法相关推荐

  1. 缺少msvcp120.dll、msvcr120.dll解决办法

    缺少msvcp120.dll.msvcr120.dll解决办法: 丢失或缺少msvcp120.dll.msvcr120.dll等这些报错是因为我们没有安装vc++运行库,看一下报错对应的数字对应的版本 ...

  2. Eclipse之Android项目名有红感叹号的解决办法

    问题: Eclipse之Android项目名有红感叹号的解决办法 代码都没有错,然后项目有红感叹号 1.找问题原因 点击项目右键,然后点击Build Path,然后再Configure Buil Pa ...

  3. 《视觉SLAM十四讲》第四讲-ubuntu下安装Sophus库出现问题及解决办法

    这里写自定义目录标题 写在前面 1.安装指令: 2.编译过程中出现的问题及解决办法: 问题1: 问题2: 3.使用过程中出现的问题 参考链接 写在前面 本文转载自: [1] haxiongha. ub ...

  4. 抱歉,进程android.process.media,已停止运行的解决办法

    android模似器4.03下载了QQ,搜狗拼音后,双击提示:抱歉,进程android.process.media,已停止运行的解决办法 去到下载内容图标,找到你已经下载的软件(注:可以安装的软件的图 ...

  5. android edittext字数显示不全,Android的EditText字数检测和限制解决办法

    Android的EditText字数检测和限制解决办法 控件EditText在Android布局中经常用到,对EditText中输入的内容也经常需要进行限制,我们可以通过TextWatcher去观察输 ...

  6. Python在指定环境下安装第三方库的报错解决办法

    Python在指定环境下安装第三方库的报错解决办法 在python安装第三方库时,如果直接打开cmd命令提示符,并输入下列安装命令,则会默认安装在base环境下 但base环境下的包新建的虚拟环境是无 ...

  7. 使用PowerPhotos for Mac查找重复项似乎缺少一些重复的照片的解决办法

    应用PowerPhotos for Mac照片管理软件可以很轻松的找到保存的照片中的重复照片,但是有的时候,还是会发现看起来很像的照片没有被清除,怎么办呢?在本篇文章中我们介绍的是如何解决使用Powe ...

  8. android开发中遇到的技术难题,android开发过程中遇到的问题以及解决办法

    ####编译的时候遇到的问题: "android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original th ...

  9. ffmpeg库编译加文字_使用ffmpeg库编译错误及解决办法

    一.FFmpeg源代码下载与编译 # wget http://www.ffmpeg.org/releases/ffmpeg-0.5.13.tar.bz2 # tar -jxvf ffmpeg-0.5. ...

最新文章

  1. nginx常用功能介绍
  2. .net 面试题系列文章五(附答案)
  3. Java volatile关键字详解
  4. 对话苹果公司的一号员工Bill Fernandez
  5. 稳定婚姻问题和Gale-Shapley算法(转)
  6. (CODE)计算机视觉引论及数字成像系统
  7. java生成背景透明的png图片_关于Java生成背景透明的png图片
  8. mt7620 eeprom 小米_小米CC9 Pro搭载1亿像素传感器,新款手表引关注;谷歌称微信软件性能太差;iPhone明年或配备120Hz屏幕...
  9. 关于Unity 3D GUI不显示中文问题
  10. QQ空间说说自动删除代码-真的自动
  11. avue一些隐藏的配置
  12. 诚之和:三年销量从 0 破亿,这可能是手机行业最后一个搅局者
  13. 龙芯2k开发板Debian系统安装教程
  14. vector 多维向量定义及其初始化
  15. 安装Mariadb columnStore(10.3版本)
  16. Hive正则表达式案例总结
  17. python爬取猫眼电影数据
  18. 如果流浪地球,信息科学能做什么
  19. 戒烟产品如何引流?戒烟产品如何寻找客户?戒烟类产品推广方案
  20. 通过PS把普通照片变成高大上的电影海报大片

热门文章

  1. Linux系列:二进制 Byte为什么是-127—127范围
  2. python到底有多牛!用Python开源机器人和5美元,我在Instagram上搞到了2500个真粉儿
  3. 手把手带你快速入门超越GAN的Normalizing Flow
  4. python 字符画
  5. 为什么不能自定义java.lang.String
  6. java outputstring_关于java:将OutputStream转换为String
  7. Milvus 2.0 Knowhere 概览
  8. 水经注对比 bigemap地图下载器
  9. 从妓到后——史上最令男人动心的女人
  10. 浅谈H5业务场景下的人脸识别