android framework之priv-app,系统特权app权限那些坑

别再乱放了!Android系统应用预装,/system/priv-app和/system/app到底怎么选?(附实战测试结果) 本文深入解析Android系统应用预装时选择`/system/priv-app`与`/system/app`目录的核心差异,包括权限层级、进程保活机制等关键因素。通过实战测试数据和工程决策模型,为开发者提供明确的预装目录选择指南,帮助优化系统应用的性能和稳定性。 阅读详情
AI摘要

本文详细探讨了Android系统应用在system/app和priv-app路径下的权限差异。尽管放置在priv-app的app不可卸载,但并不意味着它们自动拥有所有系统权限。以CHANGE_COMPONENT_ENABLED_STATE权限为例,即使将应用移动到priv-app,仍需在framework的permission文件中进行权限声明才能使用。权限的获取与应用的位置和签名有关,而非仅仅取决于其在哪个路径下。

csdn在线学习课程,课程咨询答疑和新课信息:QQ交流群:422901085进行课程讨论

android跨进程通信实战视频课程(加群获取优惠)
hi,大家好!
在做framework开发过程中相信很多朋友会有一些关于系统应用的一些权限问题,在学习过千里马相关系统内置应用相关课程后,大家也知道了系统内置应用一般放在system/app路径下,这样就不会被用户随意卸载了,但是app放在这下面具体运行起来有哪些权限和没有哪些权限就不是很清楚了。

这里刚好做一个比较全面总结:
android中app主要有3个路径可以放:
data/app —这个就是最为普遍 的第三方应用的apk路径,安装在这里一般 可以随意 进行卸载
system/app --系统内置应用,这里面的app是不可以 进行卸载的,所以叫做系统应用,但是系统应用的每个应用的签名却没有要求,即可以是自己应用根据情况确定,比如大部分内置应用是platform,也有shared,media等
system/priv-app —这个部分是android后来版本新加入系统特权应用路径,这里面应用和system/app一样是不可以卸载的,但是这里大家肯定会想他和system/app有什么区别么?这里其实最主要是在于二者目录的权限apk运行起来不一样

那么这里是不是有个疑问,那么是不是系统应用如果在priv-app下是不是权限就是最高 ?
就可以自然拥有很多系统权限才可以干的是它都可以干?这个其实并不是这样的哦,权限虽和你是不是priv-app有关系 ,但并不是说你 预制在priv-app既可以拥有系统权限。这里我们就举个例子吧:
以下是一个可以 修改任何app的组件是否开放(即enable状态)的一个权限,这里要求是需要声明以下权限的,普通权限如网络什么的这里声明其实就可以了,但是这是系统级别当然不是普通第三方应用就可以拥有。

  <uses-permission
        android:name="android.permission.CHANGE_COMPONENT_ENABLED_STATE" />

在这里插入图片描述
这里看这权限要求保护级别是signature(平台签名platform)或者privileged(特权app),
那么我们来尝试把app预制到priv-app里面去,具体方法:
在这里插入图片描述
在 对应mk中加入:LOCAL_PRIVILEGED_MODULE := true
这里编译后就会把apk预制到priv-app了,然后我们运行一下,发现依然会报出没有权限相关的运行错误。。。。这个是为啥明明我们就是priv-app.
这里其实我们还忽略了一个重要的,那就是还要去framework对应permission文件下进行声明权限具体方案:
android-8.1.0_r1/frameworks/base/data/etc/目录下有一个 privapp-permissions-platform.xml文件,这里面有各priv-app权限声明
在这里插入图片描述
比如我们看到musicfx就有 对一个权限 进行声明,所以这里我们也需要在这里对我们应用进行声明,具体就完全参考musicfx既可以,只需要改变一下包名既可以

别再乱删了!搞懂Android系统/system/priv-app/、/system/app/和/system_ext/app/的区别,安全卸载预装App 本文详细解析了Android系统中/system/priv-app/、/system/app/和/system_ext/app/三大目录的区别与权限层级,提供了从初级到高级的安全卸载预装应用方案。通过禁用、ADB命令、Magisk模块替换及自定义ROM刷机等方法,帮助用户有效释放存储空间并优化系统性能,同时避免误删导致系统崩溃的风险。 阅读详情

相关推荐

Android哪些权限属于Privileged Permissions特许权限许可名单

