应用兼容性问题-abi动态库错误分析和解决

1,应用名和现象

运行环境: 云手机

现象: 

2,分析

--------- beginning of crash
08-14 03:59:59.014 28740 28740 E AndroidRuntime: FATAL EXCEPTION: main
08-14 03:59:59.014 28740 28740 E AndroidRuntime: Process: com.ksxkq.autoclick, PID: 28740
08-14 03:59:59.014 28740 28740 E AndroidRuntime: java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/system/framework/org.apache.http.legacy.boot.jar", zip file "/data/app/com.ksxkq.autoclick-tOipfjY1awBPkGTvjsBKzQ==/base.apk"],nativeLibraryDirectories=[/data/app/com.ksxkq.autoclick-tOipfjY1awBPkGTvjsBKzQ==/lib/arm, /data/app/com.ksxkq.autoclick-tOipfjY1awBPkGTvjsBKzQ==/base.apk!/lib/armeabi, /system/lib]]] couldn't find "libmmkv.so"
08-14 03:59:59.014 28740 28740 E AndroidRuntime:        at java.lang.Runtime.loadLibrary0(Runtime.java:1012)
08-14 03:59:59.014 28740 28740 E AndroidRuntime:        at java.lang.System.loadLibrary(System.java:1669)
08-14 03:59:59.014 28740 28740 E AndroidRuntime:        at com.tencent.mmkv.MMKV.doInitialize(MMKV.java:194)
08-14 03:59:59.014 28740 28740 E AndroidRuntime:        at com.tencent.mmkv.MMKV.initialize(MMKV.java:181)
08-14 03:59:59.014 28740 28740 E AndroidRuntime:        at com.tencent.mmkv.MMKV.initialize(MMKV.java:84)
08-14 03:59:59.014 28740 28740 E AndroidRuntime:        at com.ksxkq.autoclick.MMKVManager.init(Unknown Source:118)
08-14 03:59:59.014 28740 28740 E AndroidRuntime:        at com.ksxkq.autoclick.provider.InitializeContentProvider.onCreate(Unknown Source:104)
08-14 03:59:59.014 28740 28740 E AndroidRuntime:        at android.content.ContentProvider.attachInfo(ContentProvider.java:1917)
08-14 03:59:59.014 28740 28740 E AndroidRuntime:        at android.content.ContentProvider.attachInfo(ContentProvider.java:1892)
08-14 03:59:59.014 28740 28740 E AndroidRuntime:        at android.app.ActivityThread.installProvider(ActivityThread.java:6438)
08-14 03:59:59.014 28740 28740 E AndroidRuntime:        at android.app.ActivityThread.installContentProviders(ActivityThread.java:5985)
08-14 03:59:59.014 28740 28740 E AndroidRuntime:        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5900)
08-14 03:59:59.014 28740 28740 E AndroidRuntime:        at android.app.ActivityThread.access$1100(ActivityThread.java:200)
08-14 03:59:59.014 28740 28740 E AndroidRuntime:        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1651)
08-14 03:59:59.014 28740 28740 E AndroidRuntime:        at android.os.Handler.dispatchMessage(Handler.java:106)
08-14 03:59:59.014 28740 28740 E AndroidRuntime:        at android.os.Looper.loop(Looper.java:193)
08-14 03:59:59.014 28740 28740 E AndroidRuntime:        at android.app.ActivityThread.main(ActivityThread.java:6716)
08-14 03:59:59.014 28740 28740 E AndroidRuntime:        at java.lang.reflect.Method.invoke(Native Method)
08-14 03:59:59.014 28740 28740 E AndroidRuntime:        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
08-14 03:59:59.014 28740 28740 E AndroidRuntime:        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
08-14 03:59:59.015  2190 12404 W ActivityManager:   Force finishing activity com.ksxkq.autoclick/.ui.InterstitialAdActivity
08-14 03:59:59.018 28740 28740 I Process : Sending signal. PID: 28740 SIG: 9
08-14 03:59:59.068  2190 12404 I ActivityManager: Process com.ksxkq.autoclick (pid 28740) has died: fore TOP
08-14 03:59:59.068  2190  2207 W libprocessgroup: kill(-28740, 9) failed: No such process
08-14 03:59:59.068  2190  2207 I libprocessgroup: Successfully killed process cgroup uid 10063 pid 28740 in 0ms
08-14 03:59:59.068  2128  2128 I Zygote  : Process 28740 exited due to signal (9)
 

