android的system域解耦

给App开发者的冷知识:你的应用想进系统分区?聊聊/system/priv-app/、/system/app/和/system_ext/app/的门槛 本文深入解析了Android系统分区应用部署的关键目录/system/priv-app/、/system/app/和/system_ext/app/的技术门槛与准入条件。详细介绍了各目录的权限等级、签名要求及典型应用场景,帮助开发者理解如何为应用选择正确的部署路径,实现更高权限和系统集成。 阅读详情
AI摘要

文章详细阐述了Google如何通过GSI(通用系统镜像)和ProjectTreble项目推动Android系统的模块化,以实现更高效的OTA更新和设备兼容性。系统被划分为system_ext、system、product、vendor和ODM分区,其中VINTF(供应商接口)和产品接口确保了不同组件间的稳定交互。这种解耦方案旨在减少对硬件特定部分的依赖,促进Android生态系统的开放性和灵活性。

google很早在为此做准备,要求所有设备能够刷GSI(通用系统镜像),并跑过XTS测试。

动态分区解耦方案如上图。

一、分区描述

  • 单一系统映像 (SSI)。包含system和system_ext图像的新概念图像。当这些分区对于一组目标设备是通用的时,这些设备可以共享 SSI 并跳过构建system和system_ext映像。

  • system_ext分区。可以使用system资源并且可以包含以下系统模块的新分区:

  • 在system分区中扩展 AOSP 系统模块。我们建议将此类模块上传到 AOSP,以便稍后将它们安装到system分区。

  • 捆绑 OEM 或 SoC 特定模块。我们建议取消捆绑此类模块,以便将它们安装到product或vendor分区。

  • system分区。用于 OEM 产品的通用系统映像。我们建议将专有模块移出system分区,方法是将它们上游到 AOSP 或将它们移到system_ext分区。

  • product分区。此分区现在可以使用允许的接口来安装未与任何其他分区捆绑的产品特定模块。

  • vendor & odm 分区。系统 (SoC) 供应商(vendor)与原始设计制造商 (ODM) 为其特定设备(他们的板)定制片上系统 (SoC) 供应商板支持包 (BSP)。这使他们能够为特定于板的组件、特定于板的守护进程或他们自己在硬件抽象层 (HAL) 上的功能实现内核模块。他们可能还想更换或定制 SoC 组件。

二、project treble架构

https://android-developers.googleblog.com/2017/05/here-comes-treble-modular-base-for.html

在Project Treble中,整体式 Android 分为两部分:特定于硬件的部分(供应商实现)和通用操作系统部分(Android 操作系统框架)。每个软件都安装在单独的分区中:硬件特定软件的供应商分区和通用操作系统软件的系统分区。一个称为供应商接口 ( VINTF ) 的版本化接口在两个分区中定义和实施。通过使用这个分区系统,您可以在不修改供应商分区的情况下修改系统分区,反之亦然。

三、镜像之间的接口

供应商和产品图像的两个主要接口围绕 SSI 存在:

  • 供应商接口 (VINTF) :VINTF 是驻留在供应商和 ODM 映像中的组件的接口。产品和系统镜像中的组件只能通过此接口与供应商和 ODM 镜像进行交互。例如,供应商映像不能依赖于系统映像的私有部分,反之亦然。这最初是在 Project Treble 中定义的,它将图像分成系统和供应商分区。使用以下机制描述接口:

  • HIDL (直通 HAL 仅适用于system和system_ext模块)

  • 稳定的AIDL

  • 配置

  • 系统属性 API

  • 配置文件架构 API

  • VNDK

  • Android SDK API

  • Java SDK 库

  • 产品界面:产品界面是SSI和产品图片之间的界面。定义一个稳定的接口可以将产品组件与 SSI 中的系统组件分离。产品接口需要与 VINTF 相同的稳定接口。但是,对于搭载 Android 11(及更高版本)的设备,仅强制执行 VNDK 和 Android SDK API。

四、android.bp参数定义

before enforcement代表之前所在域,after enforcement代表配置关键字之后可以所在域使用。

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

相关推荐

Android系统解耦方案

Android系统的mainlane计划 随着android-Q的到来,google对android framework中某些模块进行了独立解耦,不在运行在systemserver中,同时禁止各个odm/oem厂商修改这部分代码,仅仅提供了代码实现和一个单独的apk供厂商集成。 这一举措提高了google对android系统的管控力。如果说之前treble计划是促进了厂商的适配效率,那么mainlane就是强制厂商提升自身软件建设能力来提升升级效率的方案。 Mainlane后的升级策略 google