摘要: Android特许权限是安全级别最高的系统权限,包括signature和signatureOrSystem两种级别。这些权限默认授予由平台密钥签名并安装在特定目录(如/system/priv-app)的应用。Android 10引入了强制白名单机制(privapp-permissions.xml),要求显式授权,取代了Android 8.1及之前版本的隐式授权方式。特许应用需满足签名、安装位置及白名单要求,不同Android版本在授权机制上存在差异。signatureOrSystem权限因安全隐患在

zmlovelx(帅得不敢出门 程序员群31843264) 1426

Android系统目录priv-app 和app 详解

Android4.4增加了/system/priv-app/目录,那么它与/system/app/目录有什么差别?本文主要从定义,作用,具体效果等方面进行分析。有一些是网上没有介绍到的内容。如果只是知道 priv-app 目录比 app目录权限大一点,但是不了解具体区别的可以看看。(1)普通应用。只用到了普通权限,比如上网权限等等。(2)system/app 系统应用,用来可以限制无法手动卸载,对系统权限没有要求的情况,无法调用系统api。

wenzhi的博客 6548

Android系统级应用开发:深入解析sharedUserId与android.uid.system权限机制

在Android应用开发中,权限隔离与数据共享是构建安全、高效应用架构的核心基础。Android系统基于Linux内核的用户ID(UID)机制,为每个应用创建独立的沙箱环境,实现进程与数据的隔离。通过android:sharedUserId属性,开发者可以突破默认的沙箱限制,让多个应用共享同一个UID,从而实现深度的数据共享与权限继承。这一机制在系统级应用开发中尤为重要,尤其是android.uid.system这一特殊标识,它赋予应用与系统核心进程同等的权限级别,能够访问受保护的系统API、执行静默安装等

weixin_30902251的博客 327

Android系统中/system/priv-app/和/system/app/以及/system_ext/app/的区别

这三个目录都包含预先安装在 Android 设备上的应用程序,区别在于它们的权限级别以及在系统中的位置。/system/priv-app/中的应用通常具有更高的权限,而/system/app/和/system_ext/app/中的应用相对较低。/system_ext/app/目录是为了支持系统组件更新而引入的,用于扩展系统分区。结束语Flutter是一个由Google开发的开源UI工具包,它可以让您在不同平台上创建高质量、美观的应用程序,而无需编写大量平台特定的代码。

江上清风山间明月的博客 4285

Android真实系统架构:从Linux内核到Framework的三层绞杀结构

Android并非教科书定义的标准化操作系统,而是一个以Linux内核为基底、经深度裁剪与定制的移动工程生态。其核心原理在于三层紧耦合架构:底层是被阉割又强扩展的Linux内核(含LMK内存管理、wakelock电源机制与Binder IPC);中层是芯片厂商主导的HAL与Vendor Interface,充满私有扩展与兼容性暗坑;上层则是Java Framework与Native Runtime持续博弈的‘拔河现场’。这种架构赋予Android极强硬件适配能力与商业灵活性,但也导致功耗差异、OTA升级复杂

diaoqi6581的博客 423

网络安全入门实践:基于MSF的安卓渗透测试与防御解析

渗透测试是网络安全领域的核心实践方法,通过模拟攻击者行为来评估系统安全性。其原理在于主动发现并利用系统漏洞,验证安全防护的有效性。这项技术的价值在于变被动防御为主动评估,帮助组织提前发现风险。在移动安全场景中,安卓系统因其开放性成为常见测试目标。本文以Metasploit Framework(MSF)为工具,通过生成安卓载荷、建立Meterpreter会话等实操演示,系统讲解渗透测试流程。同时结合社会工程学攻击手法,揭示移动端安全威胁的完整链条,并给出从用户到开发者的多层次防御建议。

weixin_30628077的博客 438

Android系统签名详解:从原理到实践,解决WRITE_SECURE_SETTINGS权限问题

在Android应用开发中,签名是保障应用完整性和身份认证的基础机制。普通应用签名只能证明应用归属,而系统签名(Platform Signature)则能让应用获得系统级信任,从而访问WRITE_SECURE_SETTINGS等敏感权限和系统API。文章从Android安全模型中的签名原理切入,详细解析了AOSP中platform.pk8和platform.x509.pem密钥的格式转换流程,以及如何通过apksigner和Gradle配置生成系统签名APK。同时,结合AOSP定制和系统应用预置场景,介绍了

weixin_34101784的博客 333

Android Framework 系统编译实战:全量 / 增量编译、平台签名、权限踩坑全解