通过日志可以看到该问题是因为加载native底层库 libmmkv.so失败导致,通过查看安装路径: 

/data/app/com.ksxkq.autoclick-tOipfjY1awBPkGTvjsBKzQ==/lib/arm # ls
libsgcore.so libutils.so

 

发现确实没有这个库,但是通过查看apk文件发现,这个apk有不同架构: 

 

发现arm64-v8a中有libmmkv.so, 而armeabi中没有

说明默认安装,选择了了armeabi的库。

通过查看abilist,可以看到原因

# getprop | grep abi
[ro.product.cpu.abi]: [x86_64]
[ro.product.cpu.abilist]: [x86_64,x86,armeabi,armeabi-v7a,arm64-v8a]
[ro.product.cpu.abilist32]: [x86,armeabi,armeabi-v7a]
[ro.product.cpu.abilist64]: [x86_64,arm64-v8a]
[ro.vendor.product.cpu.abilist]: [x86_64,x86,armeabi,armeabi-v7a,arm64-v8a]
[ro.vendor.product.cpu.abilist32]: [x86,armeabi,armeabi-v7a]
[ro.vendor.product.cpu.abilist64]: [x86_64,arm64-v8a]

 可以看到,优先是安装了armeabi的底层库。

3, 解决

方法1, 如果有源码,就修改产品的的配置文件,调整顺序: 

# Native Bridge ABI List
NB_ABI_LIST_32_BIT := armeabi armeabi-v7a
NB_ABI_LIST_64_BIT := arm64-v8a
 

方法2: 手动安装

adb install --abi arm64-v8a 贝利自动电击器.apk

最后可以正常启动

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/400215.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大型、复杂、逼真的安全服和安全帽检测:数据集和方法

智能升级工地安全:SFCHD数据集与SCALE模块介绍 在人工智能(AI)技术飞速发展的今天,其在建筑工地安全领域的应用正逐渐展现出巨大潜力。尤其是高风险行业如化工厂的施工现场,对工人的保护措施要求极为严格。个人防护装…

十四、迭代器模式

文章目录 1 基本介绍2 案例2.1 Aggregate 接口2.2 Iterator 接口2.3 MyArray 类2.4 MyArrayIterator 类2.5 Client 类2.6 Client 类的运行结果2.7 总结 3 各角色之间的关系3.1 角色3.1.1 Aggregate ( 集合 )3.1.2 Iterator ( 迭代器 )3.1.3 ConcreteAggregate ( 具体的集合 )3.…

Luminar Neo for Mac/Win:创新AI图像编辑软件的强大功能

Luminar Neo,这款由Skylum公司倾力打造的图像编辑软件,为Mac和Windows用户带来了前所未有的创作体验与编辑便利。作为一款融合了先进AI技术的图像处理工具,Luminar Neo以其独特的功能和高效的操作流程,成为了摄影师、设计师及摄影…

TPshop商城的保姆教程(Ubuntu)

1.上传TPSHOP源码 选择适合自己的版本下载 TPshop商城源文件下载链接: 百度网盘 请输入提取码 上传tpshop的源码包到特定目录/var/www/html 切换到/var/www/html 目录下 cd /var/www/html修改HTML目录下所有文件权限 chmod -R 777 * 2.打开网址配置 TPshop安…

第九届“创客中国”武汉区域赛正式启幕 灵途科技勇夺前三,晋级决赛!

8月8日,第九届“创客中国”武汉区域赛正式启幕,首场聚焦先进制造领域。灵途科技勇夺先进制造领域专场企业组前三名,成功晋级决赛。 “创客中国”大赛是工业和信息化部组织开展的双创赛事活动,以构建产业链协同发展为出发点&#…

鸿蒙(API 12 Beta3版)【扩展屏投播开发指导】使用投播组件

通过本节开发指导,可在系统镜像投屏后,获取投屏设备信息,实现扩展屏模式的投播,实现双屏协作的能力。 运作机制 虚拟扩展屏 是在系统投屏启动过程中建立的,依据双端协商的投屏视频流的分辨率创建,支持1080…

进程与磁盘管理相关

进程与磁盘管理相关 进程创建(或者存在的)的唯一标志》进程控制块 PCB是进程存在的唯一标志,当进程被创建时,操作系统为当前进程创建PCB,当进程结束时,会回收PCB PCB .进程描述信息 。进程控制和管理信息 。资源分…