头铁的伦的博客 2913

Android11(R) system_ext 分区 system_ext_specific 属性

android11 开搞 朋友们,最近拿到 androidR 的代码了,让我们来康康有哪些变动,一上来就给我整懵了,编译了 SystemUI 后发现 居然跑到 system\system_ext\priv-app 文件下了,这是什么鬼,又新加分区?之前 Q 版本已经新增了 product 分区, 并且 SystemUI、Launcher3、Settings这些核心应用都存放在此处,现在 R 版本又跑到这个 system_ext 分区下了 关于动态分区之前介绍过 Android10 动态分区介绍 一探究竟

cczhengv 1万+

从Treble架构看Android P SELinux设计:vendor与system域隔离的底层原理与破解之道

本文深入解析了Android Treble架构下SELinux策略的设计原理,重点阐述了vendor与system域严格隔离的底层逻辑。文章通过典型场景剖析了权限冲突的根本原因,并系统性地介绍了如何利用Violator属性、精细化安全上下文配置等合规方案绕过neverallow规则,在满足功能需求的同时恪守Android安全规范,确保CTS/VTS合规性。

seed的博客 259

Android 分区

分区

iffy 3116

深入解析高通QSSI:Android动态分区与system.img编译实践

本文深入解析了高通QSSI(Qualcomm Single System Image)架构,阐述了其如何通过解耦通用系统镜像与设备专属镜像,结合Android动态分区技术,显著提升多设备编译与维护效率。文章详细对比了传统编译与QSSI编译流程,并提供了实战命令与常见问题解决方案。

weixin_29278805的博客 393

从Treble架构看Android P SELinux:vendor与system分区权限隔离的坑与解

本文深入解析Android P及以上版本中,Treble架构下SELinux对system与vendor分区的强制权限隔离机制。针对开发者常见的权限配置难题,如vendor脚本解释器路径、跨分区命令调用及数据存储,提供了基于neverallow规则规避的合规解决方案与实战避坑指南,助力通过CTS测试。

weixin_29209805的博客 261

Android SELinux权限调试实战:解决system_app与vendor域属性访问问题

SELinux作为Android系统的强制访问控制核心,通过定义进程域与对象类型的安全上下文,构建了最小权限安全模型。其工作原理是基于策略规则,精确控制进程对文件、属性等资源的操作权限,从而在提升系统安全性的同时,也为系统集成与客制化开发带来了挑战。在Android分层架构中,system分区与vendor分区的策略分离,使得跨层交互成为权限问题的常见场景。本文以典型的Android系统调试案例为切入点,深入解析了当system_app域进程需要访问由vendor_mtk_audiohal_prop域管理的

weixin_34293246的博客 456

Nginx&&Keepalived(一)Keepalived介绍

一、背景: 案例1:如现有服务my-service-demo,希望实现高可用和负载均衡: 首先,my-service-demo服务部署在两台机器上,通过nginx去代理这两个节点,负载均衡就实现了。如果只有一个nginx,这台nginx机器一旦宕机,访问nginx会报错。这时候在另外一台机器nginx2上也安装nginx,并配置同样的代理,可以解决上述问题,但是暴露给用户的只有一个域名(或ip),不可能给用户提供两个域名,域名1(nginx机器1)访问不了了再让用户访问域名2(nginx机器2),这

w_t_y_y的博客 2884

Android12 generic_system.mks artifact path requirement.

1 添加白名单:PRODUCT_ARTIFACT_PATH_REQUIREMENT_ALLOWED_LIST += system/app/RawDataTest/RawDataTest.apk。3 置空检测宏:override PRODUCT_ENFORCE_ARTIFACT_PATH_REQUIREMENTS :=2 关闭检测宏:export DISABLE_ARTIFACT_PATH_REQUIREMENTS="true"(推荐方式,不影响GSI)Android.bp 写法。

u014702108的博客 862

解密m3u8视频合并:从猫抓插件到本地文件修改全流程

本文详细解析了m3u8视频合并的全流程,特别针对加密视频片段提供了解决方案。从使用猫抓插件捕获m3u8文件地址,到利用N_m3u8DL-CLI工具自动下载、解密并合并ts片段,手把手教你处理AES-128加密等常见问题,最终生成完整的本地MP4文件,适合需要备份或处理流媒体资源的用户。

