问题现象

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 加载库失败相关推荐

  1. android 图片加载库 Glide 的使用介绍

    一:简介 在泰国举行的谷歌开发者论坛上,谷歌为我们介绍了一个名叫 Glide 的图片加载库,作者是bumptech.这个库被广泛的运用在google的开源项目中,包括2014年google I/O大会 ...

  2. linux dlopen 内存,Linux下加载库的有关问题(dlopenm, dlsym)

    Linux下加载库的问题(dlopenm, dlsym) 如题, 程序中发现load库成功,但是加载函数的时候报错: undefined symbol functionname 是很简单的一个东西,因 ...

  3. Compose-jb图片加载库load-the-image,适用于KMM Compose desktop桌面端(Windows,Linux,MacOs)

    前言 Android平台上有很多优秀的图片加载框架,比如Glide,Picasso,Fresco 而Compose-jetpack上的图片加载框架有Coil 但Compose-jb上却暂时没有图片加载 ...

  4. y-image: web端图片加载库

    y-image web端图片加载库 - 根据不同状态(加载中,成功, 失败),加载不同图片 效果 安装 1. CDN引入 <script src="https://cdn.jsdeli ...

  5. Android图片加载库:最全面解析Glide用法

    目录 1. 简介 介绍:Glide,是Android中一个图片加载开源库 Google的开源项目 主要作用:实现图片加载 2. 功能特点 2.1 功能列表 从上面可以看出,Glide不仅实现了图片异步 ...

  6. 谷歌推荐的Android图片加载库(Glide)介绍

    本文出自:http://blog.csdn.net/u011733020 原      文:https://inthecheesefactory.com/blog/get-to-know-glide- ...

  7. Android图片加载库—Picasso一个强大的图像下载和缓存库

    介绍 GitHub源码 点击查看 Picasso是一款强大的图片下载和缓存开源软件,只能在Android平台上使用,由Square开发.使用Picasso可以添加一些必须的特性和视觉效果到Androi ...

  8. (原创)详解Glide图片加载库常用方法

    Glide作为安卓开发常用的图片加载库,有许多实用而且强大的功能,那么,今天就来总结一番,这次把比较常见的都写出来,但并不是全部哦. 在介绍之前,先来说说什么是Glide吧: 在泰国举行的谷歌开发者论 ...

  9. Google推荐图片加载库Glide使用总结

    在泰国举行的谷歌开发者论坛上,谷歌为我们介绍了一个名叫Glide的图片加载库,作者是bumptech.这个库被广泛的运用在google的开源项目中,包括2014年google I/O大会上发布的官方a ...

最新文章

  1. 每日一皮:高级开发员 VS 菜鸟开发员
  2. 为什么分数是循环小数
  3. 关于Webstrom连接github的配置问题。
  4. xss challenge 解题思路(1-3)
  5. [Java基础]反射案列
  6. java 接口 print_Java-接口练习
  7. crontab命令使用记录(精,反弹shell)
  8. Mybatis中的updateByPrimaryKeySelective()和updateByPrimaryKey()
  9. Python 中argparse模块的使用
  10. Reverse Pairs
  11. 如何预防销售人员带走客户?
  12. (day 40 - 双指针+库函数) 剑指 Offer 58 - I. 翻转单词顺序
  13. linux安装系统识别不到硬盘,安装系统找不到硬盘解决方法【图文教程】
  14. 键盘拆开重新安装步骤_笔记本键盘按键安装拆卸详解
  15. 秒、毫秒和年月日的转换
  16. 高薪利器:四大热门云计算认证推荐
  17. IIS站点出现503错误。
  18. iOS app发布ERROR ITMS-90096
  19. matlabnbsp;pcode命令nbsp;生成…
  20. 天平游码读数例题_使用天平游码时的读数方法-word

热门文章

  1. git commit 错误:On branch main Changes not staged for commit:
  2. mac上使用qt,进行输入法的开发
  3. MySQL面试问题包含答案仅参考
  4. 利用python做一个游戏主播_Python爬取2000万直播数据——看20万游戏主播能否月入100万...
  5. 宽带服务器无响应678,宽带连接错误678怎么办 是什么原因导致的【解决方法】...
  6. Spring Boot+JWT+Shiro+MyBatisPlus 实现 RESTful 快速开发后端脚手架!
  7. 远程视频监控必备专业知识
  8. “古董级” 诺基亚功能机跑Linux是怎样的画风?
  9. 操作系统磁盘调度算法相关习题
  10. linux 有线链接树莓派,linux-通过公共互联网连接到树莓派