本文详细介绍了Android系统特权应用(priv-app)的开发全流程。priv-app相比普通应用具有更高权限,可调用系统隐藏API、静默安装应用、控制系统设置等。文章从核心概念区分入手,讲解AOSP编译环境的搭建(全量和增量编译方案),并分步骤拆解特权应用的集成流程:包括Android.bp配置、Manifest声明、权限白名单设置等关键技术点。同时提供了常见编译和权限问题的解决方案,以及后台常驻、HiddenAPI调用等高级功能的实现方法。

郑伟强dev的专栏 177

android framework项目开发案例-动态隐藏Launcher上图标2

上节课已经把代码写好了,可惜我们发现一点击就crash啦,因为CHANGE_COMPONENT_ENABLED_STATE权限需要系统权限才可以 2021-12-17 23:09:15.078 4198-4198/com.android.things.privateapplication1 E/AndroidRuntime: FATAL EXCEPTION: main Process: com.android.things.privateapplication1, PID: 4198 jav

learnframework的博客 2041

【虚拟化生态平台】虚拟化平台esxi挂载USB硬盘

虚拟化平台安装好之后,一般情况下,只有一个硬盘在工作,其他的外接硬盘(我的只有一个ssd硬盘,其他的均是usb外接,SATA接口的硬盘是否这样我暂时不清楚哈)没有在工作,但是一个硬盘明显不够我们使用的,所以我们需要去挂载外接的硬盘来扩容。...

Rubik Blog 4834

GoDaddy域名解析 到 阿里云域名DNS

一:登录GODaddy,点击“个人中心”,然后点击“管理域名” 二:域名解析 第一种:直接解析到对应的服务器 添加一个,类型默认A,主机填写二级域名前缀(image.主域名),指向填写目标服务器ip即可(注意目标服务器80端口是否开放) 第二种:将主域名dns转到阿里云域名下 三:若要修给为阿里云解析服务器,要做以下修改,点击“更改” 点击更改后出现如下页面,此时需要到阿里云官网云解析DNS下添加域名解析 四:阿里云添加域名解析...

xiaolinzi176的博客 6704

Android系统定制中禁止权限弹窗的四种静默授权方案详解

在Android应用开发中,运行时权限模型是保障用户隐私安全的核心机制,其原理是通过ActivityManagerService和PackageManagerService在应用请求危险权限时触发系统弹窗进行用户确认。这一机制在自动化设备、Kiosk模式等专用场景下却成为阻碍,需要实现权限的静默授予以保障流程自动化。从技术价值看,静默授权能提升专用设备的部署效率和用户体验,是系统定制与ROM开发的关键需求。针对这一痛点,本文深入解析了四种主流解决方案:通过预置授权XML文件直接写入系统权限数据库、修改Pac

weixin_34378969的博客 420

Ansys Lumerical实战:5步搞定Mach-Zehnder调制器多物理场仿真(附眼图分析技巧)

本文详细介绍了使用Ansys Lumerical进行行波马赫-曾德尔调制器多物理场仿真的完整流程。通过CHARGE、MODE和INTERCONNECT三大模块的协同工作,从电学参数提取、光学射频特性分析到系统级眼图评估,分步解析了高效仿真与性能优化的核心技巧,为硅光调制器设计提供了实战指南。

weixin_29056781的博客 542

深入Android Framework:查看系统应用签名的原理与实操

Android应用签名不仅是作者标识,更是系统权限仲裁的核心依据。在system/priv-app预置应用中,签名不一致会直接导致升级失败、sharedUserId失效或特权权限无法授予。要查看系统应用使用的签名,一方面可通过apksigner、keytool等命令行工具快速获取APK证书指纹;另一方面,若要确认系统运行态真正保存的签名,则需深入Framework层,理解PackageManagerService对签名数据的解析与缓存链路。掌握这些方法,对ROM定制、系统应用开发以及签名一致性审计均有直接价

weixin_29194817的博客 116

奥顺居PHP测算引流SEO程序_八字风水_起名解梦_星座生肖综合门户源码

奥顺居PHP测算引流SEO程序_八字风水_起名解梦_星座生肖综合门户源码 S30新框架适合多种奥顺插件。

xl1407的博客 1751

如何制作Mike21溢油模型围油栏文件

这段时间群友在做海洋环评的做了一个MIKE21的溢油模型,溢油模型其实也是ECOLAB模块的应用,而在海上发生溢油事件的时候,为防止溢油对海洋生态的破坏,经常使用的一种手段就是使用围油栏技术将溢油控制在一定范围并进行处理。今天小编就给大家说说在MIKE21里怎么实现围油栏文件的制作

