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

android .rc文件

Android .rc 文件的用途

在 Android 系统中,.rc 文件主要是 init 脚本,用于定义和配置 Android 系统的启动过程。.rc 文件的扩展名通常为 .rc,例如 init.rcinit.vendor.rcinit.hardware.rc 等。这些文件是 Android 的 init 进程(系统的第一个用户态进程)读取和解析的脚本,它们控制系统服务、设备驱动程序、属性初始化等内容。


主要用途

.rc 文件的主要用途可以总结为以下几点:

  1. 启动服务

    • 定义系统级服务(如 surfaceflingerzygote 等)的启动条件、启动方式以及依赖关系。
  2. 挂载文件系统

    • 挂载必要的文件系统(如 /system/data/vendor 等),确保操作系统能够正常运行。
  3. 设置系统属性

    • 初始化和设置系统属性(如 ro. 开头的只读属性和 persist. 开头的可持久化属性)。
  4. 权限管理

    • 设置文件、设备节点的权限,确保系统安全。
  5. 加载驱动程序

    • 加载特定的内核模块或设备驱动程序。
  6. 事件触发

    • 定义某些条件(如属性变化、文件出现)下的事件处理逻辑。

.rc 文件的结构

一个 .rc 文件通常由以下几部分组成:

  1. 命令部分

    • 命令通常用于设置属性、挂载文件系统、启动服务等。
  2. 服务定义部分

    • 定义服务的启动行为、路径和属性。
  3. 触发器部分

    • 定义在特定事件发生时执行的操作。

常见的 .rc 文件语法和示例

1. 属性设置

使用 setprop 设置系统属性。

setprop ro.debuggable 1
setprop persist.sys.usb.config adb
2. 挂载文件系统

使用 mount 挂载文件系统。

mount ext4 /dev/block/platform/soc/1da4000.ufshc/by-name/system /system ro
mount ext4 /dev/block/platform/soc/1da4000.ufshc/by-name/data /data nosuid nodev noatime
3. 启动服务

定义服务的启动方式。

service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-serverclass mainuser rootgroup system readproconrestart restart zygote_secondary

说明:

  • service:关键字,用于定义服务。
  • class:指定服务所属的类,服务可以根据类被统一启动或停止。
  • user:指定服务运行的用户。
  • group:指定服务运行的用户组。
  • onrestart:定义服务重启时执行的操作。
4. 触发器

触发器定义系统在特定条件下执行的操作。

on post-fs-datamkdir /data/misc/my_service 0770 system systemchmod 0700 /data/misc/my_service

说明:

  • on post-fs-data:触发器,表示在文件系统初始化完成后执行。
  • mkdirchmod:用于创建目录并设置权限。

常见的 .rc 文件

以下是 Android 系统中常见的 .rc 文件及其用途:

  1. init.rc

    • 系统主配置文件,定义了系统服务、属性、挂载点等全局配置。
  2. init.hardware.rc(例如 init.qcom.rc):

    • 硬件相关的配置文件,包含特定芯片或设备的初始化逻辑。
  3. init.vendor.rc

    • 定义供应商相关的服务、属性和其他配置。
  4. init.usb.rc

    • 定义 USB 子系统的初始化和配置。
  5. init.recovery.rc

    • 定义 Recovery 模式下的服务和行为。

示例:init.rc

以下是一个简化的 init.rc 示例,展示了典型的 .rc 文件内容:

# 定义系统属性
on early-initsetprop ro.boot.hardware qcomsetprop ro.debuggable 1# 挂载文件系统
on initmount ext4 /dev/block/platform/soc/1da4000.ufshc/by-name/system /system romount ext4 /dev/block/platform/soc/1da4000.ufshc/by-name/data /data nosuid nodev noatime# 启动服务
service surfaceflinger /system/bin/surfaceflingerclass mainuser systemgroup graphicsdisabledoneshotservice zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-serverclass mainuser rootgroup systemonrestart restart zygote_secondary# 触发器
on property:sys.boot_completed=1start my_custom_service

总结

.rc 文件是 Android 系统启动过程中的核心配置文件,用于定义系统服务、挂载点、属性和事件触发器。它们由 init 进程解析并执行,是 Android 平台启动时不可或缺的一部分。通过合理配置 .rc 文件,可以定制系统的启动行为和服务管理逻辑。

相关文章:

android .rc文件

Android .rc 文件的用途 在 Android 系统中,.rc 文件主要是 init 脚本,用于定义和配置 Android 系统的启动过程。.rc 文件的扩展名通常为 .rc,例如 init.rc、init.vendor.rc、init.hardware.rc 等。这些文件是 Android 的 init 进程&#xf…...

python-leetcode-零钱兑换 II

