安卓so包常见报错问题

2023-05-16

一./lib/arm64, /system/lib64, /vendor/lib64]]] couldn't find "libAndroidIDCard.so

我没有在libs文件夹下面创建类似“arm64-v8a”这个文件夹,因为集成所按照的官方SDK中并没有给出相应的so包。

原因分析

新建项目中会多了几个文件夹,我想这就是问题的所在,根据查找顺序,64位处理器会优先查找arm64-v8a,里面如果没有相应的so文件就会报错。apk包在安装的时候,系统会把包中与自己的abi对应的lib目录中的so库文件拷贝到system分区中,32位机器中只有一个目录/system/lib,64位机器中有两个目录/system/lib和/system/lib64,app启动进行链接时,64位机器中会先到/system/lib64目录中去找,如果没有找到再到/system/lib目录中去找。如果你把32位的so库拷贝到了lib64目录中,会导致链接失败,同样,64位的so库被拷贝到lib目录中也会导致失败,所以so库要和目录一一对应。

如果我们的工程的so库目录中没有arm64目录,默认情况下,Android Studio会在apk中自动创建一个空的arm64-v8a文件夹,并根据一些规则把某些so库(具体是怎样的规则,我也不知道)拷贝到这个目录中,这样就导致,在64位机器上在lib64目录下找到的so库并不是正确的so库文件,从而出现了上面的错误

解决办法
解决办法就是阻止Android Studio自动的生成arm64-v8a目录,我们自己写脚本把对应的so库文件拷贝到build对应的目录下

 ndk {
            abiFilters "armeabi"
        }

切记:在Module(注意不是Library)的build.gradle文件中添加如下内容

这句话的意思就是指定ndk需要兼容的架构,把除了armeabi以外的兼容包都过滤掉。

二.is 32-bit instead of 64-bit动态库错误分析

针对第三方应用,在它安装的时候,安装包管理器会检查该应用是否使用native libraries,如果使用本地库文件的话,则会根据相应的架构abi来选择是32bit还是64bit。

针对系统应用来说,它的库文件存放在/system/lib,所以无法确定该应用是否依赖其他应用在system/lib下的库文件。因此安装包管理器,无法确定系统应用使用哪种架构abi,故在64bit模式下运行。

当你安装应用到系统时,系统会从lib目录下的(armeabi, armeabi-v7a, arm64-v8a, x86, x86_64, mips64, mips)文件夹中查找本地库文件,不同的架构加载不同的文件夹下的库文件。例如64bit的架构从arm64-v8a、x86_64、mips64这些目录中加载。如果你的arm64-v8a文件夹下刚好有这个需要使用到的库文件,则不会从其他文件夹如armeabi加载该库文件。此时就会出现32bit库文件和64bit库文件混合使用的情况,但是32bit的库文件不能和64bit的库文件不能混合使用。因此,有一种解决办法是过滤掉64bit的库文件,全部使用32bit的库文件。在Android studio配置文件build.gradle(Module APP)中配置如下:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