weixin_29290947的博客 1361

ArcGIS小白必看:如何用3D Analyst工具将二维点线秒变三维模型(附详细步骤)

本文为ArcGIS初学者提供了利用3D Analyst工具将二维点、线数据快速转换为三维模型的完整指南。详细讲解了基于属性字段和数字高程模型(DEM)两种核心方法,并附上从数据准备、工具操作到三维场景可视化与问题排查的详细步骤,帮助用户轻松实现从平面到立体的空间数据建模。

nft7creator的博客 140

Unity安卓FPS手游手柄支持:从Input System配置到RPG交互适配

在移动游戏领域,第一人称射击(FPS)游戏因其强烈的沉浸感和操作挑战性,一直占据着重要地位。然而,在触摸屏上进行精准的瞄准、移动和射击,对于许多玩家而言始终是一个门槛。将手柄支持引入安卓手游,特别是像《太阳天堂的钥匙》这类融合了RPG元素的硬核末日生存FPS,不仅是为了提升操作手感,更是为了将移动游戏的体验向主机或PC平台靠拢,满足核心玩家的需求。本文将以一个虚构的、基于Unity引擎开发的安卓FPS手游项目为例,深入探讨如何从零开始为其实现手柄支持,涵盖从Unity输入系统配置、手柄按键映射、到RPG元素

weixin_33739627的博客 634

利用OrthoFinder做泛基因家族聚类分析

这条命令会将 Arabidopsis_thaliana.TAIR10.59_longest_trans.pep.fa 文件中的所有序列ID,去掉ID中的空格后面的部分,只保留 > 后第一个空格之前的基因ID,并将结果保存在 An1.fasta 文件中。muscle 是一种常用的多序列比对工具,用于基因组或蛋白质序列的比对。基因家族(Gene family),是来源于同一个祖先,由一个基因通过基因重复而产生两个或更多的拷贝而构成的一组基因,它们在结构和功能上具有明显的相似性,编码相似的蛋白质产物。

qq_64400864的博客 2749

android 系统解耦思想-设置与framework

可以理解android系统本身就是一个大的apk,而launcher,设置等apk就是这个大的apk中的某个模块的功能,各个功能模块各司其职,实现各自的功能 那系统这个大的apk来如何解耦了,原生android系统功能最多的apk就是设置,设置基本上涵盖了所有常用的功能模块,以下以8.0设置中的休眠功能为例来说明,入口是在设置中设置休眠时间,然后具体逻辑功能实现是在framewor...

u010672559的博客 875

Zephyr、FreeRTOS 和 RT-Thread

你是…更适合用嵌入式新手,刚接触 RTOSFreeRTOS(入门简单)IoT 项目开发,需要 BLE/WiFi/MQTTZephyr(协议全)想快速构建可部署的产品Zephyr(模块统一)只做单个任务或简单状态机控制FreeRTOS(轻量)做平台化、持续集成、自动测试Zephyr(CI 支持强)

is0815的博客 2246

【Docker】从零构建达梦DM8轻量级服务镜像:实战与优化

本文详细介绍了从零开始构建达梦DM8轻量级Docker镜像的完整实战流程。通过分析传统安装方式的痛点,阐述了使用Docker封装数据库的优势,并重点讲解了如何利用静默安装、精简组件、多阶段构建等优化技巧,打造一个体积小巧、启动迅速、配置灵活的DM8服务镜像,助力实现开发、测试与部署的环境一致性与高效性。

ooo22的博客 520

揭秘安卓系统架构:从内核到应用全解析

Android操作系统是基于Linux内核的开源移动操作系统,采用分层架构设计。其核心组件包括:Linux内核负责硬件资源管理;硬件抽象层(HAL)统一硬件接口;原生库提供核心功能支持;Android运行时(ART)执行应用代码;应用框架层为开发者提供API;系统应用和用户应用分别提供基础功能和扩展服务。这种层次化设计实现了软硬件解耦,确保了系统的稳定性和可扩展性。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 2590

适航规章、标准,书籍资料下载汇总(增加DO-297 IMA)