【Next】初识 Next

概述 在Reactr中创建SSR应用,需要调用 ReactDOM.hydrateRoot 函数,而不是 ReactDOM.createRoot。 createRoot:创建一个Root,接着调用其 render 函数将 App 直接加载到页面上hydrateRoot:创建水合 Root, 是在激活的模式下渲染 App 服务端可用 ReactDOM…

增强现实系列—深入探索ARKit:平面检测、三维模型放置与增强现实交互

🌟🌟 欢迎来到我的技术小筑,一个专为技术探索者打造的交流空间。在这里,我们不仅分享代码的智慧,还探讨技术的深度与广度。无论您是资深开发者还是技术新手,这里都有一片属于您的天空。让我们在知识的海洋中…

uniapp自定义navigationBar

最终效果: 一、关闭默认导航栏 pages.json文件中,对单个页面关闭 "navigationStyle": "custom" "pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pag…

惊!北京三害、上海四毒、广东五虎,谁才是互联网界的“拼命三郎”?

在互联网江湖中,流传着这样一份神秘的“工作强度排名”,它们以地域为划分,将那些被公认为加班狂魔的互联网大厂归为了“北京三害”、“上海四毒”和“广东五虎”。 这份名单一出,让人不禁哑然失笑,同时也让人深思&…

计算机网络部分基础知识

网络协议的意义 单台主机内部的设备之间需要发送和接收消息,那么和相隔很远的两台主机之间发送消息有什么区别呢?两台主机通过网络发送消息,相当于两个网卡设备之间进行通信,最大的区别在于距离变长了。而距离变长带来的结果就是&…

.NET 处理 WebAPI JSON 返回烦人的null为空

目录 前言 一、分析问题 1、空值的处理 2、默认值的处理 3、示例代码 二、解决问题 1、返回的Json 2、null替换为空 3、解决方案 三、总结 四、最后 前言 项目开发中不管是前台还是后台都会遇到烦人的null,数据库表中字段允许空值,则代码实体…

【Python】Python单元测试

文章目录 01-单元测试基础什么是单元测试常用的文件结构运行单元测试 02. 断言函数03. Test Fixtures什么是Test Fixtures模块级别的Fixtures类级别的Fixtures方法级别的Fixtures 04.Mock 01-单元测试基础 什么是单元测试常用的文件结构编写第一个单元测试运行单元测试 什么是单…

springsecurity的学习(四):实现授权

简介 springsecurity的授权,自定义授权失败的处理,跨域的处理和自定义权限校验方法的介绍 授权 权限系统作用 在后台进行用户权限的判断,判断当前用户是否有相应的权限,必须具有所需的权限才能进行相应的操作,以此…

【运维】JetBrains Gateway (Pycharm) SSH免密连接,改为免密连接

一直要求输入密码,很烦人: 如何免密连接? 1 重新打开gateway,来到这个界面点新建连接: 2 点这里设置: 3 在这一页,你可以改你的所有配置,只要设置为password并且保存密码&…

MySQL第6讲--DQL(数据查询语言)的基本操作之基本和条件查询

文章目录 前言DQL(数据查询语言)基本操作查询操作基本查询示例1:查询表格的name,age,并返回;示例2:查询表格中的所有字段;示例3:查询所有员工的工号并返回,起别名;示例4&…

基于Python的去哪儿网数据采集与分析可视化大屏设计与实现

摘要 本文旨在介绍如何利用Python进行去哪儿网景点数据的采集与分析。通过采集去哪儿网上的景点数据,我们可以获取大量的旅游相关信息,并基于这些数据进行深入分析和洞察,为旅游行业、市场营销策略以及用户个性化推荐等提供支持。 本文将使用…

实现挂机会议

png py文件 import os import pyautogui import time from typing import Callable, Tuple from datetime import datetime import cv2 import schedule#通过图像模板匹配在屏幕上找到指定区域并操作 def imgAutoClick(tempFile: str, whatDo: Callable[[Tuple[int, int, int…

【机器学习】混淆矩阵(Confusion Matrix)

一、混淆矩阵 True Negative (TN): 真负类,样本的真实类别是负类,并且模型将其识别为负类,cm[0][0]。False Positive (FP): 假正类,样本的真实类别是负类,但是模型将其识别为正类,cm…