zhuzhujiayoua的博客 1330

Android系统定制全解析:从内核到Framework的增删改查

Android系统并非单一镜像,而是由内核、HAL、Framework、系统应用及多个分区构成的复杂体系。厂商定制系统的过程,本质上是在AOSP基础上对权限、服务和界面做增删改查。理解产品配置、资源覆盖、priv-app白名单与平台签名等机制,是掌握系统编译和镜像打包的关键。在行车记录仪、收银台等行业设备中,跨应用文件访问、SELinux安全策略和分区存储限制往往成为定制难点,FileProvider则提供了合规的共享路径。本文从底层原理讲到实际操作,再结合高频翻车现场,帮助开发者快速厘清安卓系统定制的方法

weixin_33290540的博客 249

基于DFT的scanshift sdc模板(DFT)

摘要:本文详细介绍了DFT测试模式下的SDC约束方法。

murphyrong的博客 886

Android的自启动

最近要用到这个,所以也花时间看看。从分层来说,安卓的自启动也分成三种,app的自启动,framework服务的自启动,HAL服务的自启动。现在简单说说这三种把。

fanged的专栏 1701

【RT-DETR涨点改进】全网独家首发、注意力改进篇 | ICLR 2026 | 引入 MHLA 多头线性注意力,关注不同的上下文区域,弥补卷积的长程依赖建模方面的不足,助力高效涨点,来自北京大学

🔥本文提出MHLA多头线性注意力模块,用于改进RT-DETR目标检测网络。MHLA通过恢复线性注意力的表达能力,在保持线性复杂度的同时,为网络提供高效的全局上下文建模能力。该方法解决了传统线性注意力在长序列建模中的"全局上下文坍塌"问题,使不同空间位置能关注不同上下文区域。实验表明,MHLA显著提升了RT-DETR在复杂背景、小目标和遮挡场景下的检测性能,且不增加显著计算开销。文章详细介绍了MHLA的原理、优势及8种改进方案,并提供了完整的代码实现和配置指南。

Ai缝合怪、助力小伙伴高效发论文 271

Python无法拒绝的表白界面(完整代码)

Python制作一个无法拒绝的表白界面的完整代码。

AIGC 5万+

Android 9+ 系统应用预置:privapp-permissions 白名单配置完全指南

Android系统权限管理在Android 9之后发生重要变化:系统应用预置到priv-app目录后,特权权限必须通过privapp-permissions白名单显式声明,否则会触发Permission Denial。这一机制由PackageManagerService在系统启动时强制执行,platform签名也无法豁免。理解并正确配置权限白名单,是ROM定制、企业级终端方案开发中的关键环节,它能确保预置应用安全、稳定地访问特权接口。从权限白名单的匹配逻辑出发,结合源码预置、APK拷贝、分区差异等落地场景,

weixin_34161064的博客 450

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Android system.img解包与权限管理深度解析

system.img是Android系统根分区的只读镜像,本质为ext4或erofs文件系统的sparse封装体,承载启动、服务、SELinux策略等核心机制。其操作难点不在命令本身,而在于理解Linux文件系统挂载逻辑、三重权限体系(Unix权限/Android运行时权限/SELinux强制访问控制)的协同校验,以及dm-verity签名、xattr元数据、稀疏格式转换等底层约束。掌握simg2img解sparse、rsync保留SELinux标签、setfattr精准设context、make_ext4

weixin_34033624的博客 361

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

android目录

不同的用户会把各自的数据和应用存储/安装在 /data/user/用户号/(用户号从 0 开始顺序编号,0 ,1...)下的各个目录中,系统运行时,把 /data/data 下的对应目录做符号链接,使之指向 /data/user/用户号/ 下的对应目录,以这种方式让 Android 系统能支持“多用户”。:存放了多个 XML 文件,每个 XML 文件规定了个内置应用(不论是 AOSP 的还是厂商提供的〕的权限,它会被 PackageManager 使用。:文件系统是用于(输出)内核级的调试信息的。

sun007700的专栏 1589

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

上一篇: adb shell调试contentprovider相关命令-千里马android framework
下一篇: Windows上运行自己编译的安卓系统img(补充自己制作雷电)-千里马android framework
千里马学框架
博客等级 码龄6年 1万+粉丝 650原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千里马学框架

帮助你了,就请我喝杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值