从事IMA平台适航工作的朋友看过来,DO-297英文版PDF可以下载了!更新日志:2024-9-28:初版。2024-10-21:增加DO-330英文版PDF下载,后台回复关键词”330“获取下载链接。2024-10-30:增加DO-160G中文版(非机翻)和英文版PDF下载,后台回复关键词”160“获取下载链接。2024-11-10:增加DO-297英文版PDF下载,后台回复关键词”297“获取下载链接。以下是一些收集到的适航相关的资料,分享给大家。

qq_41854911的博客 1578

Android LocalServices解耦妙用: system_server进程中各个服务之间的连通器LocalServices

Android LocalServices解耦妙用: system_server进程中各个服务之间的连通器LocalServices LocalServices是system_server进程中各个服务提供的本地服务。 本质上分析:LocalServices就是一个公开缓存池, system_server进程中每个服务都可以往LocalServices放对象。 例如:ActivityTaskManagerService服务,通过如下方法: LocalServices.addService(ActivityT

月山知了的博客 1386

Android 14 (AOSP) 源码架构深度解析与开发者指南

Android14源码的仓库指南信息

保持专注,保持热爱 1186

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Android GSI (Generic System Image)

GSI(Generic System Image)是Android 9.0(Pie)引入的一项重要功能,旨在使Android系统更容易在不同设备之间进行兼容性测试和验证。GSI是一个通用的、与设备硬件无关的Android系统镜像,主要用在符合Project Treble规范的设备上进行兼容性测试。它允许开发人员和设备制造商验证设备是否能够支持Android的最新版本。尽管GSI可以在多种设备上运行,但它不包含设备厂商特定的驱动和定制功能,因此可能无法提供完整的硬件支持和最佳的用户体验。

hongyeying的专栏 4379

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

安卓USB保护与入侵检测解耦:系统级安全架构演进

安卓安全机制正从应用层防护转向内核级、硬件级纵深防御。USB保护和入侵检测作为移动设备物理接口与运行时行为的核心防线,其能力下沉至Kernel LSM、HAL层TPM可信验证及Framework事件总线,标志着安卓安全模型由‘全栈开关’迈向‘按需启用、正交协同’的范式升级。这种解耦不仅提升BadUSB拦截效率与TPM attestation准确率,更支撑物流终端即插即用、教育设备会话级管控、IoT网关常驻通信等真实场景需求。开发者需适配白名单声明、异步安全状态回调与策略维度下发,而企业IT则须重构MDM策略

weixin_33947521的博客 164

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

jre9下载 jdk9

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

Android Auto认证全链路合规指南:从硬件信号到GMS解耦

Android Auto(AA)是Google主导的车载投屏协议标准,其认证并非单纯功能验证,而是覆盖硬件电气特性、HAL层接口规范、Verified Boot签名链与GMS服务解耦的系统性合规工程。核心原理在于将AAOS框架、车载硬件抽象层(HAL)和Google Mobile Services(GMS)严格分层隔离,确保每一环节满足ISO 11898-2、USB-C VCONN、HDCP 2.2等强制性信号与协议要求。技术价值体现在量产准入门槛控制、跨生态互操作保障及车载系统可信启动能力;典型应用场景包

weixin_33871366的博客 396

安卓高级保护拆分:USB保护与入侵检测的技术解耦

安卓高级保护(Advanced Protection)作为系统级安全机制,其核心在于构建多层防御体系。USB保护属于物理层边界控制,通过设备指纹识别与协议级熔断实现精准接入管控;入侵检测则属于运行时行为监控,依托无监督行为建模与马氏距离偏差分析实现动态风险判定。二者技术栈分离、响应机制异构、权限粒度不同,强行耦合反而降低策略可用性与工程适配性。此次谷歌将两者解耦,不仅提升了安全能力的可编排性与企业策略灵活性,更推动了Android设备健康中心(Find Hub)向统一风险治理平台演进,为开发者提供细粒度AP

weixin_33923762的博客 496

从/system/priv-app/到/system_ext/app/:一个Android系统应用‘搬家史’与分区演进的通俗解读

本文深入解析了Android系统从/system/priv-app/到/system_ext/app/的分区演进历程,揭示了系统应用管理的技术逻辑与权限控制策略。通过对比不同分区的权限级别、更新机制和典型应用,帮助开发者理解Android系统架构的进化方向与动态分区技术的未来趋势。

weixin_33670713的博客 461
上一篇: Android的linux内核解耦
下一篇: android 系统安全内容总结
Kael.dong
博客等级 码龄11年 148粉丝 33原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

Kael.dong

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值