安卓so包常见报错问题 的相关文章

  • Stable Diffusion+Deliberate模型绘制图片

    chatgpt免费体验入口网址 xff1a http chat xutongbao top 正向提示词 1 chinese gril with headphones natural skin texture 24mm 4k textures
  • prompt交易平台

    chatgpt免费体验入口网址 xff1a http chat xutongbao top prompt交易平台 https promptbase com prompt需要花钱购买 也可以售卖自己的prompt 关注公众号领福利
  • New Bing来了

    chatgpt免费体验入口网址 xff1a http chat xutongbao top 参考链接 xff1a https mp weixin qq com s x8RUxofqS43xkZM 5xnTAw
  • select监听多个socket的例子

    先贴上代码 xff0c 回头再仔细编辑 server cpp include lt sys types h gt include lt sys socket h gt include lt netinet in h gt include l
  • chatgpt提示词

    chatgpt免费入口 http chat xutongbao top 担任雅思写作考官 我希望你假定自己是雅思写作考官 xff0c 根据雅思评判标准 xff0c 按我给你的雅思考题和对应答案给我评分 xff0c 并且按照雅思写作评分细则给
  • ffmpeg命令行拉TCP的RTSP流的方法及使用测试记录——RTP over RTSP(TCP)

    1 启动EasyDarwin流媒体服务器 xff0c 然后启动RTSP推流 xff08 1080P 43 h264编码 xff09 xff1a demo dev video0 1920 1080 0 注 xff1a demo 为本地自写的推
  • Linux定时备份文件

    一 编写脚本 创建脚本 写入命令 执行脚本文件 二 设置定时执行本脚本 安装crond 修改crontab内容 重新启动crond服务 一 编写脚本 编写一个脚本文件 xff0c 使脚本可以执行备份命令 例如 xff0c 将文件目录 hom
  • Swift编程语言 FAQ

    作为苹果在WWDC 2014上发布的新编程语言 xff0c Swift绝对是当前的热门话题 Swift由苹果开发者工具部门总监克里斯 拉特纳 xff08 Chris Lattner xff09 耗时四年开发而成 xff0c 苹果宣称Swif
  • 简单理解混淆矩阵—Matlab详细代码注解

    本人计算机小白一枚 xff0c 将自己学到的知识点整理出来 xff0c 一方面是对自己学习的小总结 xff0c 另一方面是欢迎大家批评指正 如果觉得写得还可以 xff0c 大家可以转发关注此博客 xff0c 谢谢 xff01 后续会有新算法
  • ubuntu下/boot空间被占满的解决方法

    ubuntu下 boot空间被占满的解决方法 在安装Ubuntu的时候 xff0c 给 boot文件目录分配空间的时候 xff0c 是100M xff0c boot可以单独分成一个区 xff0c 也可以不单独分 xff0c 在 xff08
  • scikit-learn sklearn 0.18 官方文档中文版

    本人计算机小白一枚 xff0c 将自己学到的知识点整理出来 xff0c 一方面是对自己学习的小总结 xff0c 另一方面是欢迎大家批评指正 如果觉得写得还可以 xff0c 大家可以转发关注此博客 xff0c 谢谢 xff01 后续会有新算法
  • 机器学习面试问题汇总—史上最详细

    本人计算机小白一枚 xff0c 将自己学到的知识点整理出来 xff0c 一方面是对自己学习的小总结 xff0c 另一方面是欢迎大家批评指正 如果觉得写得还可以 xff0c 大家可以转发关注此博客 xff0c 谢谢 xff01 后续会有新算法
  • 从第一个人开始报数(从1到3报数),凡报到3的人退出圈子

    有n个人围成一圈 xff0c 顺序排号 从第一个人开始报数 xff08 从1到3报数 xff09 xff0c 凡报到3的人退出圈子 xff0c 问最后留下的是原来第几号的那位 xff08 1 lt 61 n lt 61 1000000 xf
  • Windows10 Xrdp远程桌面连接ubuntu 20.04,一步到位!

    https blog csdn net avinswang article details 93601312 utm medium 61 distribute pc relevant none task blog BlogCommendFr
  • 远程桌面无响应解决方案

    问题1 mstsc链接远程桌面后 发现只有桌面背景 xff08 桌面图标不见了 xff0c 任务栏不见了 xff0c 鼠标无处可点 xff09 问题2 远程桌面卡住了 问题分析 针对于问题1 xff0c 是因为关闭了explorer exe
  • 公用网络切换为专用网络的详细步骤

    win10连接的网络显示为公用网络 xff0c 一般来说公用网络的安全性不高 xff0c 专用网络安全性会比公用网络要高 具体方法如下 1 我的电脑安装的是win10系统 xff0c 网络状态为 xff1a 公用网络 2 把Windows1
  • mysql使用SSL连接配置学习(一)

    参考 xff1a https www jb51 net article 100432 htm https www cnblogs com mysql dba p 7061300 html 一 SSL介绍 SSL xff08 Secure S
  • 富文本回显

    今天遇了富文本的回显问题 xff0c 查了好多网页 xff0c 最后总结回显最简单方法 xff0c 留个纪念 lt c forEach items 61 34 bidNoticeList 34 varStatus 61 34 status
  • 弹出详细信息窗口

    lt DOCTYPE html PUBLIC 34 W3C DTD HTML 4 01 Transitional EN 34 gt lt html gt lt head gt lt meta charset 61 34 GB 2312 34
  • 字符串中特殊字符处理

    public String htmlReplace String str str 61 str replace 34 amp ldquo 34 34 34 str 61 str replace 34 amp rdquo 34 34 34 s

