RK3568 Android 13 系统裁剪
android 13 系统裁剪是个大工程,裁剪也是需要大量的测试,才能保证系统的稳定性,以下是RK官方给出的裁剪方案,有兴趣的可以去看一下,对裁剪不是要求过高的可以根据官方的建议,对系统进行裁剪:
Rockchip Android平台内存优化及系统裁剪_build_with_go_opt-CSDN博客
然后官方的裁剪比较少,往往达不到我们自身需求想要的,所以我总结了 我在开发过程中,精简系统的部分经验,望大家指正
一.裁剪应用
应用裁剪是精简系统的重要环节,apk应用占用系统的资源较大,所以应用裁剪,精简应用是系统的重要环节
Android系统源码全编译时,都会通过PRODUCT_PACKAGES来控制源码模块是否需要编译, 对于系统默认的一些模块, 如果想要进行裁剪, 比如机顶盒上面,可能不需要电话,短信等APP, 此时就需要修改系统基础的配置文件, 将PRODUCT_PACKAGES中包含的电话短信APP模块删除, 这样改动太大, 耦合性也太大, 我们可以在Android系统源码的编译规则中增加一个PRODUCT_DEL_PACKAGES 变量来对模块进行删除,实现模块裁剪的功效。当然裁剪不仅仅局限于系统A PP, 源码中所有的模块都可以通过PRODUCT_DEL_PACKAGES 来裁剪。
所以我们首先给系统增加一个PRODUCT_DEL_PACKAGES裁剪规则(红色为新增部分)
1、修改build/core/product.mk 添加PRODUCT_DEL_PACKAGES变量的声明
# The first API level this product shipped with
_product_single_value_vars += PRODUCT_SHIPPING_API_LEVEL
_product_single_value_vars += PRODUCT_DEL_PACKAGES
2、编辑build/core/main.mk
$(eval ### Filter out the overridden packages and executables before doing expansion) \
$(eval _pif_overrides := $(call module-overrides,$(_pif_modules))) \
$(eval _pif_modules := $(filter-out $(_pif_overrides), $(_pif_modules))) \
$(eval _pif_dels := $(call get-product-var,$(1),PRODUCT_DEL_PACKAGES)) \
$(eval _pif_modules := $(filter-out $(_pif_dels), $(_pif_modules))) \
3.在相应的设备产品mk文件中添加用PRODUCT_DEL_PACKAGES属性来控制模块删除
一版目录为device 目录下 增加此属性
RK3568的目录为device/rockchip/rk356x/device.mk

——————————————————————————————————————
二、裁剪系统服务
目录:frameworks/base/services/java/com/android/server/SystemServer.java
这里以打印机服务为例(其他服务类似)
第一步:新增控制服务是否启动开关属性
boolean pinrtEnable= SystemProperties.getBoolean("persist.print.enable", false);
第二步:根据属性控制是否启动打印机服务
if (!pinrtEnable&& mPackageManager.hasSystemFeature(PackageManager.FEATURE_PRINTING)) {
mSystemServiceManager.startService(PRINT_MANAGER_SERVICE_CLASS);
}
第三步: 屏蔽SystemFeature
查找含有<feature name=“android.software.print” /> 的文件,全部注释掉
具体操作可以参考[Android][Framework]裁剪SystemServer服务以及关闭SystemFeature-腾讯云开发者社区-腾讯云
相关文章:
RK3568 Android 13 系统裁剪
android 13 系统裁剪是个大工程,裁剪也是需要大量的测试,才能保证系统的稳定性,以下是RK官方给出的裁剪方案,有兴趣的可以去看一下,对裁剪不是要求过高的可以根据官方的建议,对系统进行裁剪: Rockchip And…...
Ubuntu 隐藏Telnet主机SSH服务时显示版本信息问题
一、背景 默认情况下,我们通过telnet服务器的22端口,能够获取OpenSSH服务的banner信息(如下图所示)。而低版本的OpenSSH存在许多高危漏洞。。为了安全我们要隐藏这个信息。 二、隐藏Telnet版本信息 当使用telnet命令,telnet 192.168.31.20…...
webpack环境配置
1.首先安装 cross-env npm install cross-env --save-dev 在package.json里面配置 根据不同命令打包 "scripts": {"dev": "cross-env NODE_ENVdevelopment webpack-dev-server --config webpack.config.dev.js","dev:test": "c…...
树控件、下拉框、文本框常用测试用例
01 控件的测试外观操作 1)项目中的所有树是否风格一致 2)树结构的默认状态是怎样的。比如默认树是否是展开,是展开几级? 是否有默认的焦点?默认值是什么?展开的节点图标和颜色? 3)…...
Java把列表数据导出为PDF文件,同时加上PDF水印
一、实现效果 二、遇到的问题 实现导出PDF主体代码参考:Java纯代码实现导出PDF功能,下图是原作者实现的效果 导出报错Font STSong-Light with UniGB-UCS2-H is not recognized.。参考:itext 生成 PDF(五) 使用外部字体 网上都是说jar包的版本…...
const与readonly详解
const与readonly详解 大家好,我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天,我们将深入探讨在TypeScript中常用的const与readonly关键字,了解它…...
ArcGIS Pro 如何计算长度和面积等数据?
要素的几何属性属于比较重要的信息,作为一款专业的GIS软件,ArcGIS Pro自然也是带有计算几何的功能,这里为大家介绍一下计算方法,希望能对你有所帮助。 数据来源 教程所使用的数据是从水经微图中下载的矢量数据,除了矢…...
IntelliJ创建一个springboot工程
安装jdk mac教程 windows教程 安装maven mac教程 windows教程 建议: 在本地磁盘新建一个文件夹叫maven,然后把下载的maven安装到这里。在后续的IntelliJ操作中,配置maven的settings.xml和repository地址为这个目录下的地址。 创建sprin…...
Spark入门02-Spark开发环境配置(idea环境)
安装与配置Spark开发环境 1.下载解压安装包 https://archive.apache.org/dist/spark/spark-2.1.2/ https://mirrors.tuna.tsinghua.edu.cn/apache/spark/spark-3.3.4/ 2、新建Scala项目 参考https://blog.csdn.net/weixin_38383877/article/details/135894760 3、项目中引…...
Codeforces Round 886 (Div. 4)
目录 A. To My Critics B. Ten Words of Wisdom C. Word on the Paper D. Balanced Round E. Cardboard for Pictures F. We Were Both Children G. The Morning Star H. The Third Letter A. To My Critics 直接模拟 void solve(){int a,b,c; cin>>a>>b&…...
Pull模式和Push模式
Pull模式是一种消息消费模式,其中客户端主动从服务端拉取数据。 优点:客户端可以根据自己的消费能力来消费数据,不存在消息堆积的情况。 缺点:消息处理可能不及时,可能存在大量无效请求,客户端需要考虑拉取…...
高端车规MCU的破局之路
目录 1 低质量的无效内卷 2 高端车规MCU产品共性 2.1 支持标定测量 2.2 低延迟通信加速 2.3 完备的网络安全解决方案 2.4虚拟化 3 国产替代的囚徒困境 1 低质量的无效内卷 近几年,车规MCU国产替代的呼声此消彼长,但仍然集中在低端产品。 从产…...
活字格V9获取图片失败bug,报错404,了解存储路径,已改为批量上传和批量获取
项目场景: 问题描述 原因分析: 解决方案: 完成了批量上传功能,这插件真的很方便 于是写了个批量获取附件的js代码,我真厉害 项目场景: 活字格V9版本获取图片链接Upload 【9.0.103.0】图片上传的存储路…...
【Echart】echart图表不显示总结
【Echart】echart图表不显示 经常遇到的场景:v-if和el-tabs切换图表不显示图表; 1、echarts.init时确认dom容器是否设置了宽高,必须设置宽高; 错误写法 <div id"line" ref"lineChart" width"100%&qu…...
vue 组件之间相互传值的6种方法
Vue.js 中组件间通信的方法有很多种,以下是6种常见的直接或间接的组件传值方式: 1. Props(父向子) 优点: 易于理解,符合单向数据流的原则,有利于代码维护。 缺点: 数据只能从父组件…...
开源大规模分布式MQTT消息服务器EMQX部署教程
1.EMQX是什么? EMQX 是一款开源的大规模分布式 MQTT 消息服务器,功能丰富,专为物联网和实时通信应用而设计。EMQX 5.0 单集群支持 MQTT 并发连接数高达 1 亿条,单服务器的传输与处理吞吐量可达每秒百万级 MQTT 消息,并…...
postgresql慢查询排查和复现
postgresql慢查询排查和复现 一. 介绍一张表:pg_stat_activity pg_stat_activity 是 PostgreSQL 中一个非常有用的系统视图,提供了有关当前数据库连接和活动查询的信息。通过查询这个视图,你可以获取有关正在执行的查询、连接的用户、进程 …...
【服务器】搭建ChatGPT站点常见问题
目录 ❓ 常见问题 🌼1. 什么是OpenAI APIkey? 🌼2. 什么是Token? 🌼3. 为什么回复不是GPT-4? 🌼4. 如何区分 GPT-3.5 和 GPT-4 🌼5. 为什么回复到一半卡住? 🌼6.…...
QT+opengl 创建一个六边形
一.关键名词解释 VAO: Vertex Array Object, 顶点数组对象,你要绘制的图形。 VBO:Vertex Buffer Object, 顶点缓冲对象,所有顶点的集合。 EBO:Element Buffer Object, 元素缓冲对象,顶点的索引值。 IBO: Index Buffer Object, 索引缓冲对象。…...
Android imageView.setImageXXX() 引发的卡顿问题
在 Android 开发中,ImageView 是一个用户界面控件,用于在应用中显示图片。它是 Android UI 组件库中一个非常基础和常用的部分。使用 ImageView,你可以在屏幕上显示来自不同来源的图像,比如位图文件、绘图资源 drawable、网络来源…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...
51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...
【力扣数据库知识手册笔记】索引
索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
PL0语法,分析器实现!
简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
初探Service服务发现机制
1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源…...
GitHub 趋势日报 (2025年06月06日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现指南针功能
指南针功能是许多位置服务应用的基础功能之一。下面我将详细介绍如何在HarmonyOS 5中使用DevEco Studio实现指南针功能。 1. 开发环境准备 确保已安装DevEco Studio 3.1或更高版本确保项目使用的是HarmonyOS 5.0 SDK在项目的module.json5中配置必要的权限 2. 权限配置 在mo…...
pgsql:还原数据库后出现重复序列导致“more than one owned sequence found“报错问题的解决
问题: pgsql数据库通过备份数据库文件进行还原时,如果表中有自增序列,还原后可能会出现重复的序列,此时若向表中插入新行时会出现“more than one owned sequence found”的报错提示。 点击菜单“其它”-》“序列”,…...
