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

【Android】非System用户下Persist应用不自动拉起

非System用户下Persist应用不自动拉起

  • Android版本:11、12。

背景

  • 先说结论:Android在多用户场景下,系统不会启动非User 0(System)的Persist应用

应用A配置了Persist应用,且无android:singleUser=true配置。但在多用户环境下,只启动了system(user 0)进程。
排查怀疑点

  • pm list package --user userID: 查看应用A在对应的用户下是否安装
  • /data/system/user/userID/package-restrcition.xml:查看应用A是否有异常信息。

排查上述两点问题后,发现应用A在对应的userID下已经安装。

  • 尝试手动启动应用,发现可以启动。且手动kill后,可以被Aosp作为Persist应用重新拉起。
# 在User X下启动Service
am startservice --user X-n com.***.A/com.***.A.AService
# 在User X下启动Activity
am start  --user X-n com.***.A/com.***.A.AActivity

问题原因

Aosp的多用户管理模块中UserController.java,非User 0(System)下,默认不会拉起Persist应用。
在这里插入图片描述
在finishUserUnlocked的函数中。判断了,只有UserID为USER_SYSTEM的,才会启动Persist类型且“android:directBootAware=false”的应用。

如何解决这个问题

  • 监听开机广播、或者其他广播做自启动
  • 或者尝试修改Aosp代码

相关文章:

  • 2025年渗透测试面试题总结-匿名[实习]安全工程师(安全厂商)(题目+回答)
  • 【Android】System分区应用自带库与原生库同名问题分析
  • Java集合框架基础知识点全面解析
  • Go 语言基础1 Slice,map,string
  • 计算机视觉(图像算法工程师)学习路线
  • where is the examples of stm32h743i demo project inside of stm32cubeh7
  • 电商小程序店铺详情页:头部无限分类与筛选功能实现
  • 书生五期--端侧小模型论文分类微调打榜
  • 搭建 C/C++_CMake_Boost_git 开发环境
  • 计算机视觉中的可重复性:深入案例分析与Python代码实现
  • 【MySQL】08.视图
  • TiDB:从快速上手到核心原理与最佳实践
  • 【时时三省】(C语言基础)函数的嵌套调用
  • python学习day28
  • Linux 系统常用核心库----用户态程序运行的基石
  • 广东省省考备考(第二十天5.25)—言语:逻辑填空(听课后强化训练)
  • 前端常见的安全问题
  • java高级 -Junit单元测试
  • 用VMWare架飞牛nas 启用Intel千兆网卡
  • 基于点标注的弱监督目标检测方法研究
  • 测速网站开发/怎么关键词优化网站
  • 网站开发预算报表/百度官方网
  • 网站二级目录做优化/手机营销软件
  • 企业网站seo数据/营销型制作网站公司
  • 网站的主机选择/东莞seo公司
  • 外贸网站违反谷歌规则/上海网站建设公司排名