随机推荐

  • Android开发环境配置

    环境为jdk11 43 android studio2021 jdk11的安装 xff1a 参考https blog csdn net qq 22136439 article details 103295019 注意 xff1a 1 jdk
  • java中文字符乱码编码转换大全

    System out println new String myFileName getBytes 34 gbk 34 System out println new String myFileName getBytes 34 utf 8 3
  • java实现打印套打功能

    package test import java awt print import java awt 实现套打 xff0c 把套打的格式当成一张图片 xff0c 将要填入的数据按其在图片在坐标来定位 public class PrintTe
  • oracle中not in的优化

    ORACLE中NOT IN 的替代 http myjcwy iteye com blog 553563 典型的查询方式为 xff1a SELECT TITLE FROM BOOKSHELF WHERE TITLE NOT IN SELECT
  • Visual Stdio 中的error C2001: 常量中有换行符

    error C2001 常量中有换行符 问题 xff1a 使用Visual Stdio xff0c cout中文的时候 xff0c 有的时候可以正常编译并运行 xff0c 但是有的时候会出现error C2001 常量中有换行符 出现err
  • oracle实现每天定时执行一个计划任务

    http www shangxueba com jingyan 1614101 html oracle实现每天定时执行一个计划任务 创建测试表 SQL gt create table a a date 表已创建 创建一个自定义过程 SQL
  • Spring Security配置访问权限在登录页循环并报错302

    事情是这样的 xff0c 在学习Spring Security框架时 xff0c 使用框架默认的登录页面 xff0c 没有任何问题输入正确的账户和密码后都能登录 xff0c 但是将登录页面换为自定义的页面后就无法登录了 如下 xff1a 密
  • .net core基于Oauth2+jwt两种方式实现身份认证(附单点登录)

    引用地址 xff1a net core基于Oauth2 43 jwt两种方式实现身份认证 附单点登录 cslx5zx5的博客 CSDN博客 net core oauth2 基于 net core 3 1微服务架构的SSO单点登录实战 本文所
  • wordpress中文网站代码下载

    wordpress下载中文网站代码 wordpress网站 https cn wordpress org 下载各个中文版本的 xff1a 提示 xff1a 不用用积分去下载了 方法 xff1a 登录网站 xff1a
  • 源码编译装redis

    源码编译装redis 1 下载包 span class token punctuation span root 64 ZZQVM1 span class token punctuation span span class token com
  • I2C协议

    文章目录 一 什么是I2C xff1f 二 物理层与协议层1 物理层 xff08 1 xff09 I2C总线 xff1a xff08 2 xff09 从地址 xff1a xff08 2 xff09 三种传输模式 2 协议层 xff08 1
  • C++智能指针

    文章目录 前言shared ptrunique ptrweak ptr使用智能指针安全吗 xff1f 前言 下面简单的概括了 3中智能指针的在使用时候需要注意的一些地方 xff0c 三种智能指针在离开其作用域之后都会被自动释放 xff0c
  • centos 7 安装 samba

    centos 7 安装 samba 最近想在linux系统下开发C 43 43 程序 xff0c 想用window的编辑器写代码 xff0c 所以在centos 系统下安装了samba xff0c 让window系统挂载centos 系统的
  • win10如何退出“暂停7天更新”? 恢复自动更新

    services msc 微软社区的解答 xff0c 我复bai制的 断开网络进du行如下操作 xff0c 如果遇到zhi程序占用的问题 xff0c 操作进入到dao安全模式 xff08 设置 更新和安全 恢复 立即重启 xff09 进行
  • 关于Qt中线程的挂起和唤醒问题

    为了平台的可移植性 xff0c 现在好多公司或开发者都在用Qt开发 xff0c 但是Qt开发文档有一个不非常理想的问题是 xff0c 有些问题描述的不是太详细 xff0c 特别是涉及到线程的挂起 xff0c 唤醒 和sleep 等问题 在Q
  • vscode不能跳转到定义的解决方法

    vscode不能跳转到定义的解决方法 0 分析1 安装global的依赖2 安装global3 安装插件并生成索引文件 0 分析 在Linux上使用vscode时发现跳转到定义非常缓慢 xff0c 甚至不能用 打开扩展C 43 43 Int
  • UI----UIslider 和UIcontrol的属性

    UISlide 属性 minimumValue 当值可以改变时 xff0c 滑块可以滑动到最小位置的值 xff0c 默认为 0 0 slider minimumValue 61 10 0 maximumValue 当值可以改变时 xff0c
  • JAVA转义字符详解

    一 JAVA中反斜杠 的作用 在不同的系统中 xff0c 路径的分隔符不同 xff0c 故需要做出判断 xff0c 并切换分隔符 VBS代码中确实不用转义 xff0c 但是在JAVA或JS中 xff0c 它采用的是C语言的语法 xff0c
  • 枚举(enum)

    一 什么是枚举 我们学习过单例模式 xff0c 即一个类只有一个实例 而枚举其实就是多例 xff0c 一个类有多个实例 xff0c 但实例的个数不是无穷的 xff0c 是有限个数的 例如word文档的对齐方式有几种 xff1a 左对齐 居中
  • 安卓so包常见报错问题

    一 lib arm64 system lib64 vendor lib64 couldn 39 t find 34 libAndroidIDCard so 我没有在libs文件夹下面创建类似 arm64 v8a 这个文件夹 xff0c 因为