当前位置: 首页 > news >正文

Android12启动崩溃 no namespace called

Android12启动崩溃 no namespace called

  • 背景:
    Android12系统开机启动后,系统卡在开机界面,无法进去home。adb终端查看后,发现zyogte64启动崩溃no namespace called com_android_art
    在这里插入图片描述

  • Android使用了基于命名空间的动态连接器,用来解决生态碎片及安全问题(关于这部分的可以自行搜索,下图为android官网给出的命名空间隔离图示)。关于命名空间,可以简单理解为 把一部分动态库放在特定的命名空间下,只有进程隶属于这个命名空间,才能访问这些动态库
    在这里插入图片描述

  • 因此,no namespace called com_android_art这个问题就是zyogte64这个进程在加载apex时,找不到com_android_art这个命名空间。

  • 代码定位(art/libnativeloader/native_loader.cpp)

 Result<void> CreateNativeloaderDefaultNamespaceLibsLink(NativeLoaderNamespace& ns)
      REQUIRES(g_namespaces_mutex) {
    const char* links = getenv("NATIVELOADER_DEFAULT_NAMESPACE_LIBS");
    if (links == nullptr || *links == 0) {
      return {};
    }
    // Pass nullptr to Link() to create a link to the default namespace without
    // requiring it to be visible.
    return ns.Link(nullptr, links);
  }
  • 可以看出,问题是因为android_get_exported_namespace返回空。查询android官网,linkerconfig配置中当namespace.name.visible这个属性为false的时候,通常情况下android_get_exported_namespace会返回空。
  • 修改方式
    art/build/apex/linker.config.json,在这个json文件中,添加了如下一个key。重新编译fastboot烧写后,该问题解决。
"visible":true

相关文章:

  • 【HTML——旋转晕眩】(效果+代码)
  • codeblocks安装、使用、调试教程
  • 交换机与路由技术-32-命名ACL
  • 互联网大厂技术岗实习/求职经验分享(实习内推+简历+面试+offer)
  • Java中的数组以及八大排序算法
  • zabbix分布式
  • [math]判断线段是否相交及夹角
  • 如何并行化普通的python代码
  • 人力资源团队怎样利用智能科技提升工作效率
  • 对角线的输出
  • Charles乱码和SSL 代理问题解决
  • SharedPreference使用
  • Javaweb安全——Shiro漏洞利用
  • java基本微信小程序的高校科研管理系统 uniapp小程序
  • C++ 20 协程(一)
  • 《深入 React 技术栈》
  • 【从零开始安装kubernetes-1.7.3】2.flannel、docker以及Harbor的配置以及作用
  • C# 免费离线人脸识别 2.0 Demo
  • ES6--对象的扩展
  • flask接收请求并推入栈
  • HTTP请求重发
  • IDEA 插件开发入门教程
  • Javascript Math对象和Date对象常用方法详解
  • JavaScript函数式编程(一)
  • JS题目及答案整理
  • SpringBoot 实战 (三) | 配置文件详解
  • Vue2.0 实现互斥
  • yii2中session跨域名的问题
  • 订阅Forge Viewer所有的事件
  • 对象管理器(defineProperty)学习笔记
  • 前端性能优化——回流与重绘
  • 容器化应用: 在阿里云搭建多节点 Openshift 集群
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • 选择阿里云数据库HBase版十大理由
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • #14vue3生成表单并跳转到外部地址的方式
  • $().each和$.each的区别
  • $Django python中使用redis, django中使用(封装了),redis开启事务(管道)
  • %check_box% in rails :coditions={:has_many , :through}
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (二)springcloud实战之config配置中心
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (六)vue-router+UI组件库
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • (转)http协议
  • (转)树状数组
  • ./configure,make,make install的作用(转)
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .apk文件,IIS不支持下载解决
  • .bat批处理(三):变量声明、设置、拼接、截取
  • .bat文件调用java类的main方法
  • .NET : 在VS2008中计算代码度量值