518. 零钱兑换 II - 力扣(LeetCode) 这个问题是 完全背包问题 的一个变体,可以使用 动态规划 来解决。我们定义 dp[i] 为凑成金额 i 的硬币组合数。 思路: 定义 DP 数组 设 dp[i] 表示凑成金额 i 的组合数,初始化 dp[…...

Sass 模块化革命:深入解析 @use 语法,打造高效 CSS 架构

文章目录 前言use 用法1. 模块化与命名空间2. use 中 as 语法的使用3. as * 语法的使用4. 私有成员的访问5. use 中with默认值6. use 导入问题总结下一篇预告: 前言 在上一篇中,我们深入探讨了 Sass 中 import 语法的局限性,正是因为这些问题…...

Kotlin中的数字

1、整数类型 Kotlin 提供了一组表示数字的内置类型。 对于整数,有四种不同大小的类型,因此值的范围也不同: 类型大小(比特数)最小值最大值Byte8-128127Short16-3276832767Int32-2,147,483,648 (-231)2,147,483,647 (…...

利用Postman和Apipost进行API测试的实践与优化-动态参数

在实际的开发和测试工作中,完成一个API后对其进行简单的测试是一项至关重要的任务。在测试过程中,确保API返回的数据符合预期,不仅可以提高开发效率,还能帮助我们快速发现可能存在的问题。对于简单的API测试,诸如验证响…...

【前端基础】Day 9 PC端品优购项目

目录 1. 品优购项目规划 1.1 网站制作流程 1.2 品优购项目整体介绍 1.3 学习目的 1.4 开发工具以及技术栈 1.5 项目搭建工作 1.6 网站favicon图标 1.7 网站TDK三大标签SEO优化 2. 品优购首页制作 2.1 常见模块类命名 2.2 快捷导航shortcut制作 2.3 header制作 2.4…...

FFMPEG利用H264+AAC合成TS文件

本次的DEMO是利用FFMPEG框架把H264文件和AAC文件合并成一个TS文件。这个DEMO很重要,因为在后面的推流项目中用到了这方面的技术。所以,大家最好把这个项目好好了解。 下面这个是流程图 从这个图我们能看出来,在main函数中我们主要做了这几步&…...

Linux搭建个人大模型RAG-(ollama+deepseek+anythingLLM)

本文是远程安装ollama deepseek,本地笔记本电脑安装anythingLLM,并上传本地文件作为知识库。 1.安装ollama 安装可以非常简单,一行命令完事。(有没有GPU,都没有关系,自动下载合适的版本) cd 到…...

Docker 学习(二)——基于Registry、Harbor搭建私有仓库

Docker仓库是集中存储和管理Docker镜像的平台,支持镜像的上传、下载、版本管理等功能。 一、Docker仓库分类 1.公有仓库 Docker Hub:官方默认公共仓库,提供超过10万镜像,支持用户上传和管理镜像。 第三方平台:如阿里…...

PHP之变量

在你有别的编程语言的基础下,你想学习PHP,可能要了解的一些关于变量的信息。 PHP中的变量不用指定数据类型,同时必须用$开头。 全局变量 可以在除函数外任意地方访问,如果需要在函数中访问要先获取 $x 111; function tt() {gl…...

centos和ubuntu下安装redis

1,判断环境是否有gcc gcc --version 如果未安装则执行 yum install -y gcc tcl 2,安装包下载,编译安装 cd /usr/local mkdir redis wget https://download.redis.io/releases/redis-4.0.11.tar.gz tar -xvf redis-4.0.11.tar.gz cd redis-4.0.11 编译 m…...

韩国互联网巨头 NAVER 如何借助 StarRocks 实现实时数据洞察

作者: Youngjin Kim Team Leader, NAVER Moweon Lee Data Engineer, NAVER 导读:开源无国界,在“StarRocks 全球用户精选案例”专栏中,我们将介绍韩国互联网巨头 NAVER 的 StarRocks 实践案例。 NAVER 成立于 1999 年&#xff0…...

K8s 1.27.1 实战系列(二)安装集群并初始化

一、安装 kubeadm、kubelet 和 kubectl(所有节点) 1、配置k8s的yum源地址 cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgchec…...

生命周期总结(uni-app、vue2、vue3生命周期讲解)

一、vue2生命周期 Vue2 的生命周期钩子函数分为 4 个阶段&#xff1a;创建、挂载、更新、销毁。 1. 创建阶段 beforeCreate&#xff1a;实例初始化之后&#xff0c;数据观测和事件配置之前。 created&#xff1a;实例创建完成&#xff0c;数据观测和事件配置已完成&#xff0c…...

十一、Redis Sentinel(哨兵)—— 高可用架构与配置指南

Redis Sentinel(哨兵)—— 高可用架构与配置指南 在分布式应用中,Redis 主从复制(Master-Slave)虽然能提供读写分离的能力,但它 无法自动故障转移(failover)。如果主节点(Master)发生故障,系统管理员需要手动将某个从节点(Slave)提升为主节点,并重新配置所有从节…...

java8中young gc的垃圾回收器选型,您了解嘛

在 Java 8 的 Young GC&#xff08;新生代垃圾回收&#xff09;场景中&#xff0c;对于 ToC的场景&#xff0c;即需要尽可能减少垃圾回收停顿时间以满足业务响应要求的场景&#xff0c;以下几种收集器各有特点&#xff0c;通常 Parnew和 G1 young表现较为出色&#xff0c;下面详…...

C语言学习笔记-初阶(30)深入理解指针2

1. 数组名的理解 在上一个章节我们在使用指针访问数组的内容时&#xff0c;有这样的代码&#xff1a; int arr[10] {1,2,3,4,5,6,7,8,9,10}; int *p &arr[0]; 这里我们使用 &arr[0] 的方式拿到了数组第⼀个元素的地址&#xff0c;但是其实数组名本来就是地址&…...

【Wireshark 02】抓包过滤方法

一、官方教程 Wireshark 官网文档 &#xff1a; Wireshark User’s Guide 二、显示过滤器 2.1、 “数据包列表”窗格的弹出过滤菜单 例如&#xff0c;源ip地址作为过滤选项&#xff0c;右击源ip->prepare as filter-> 选中 点击选中完&#xff0c;显示过滤器&#…...

MySQL基础四(JDBC)

JDBC(重点) 数据库驱动 程序会通过数据库驱动&#xff0c;和数据库打交道。 sun公司为了简化开发人员对数据库的统一操作&#xff0c;提供了一个Java操作数据库的规范。这个规范由具体的厂商去完成。对应开发人员来说&#xff0c;只需要掌握JDBC接口。 熟悉java.sql与javax.s…...

基于CURL命令封装的JAVA通用HTTP工具

文章目录 一、简要概述二、封装过程1. 引入依赖2. 定义脚本执行类 三、单元测试四、其他资源 一、简要概述 在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具&#xff0c;可以说是一款很强大的http命令行工具。它支持文件的上传和下载&#xff0c;是综合传输工具&…...

cenos7网络安全检查

很多网络爱好者都知道&#xff0c;在Windows 2000和Windows 9x的命令提示符下可使用Windows系统自带的多种命令行网络故障检测工具&#xff0c;比如说我们最常用的ping。但大家在具体应用时&#xff0c;可能对这些命令行工具的具体含义&#xff0c;以及命令行后面可以使用的种…...

FastGPT 引申:混合检索完整实例

文章目录 FastGPT 引申&#xff1a;混合检索完整实例1. 各检索方式的初始结果2. RRF合并过程3. 合并后的结果4. Rerank重排序后5. 最终RRF合并6. 内容总结 FastGPT 引申&#xff1a;混合检索完整实例 下边通过一个简单的例子说明不同检索方式的分值变化过程&#xff0c;假设我…...

一、Prometheus架构

Prometheus 云原生十二要素是一套最佳实践和规范,旨在帮助开发人员更好地构建云原生应用 这十二个要素分别是: 单一职责独立部署无状态声明式API服务发现容错处理自适应算法自动化运维响应式编程通信协议服务注册与发现数据持久化一、Prometheus 是什么 Prometheus 是一个…...

蓝桥杯C组真题——巧克力

题目如下 思路 代码及解析如下 谢谢观看...

【大模型】大模型分类

大模型&#xff08;Large Models&#xff09;通常指参数量巨大、计算能力强大的机器学习模型&#xff0c;尤其在自然语言处理&#xff08;NLP&#xff09;、计算机视觉&#xff08;CV&#xff09;等领域表现突出。以下是大模型的常见分类方式&#xff1a; 1. 按应用领域分类 …...

WebUSB的常用API及案例

WebUSB API 允许网页与 USB 设备进行交互&#xff0c;但出于安全考虑&#xff0c;浏览器要求在调用 requestDevice 方法&#xff08;用于请求用户选择一个 USB 设备并授予网页访问权限&#xff09;时&#xff0c;必须是在处理用户手势&#xff08;例如点击按钮&#xff09;的过…...

在线研讨会 | 加速游戏和AI应用,全面认识Imagination DXTP GPU

近日&#xff0c;Imagination宣布推出 Imagination DXTP GPU IP&#xff0c;该产品重新定义了智能手机和其他功耗受限设备的图形和计算加速。它专为高效的效率而设计&#xff0c;能够提供运行AI、游戏和用户界面体验所需的性能&#xff0c;确保这些体验可以全天候流畅且持续地运…...

The Rust Programming Language 学习 (三)

所有权 所有权&#xff08;系统&#xff09;是 Rust 最为与众不同的特性&#xff0c;它让 Rust 无需垃圾回收器&#xff08;garbage collector&#xff09;即可保证内存安全。因此&#xff0c;理解 Rust 中所有权的运作方式非常重要。 这里是非常重非常重的一个知识点,这里一…...

【一个月备战蓝桥算法】递归与递推

字典序 在刷题和计算机科学领域&#xff0c;字典序&#xff08;Lexicographical order&#xff09;也称为词典序、字典顺序、字母序&#xff0c;是一种对序列元素进行排序的方式&#xff0c;它模仿了字典中单词的排序规则。下面从不同的数据类型来详细解释字典序&#xff1a; …...

【零基础到精通Java合集】第二十九集:SQL常用优化手段

课程标题:SQL常用优化手段——15分钟快速提升数据库性能 目标:掌握10+核心SQL优化技巧,解决慢查询、高负载等生产问题 0-1分钟:优化核心原则——减少数据扫描量 本质逻辑:通过索引、分页、过滤条件等手段,最小化磁盘I/O和内存计算。 反例:SELECT * FROM orders(全表扫…...