libnativehelper 加载库失败
问题现象
Android无法正常启动,但是不影响native进程运行。主要影响zygote 初始化
pid: 8035, tid: 8035, name: main >>> zygote <<<
signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
Abort message: 'Error preloading public library libcommonsystem_jni.so: dlopen failed: library "libcommonsystem_jni.so" not found'r0 00000000 r1 00001f63 r2 00000006 r3 e979b830r4 00001f63 r5 00001f63 r6 ffe7337c r7 0000010cr8 e69a9fc0 r9 0000002f r10 00000071 r11 00000070ip 00000041 sp ffe73368 lr e9727105 pc e971ee9201-01 08:46:09.307 8035 8035 I zygote : option[46]=-Xfingerprint:qti/msmnile_gvmq/msmnile_gvmq:9/PQ1A.190105.004/ulixs11408240312:userdebug/test-keys
01-01 08:46:09.309 8035 8035 I zygote : VerifyImage: /system/bin/patchoat --input-image-location=/system/framework/boot.art --output-image-directory=/data/dalvik-cache/arm --instruction-set=arm --verify
01-01 08:46:09.405 8035 8035 F libnativeloader: Error preloading public library libcommonsystem_jni.so: dlopen failed: library "libcommonsystem_jni.so" not found
问题分析
这个需要从Android 启动开始分析,Java 世界的开始源于Zygote, Zygote 在起来的时候回去初始化一些动态,这个工作是由libnativehelper 完成。 libnativehelper 会从/system/etc/public.libraries.txt中来加载需要的动态库,后面的从Zygote孵化出来的进程就不需要重新加载。
问题根本原因,之前有个静态Java库会去System.loadLibrary() libcommonsystem_jni.so. 所以将libcommonsystem_jni.so配置到白名单中,使其可以方便的调用。但是现在换成其他方案的时候,移除此库。但是忘记将其从白名单中移除导致zygote无法正常初始化成功。
关于libnativehelper 可以参考:libnativehelper
问题解决
将libcommonsystem_jni.so 从 public.libraries.android.txt 中删除。文件位置如下:
/system/core/rootdir/etc/public.libraries.android.txt
参考
Android N 公共so库怎么定义呢?
libnativehelper 加载库失败相关推荐
- android 图片加载库 Glide 的使用介绍
一:简介 在泰国举行的谷歌开发者论坛上,谷歌为我们介绍了一个名叫 Glide 的图片加载库,作者是bumptech.这个库被广泛的运用在google的开源项目中,包括2014年google I/O大会 ...
- linux dlopen 内存,Linux下加载库的有关问题(dlopenm, dlsym)
Linux下加载库的问题(dlopenm, dlsym) 如题, 程序中发现load库成功,但是加载函数的时候报错: undefined symbol functionname 是很简单的一个东西,因 ...
- Compose-jb图片加载库load-the-image,适用于KMM Compose desktop桌面端(Windows,Linux,MacOs)
前言 Android平台上有很多优秀的图片加载框架,比如Glide,Picasso,Fresco 而Compose-jetpack上的图片加载框架有Coil 但Compose-jb上却暂时没有图片加载 ...
- y-image: web端图片加载库
y-image web端图片加载库 - 根据不同状态(加载中,成功, 失败),加载不同图片 效果 安装 1. CDN引入 <script src="https://cdn.jsdeli ...
- Android图片加载库:最全面解析Glide用法
目录 1. 简介 介绍:Glide,是Android中一个图片加载开源库 Google的开源项目 主要作用:实现图片加载 2. 功能特点 2.1 功能列表 从上面可以看出,Glide不仅实现了图片异步 ...
- 谷歌推荐的Android图片加载库(Glide)介绍
本文出自:http://blog.csdn.net/u011733020 原 文:https://inthecheesefactory.com/blog/get-to-know-glide- ...
- Android图片加载库—Picasso一个强大的图像下载和缓存库
介绍 GitHub源码 点击查看 Picasso是一款强大的图片下载和缓存开源软件,只能在Android平台上使用,由Square开发.使用Picasso可以添加一些必须的特性和视觉效果到Androi ...
- (原创)详解Glide图片加载库常用方法
Glide作为安卓开发常用的图片加载库,有许多实用而且强大的功能,那么,今天就来总结一番,这次把比较常见的都写出来,但并不是全部哦. 在介绍之前,先来说说什么是Glide吧: 在泰国举行的谷歌开发者论 ...
- Google推荐图片加载库Glide使用总结
在泰国举行的谷歌开发者论坛上,谷歌为我们介绍了一个名叫Glide的图片加载库,作者是bumptech.这个库被广泛的运用在google的开源项目中,包括2014年google I/O大会上发布的官方a ...
最新文章
- 每日一皮:高级开发员 VS 菜鸟开发员
- 为什么分数是循环小数
- 关于Webstrom连接github的配置问题。
- xss challenge 解题思路(1-3)
- [Java基础]反射案列
- java 接口 print_Java-接口练习
- crontab命令使用记录(精,反弹shell)
- Mybatis中的updateByPrimaryKeySelective()和updateByPrimaryKey()
- Python 中argparse模块的使用
- Reverse Pairs
- 如何预防销售人员带走客户?
- (day 40 - 双指针+库函数) 剑指 Offer 58 - I. 翻转单词顺序
- linux安装系统识别不到硬盘,安装系统找不到硬盘解决方法【图文教程】
- 键盘拆开重新安装步骤_笔记本键盘按键安装拆卸详解
- 秒、毫秒和年月日的转换
- 高薪利器:四大热门云计算认证推荐
- IIS站点出现503错误。
- iOS app发布ERROR ITMS-90096
- matlabnbsp;pcode命令nbsp;生成…
- 天平游码读数例题_使用天平游码时的读数方法-word
热门文章
- git commit 错误:On branch main Changes not staged for commit:
- mac上使用qt,进行输入法的开发
- MySQL面试问题包含答案仅参考
- 利用python做一个游戏主播_Python爬取2000万直播数据——看20万游戏主播能否月入100万...
- 宽带服务器无响应678,宽带连接错误678怎么办 是什么原因导致的【解决方法】...
- Spring Boot+JWT+Shiro+MyBatisPlus 实现 RESTful 快速开发后端脚手架!
- 远程视频监控必备专业知识
- “古董级” 诺基亚功能机跑Linux是怎样的画风?
- 操作系统磁盘调度算法相关习题
- linux 有线链接树莓派,linux-通过公共互联网连接到树莓派