Android系统学习(六)------裁剪Android系统

2023-05-16

你好!这里是风筝的博客,

欢迎和我一起交流。


经过前面几篇博客的编译步骤,成功的编出了Android系统,但是发现编出来的system.img有点大了,有差不多1.7G,怎么对它进行裁剪,缩小system.img体积呢?

从网上找了文章,手段大体如下:

  • 1.Android应用裁剪
    也就是删除预装的APP软件,我的是Android N,在packages/apps/目录下有这么写APP:
fengzheng@ubuntu:/work/nanopc-t4-nougat$ ls packages/apps/
BasicSmsReceiver  CellBroadcastReceiver  EmergencyInfo    LegacyCamera         Phone                 SoundRecorder   TV
Bluetooth         CertInstaller          ExactCalculator  ManagedProvisioning  PhoneCommon           SpareParts      TvSettings
Browser           Contacts               Gallery          Messaging            Protips               SpeechRecorder  UnifiedEmail
Browser2          ContactsCommon         Gallery2         Music                Provision             Stk             WallpaperPicker
Calculator        DeskClock              HTMLViewer       MusicFX              QuickSearchBox        StorageManager
Calendar          DevCamera              KeyChain         Nfc                  RetailDemo            Tag
Camera2           Dialer                 Launcher2        OneTimeInitializer   SafetyRegulatoryInfo  Terminal
CarrierConfig     Email                  Launcher3        PackageInstaller     Settings              Test

这里面每个APP的用途基本都可以从其名字可以看出,或者直接网上搜也可以搜得到:

packages 目录
|-- apps (应用程序库)
| |-- AlarmClock (闹钟)
| |-- Bluetooth (蓝牙)
| |-- Browser (浏览器)
| |-- Calculator (计算器)
| |-- Calendar (日历)
| |-- Camera (相机)
| |-- CertInstaller (在Android中安装数字签名,被调用)
| |-- Contacts (拨号(调用)、联系人、通话记录)
| |-- DeskClock (桌面时钟)
| |-- Email (Email)
| |-- Gallery (相册,和Camera类似,多了列表)
| |-- Gallery3D (3D相册)
| |-- GlobalSearch (为google搜索服务,提供底层应用)
| |-- GoogleSearch (google搜索)
| |-- HTMLViewer (浏览器附属界面,被浏览器应用调用,同时提供存储记录功能)
| |-- IM (即时通讯,为手机提供信号发送、接收、通信的服务)
| |-- Launcher (登陆启动项,显示图片框架等等图形界面)
| |-- Launcher2 (登陆启动项,负责应用的调用)
| |-- Messaging (短信)
| |-- Music (音乐播放器)
| |-- PackageInstaller (安装、卸载程序的响应)
| |-- Phone (电话拨号程序)
| |-- Provision (预设应用的状态,使能应用)
| |-- Settings (开机设定,包括电量、蓝牙、设备信息、界面、wifi等)
| |-- SoundRecorder (录音机,可计算存储所需空间和时间)
| |-- Stk (接收和发送短信)

这些可以按需删除,比如我不需要打电话、发短信、相机等功能,最后只保留如下:

fengzheng@ubuntu:/work/nanopc-t4-nougat$ ls packages/apps/
BasicSmsReceiver  Launcher2            MusicFX             Protips               Settings        StorageManager  WallpaperPicker
CarrierConfig     Launcher3            OneTimeInitializer  Provision             SoundRecorder   Tag
EmergencyInfo     ManagedProvisioning  PackageInstaller    QuickSearchBox        SpareParts      Terminal
KeyChain          Music                PhoneCommon         SafetyRegulatoryInfo  SpeechRecorder  Test

除了packages/apps/目录下有APP,一些厂商也会预装自己的APP,其在vendor/目录下。
例如我的设备是rockchip厂商的产品,rk家的APP在vendor/rockchip/common/apps/目录:

fengzheng@ubuntu:/work/nanopc-t4-nougat$ ls vendor/rockchip/common/apps/
AllApp                ituxd        projectX          RkApkinstaller    RKGameControlSettingV1.0.1  RkVideoPlayer      RockVRHome
apps.mk               itvlauncher  RFTest            RkBoxVideoPlayer  RKMC                        RKVRExplorer       Settings2
ChangeLedStatus       Lightning    Rk3grExplorer     RKDeviceTest      RkMusic                     RKVRGlobalActions  SimpleLauncher
DeviceTest            MediaCenter  Rk3grVideoPlayer  RkEbookReader     RKTvLauncher                RKVRPanorama       StressTest
eHomeMediaCenter_box  MediaFloat   Rk4kVideoPlayer   RkExpe            RKUpdateService             RKVRPlayer         WifiDisplay
GoogleEmail           PinyinIME    RkAlarmHelper     RkExplorer        RkUserExperienceService     RKVRSettings       WinStartService

同样的,也是按需删除,最后我保留如下:

fengzheng@ubuntu:/work/nanopc-t4-nougat$ ls vendor/rockchip/common/apps/
AllApp      eHomeMediaCenter_box  PinyinIME      Rk3grVideoPlayer  RKDeviceTest  RKUpdateService          RKVRExplorer  SimpleLauncher
apps.mk     MediaCenter           projectX       RkApkinstaller    RKMC          RkUserExperienceService  RockVRHome    WifiDisplay
DeviceTest  MediaFloat            Rk3grExplorer  RkBoxVideoPlayer  RkMusic       RkVideoPlayer            Settings2     WinStartService

最后!还有一个地方有APP,真滴是多。。。。
在vendor/google/gapps/目录下,有一些Google服务和APP,我不需要,直接把整个google目录删除了:

rm vendor/google

其实packages/目录下还有一些其他APP,如packages/sreensavers、packages/wallpapers/目录等,懒得删了,先留着。

这时候make snod出来的system.img还是有1.5G,成功减少了100M大小。

  • 2.Android服务裁剪。
    这一块,说实话,网上文章一大抄,找了多篇文章,这部分内容都是一样的,都是一篇抄一篇,来来去去都是那些内容,给我整吐了。。。。。
    不好还是有点有用的信息,也就是build/target/product目录下的mk文件。

build/target/product是编译产品关键的mk文件存放处,此处可以更加各个mk文件编译内容进行裁剪

修改内容如下:

  • base.mk
    • 删除cameraserver,libcamera*等,我不需要camera。
    • 删除monkey,我不需要monkey测试。
    • 删除mtpd ,bmgr(数据备份管理)。
    • 删除wifi,我不需要wifi
  • core.mk
    • 删除Browser,我不需要浏览器。
    • 删除keychain,不需要密码管理。
    • 删除vpndialogs,没有vpn。
    • 删除pacprocessor、libpac。
  • core_minimal.mk
    • 删除HTMLViewer。
    • 删除gatekeeper、libgatekeeper密码管理相关的东西。
    • 删除keystore、libkeystore一个有效的安全钥匙和证书的管理工具。
    • 删除uiautomator UI测试工具。
    • 删除idmap配置和管理本机标识映射服务。
    • 删除CtsShimPrivPrebuilt和ctsshimprebuilt测试相关。
    • 删除webview、screencap、telephony-common、wallpaperbackup。web、截屏、电话、壁纸,都不需要。
  • emulator.mk
    • 删除camera.goldfish , camera.goldfish.jpeg,不需要camera。
    • 删除lights.goldfish , gps.goldfish等。
  • core_base.mk
    • 删除atrace,libnfc_ndef,wifi-service

上面这些就是照着网上那些文章然后结合我实验出来的,有些东西删了系统就起不来或者有依赖关系,删除了就编译报错了。

其实剪裁最好还是剪裁device目录下的文件,里面找到厂家的配置,一般裁剪厂家配置也足够了。
我的是rk3399板子,在devick/rk3399目录有如下mk文件:

  • device.mk
    • 删除wallpaperpicker和retaildemo
  • nanopi_t4.mk
    • 删除camera内容
  • device/rockchip/rk3399/AndroidProducts.mk
    • box等,只保留rk3399的mk
  • BoardConfig.mk
    • BOARD_SENSOR_MPU_VR设置为false

经过这些操作,发现编出来的system.img只有1.1G这么大了。

参考:Android 高通8909 系统之路之 裁剪系统 一
Android源码里packages里面的结构~~~

添加/删除 Android里app源码:
android系统源码中添加app源码(源码部署移植)


后记:
sudo vi device/rockchip/rk3399/nanopc-t4/system.prop
ro.sf.hwrotation=0

  修改默认字体大小:
vi packages/apps/Settings/res/values/arrays.xml
在里面找到entryvalues_font_size数组:

    <string-array name="entryvalues_font_size" translatable="false">
        <item>0.85</item>
        <item>1.0</item>
        <item>1.15</item>
        <item>1.30</item>
    </string-array>

这个文件里面有好多东西,还有比如锁屏时间什么的,一大堆,我们这里只关心字体大小,对应4个数值,算是:“小”、“普通”、“大”、“超大”。记住这些数值。

sudo vi frameworks/base/core/java/android/content/res/Configuration.java
找到setToDefaults方法:

/**
     * Set this object to the system defaults.
     */
    public void setToDefaults() {
        fontScale = 1;
        mcc = mnc = 0;
        mLocaleList = LocaleList.getEmptyLocaleList();
        locale = null;
        userSetLocale = false;

把fontScale 改成你要的对应字体的数值即可。如:

 fontScale = 1.3f;

参考:https://blog.csdn.net/wzh048503/article/details/79026231

https://blog.csdn.net/pwl999/article/details/80514271

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android系统学习(六)------裁剪Android系统 的相关文章

  • XML学习准备(HTML、CSS、JavaScript)

    1 学习前的准备html 1 每个网站开发人员都有必要了解以下几方面的知识 xff1a 万维网如何工作 HTML 语言 如何使用层叠样式表 CSS JavaScript 编程 XML 标准 服务器脚本技术 使用 SQL 来管理数据 2 HT
  • 如何判断系统是32位的还是64位的?

    1 最简单的一种方法 xff1a xff08 1 xff09 XP系统 右击 我的电脑 34 属性 34 xff0c 如果是32为系统 xff0c 则显示 Microsoft Windows XP Professional xff0c 即不
  • No embedded stylesheet instruction for file:奇怪的错误

    今天在看Spring的一些东西 xff0c 刚开始看 xff0c 编写了一个HelloWorld xff0c 中间除了不少错误 xff0c 但是都排除了 xff1b 但是 xff0c 最后的一个错误实在是摸不着头脑 xff1a 21 11
  • 修改Windows的默认文件查看方式

    Windows文件夹中查看文件的方式有 xff1a 缩略图 xff0c 平铺 xff0c 列表 xff0c 图标 xff0c 详细信息 xff0c 默认方式为平铺 那么如何修改成其它的默认方式呢 xff1a 进入一个文件夹 xff0c 选择
  • windows右键添加cmd

    1 运行regedit打开注册表 2 在注册表 HKEY CLASSES ROOT Directory shell分支下新建一项命名为 CommandPrompt xff0c 修改右侧窗口中的 默认 键 值为 命令提示符 xff08 你想要
  • 如何查看端口被哪个程序占用

    假如我们需要确定谁占用了我们的3306端口 1 Windows平台 在windows命令行窗口下执行 xff1a C gt netstat aon findstr 34 3306 34 TCP 127 0 0 1 9050 0 0 0 0
  • 写个心得

    唉 xff0c 菜鸟就是悲哀啊 刚刚花了将近一个小时来学习for命令 xff0c 以前一看这么复杂 xff0c 就不想学了 xff0c 总想着虽然复杂 xff0c 但也是简单的 xff0c 将来用的时候 xff0c 查查就知道了 就这样 x
  • 视图绑定功能

    文章目录 前言 以下为Kotlin语言环境在android官方文档中 视图绑定可以用于替代findViewById 并且 当启用视图绑定之后 系统会为项目中的每个XML文件生成一个绑定类 绑定类的实例包含其布局中的所有具有ID的直接引用 一
  • Android 一键分享功能

    之前在做项目时遇到这么个需求 xff0c 就是用户点击Menu或者一个按钮可以把文字分享到各大微博例如新浪微博 腾讯 人人 开心 校内等 现在我给大家演示一下 xff08 一 xff09 先建一个工程文件ShareDemo xff08 二
  • 怎么根据Comparable方法中的compareTo方法的返回值的正负 判断升序 还是 降序?

    public int compareTo Student o return this age o age 比较年龄 年龄的升序 应该理解成return 1 this age o age 计算机没有所谓的正序和逆序 xff0c 他只管大还是小
  • 自动驾驶技术-环境感知篇:V2X技术的介绍

    V2X技术概述 在前面的几篇文章分别介绍了自动驾驶在环境感知领域的相关技术点 xff0c 主要介绍了如何通过雷达配合视觉技术实现车辆自身的智能 其实在环境感知方面 xff0c 除了利用车辆自身的智能 xff0c 还可以借助外部环境实现信息的
  • 深度学习分布式策略优化、显存优化、通信优化、编译优化综述

    综述 因为我个人最近在从事可能是AI领域对性能挑战最大的方向 xff0c 自动驾驶领域 xff0c 所以对整个深度学习训练的优化尤为关注 xff0c 最近一直在学习相关内容 xff0c 谨以此篇文章做一个总结 我一直很看好深度学习训练优化这
  • 量子计算机的优势和建设挑战

    1 为什么需要量子计算机 目前大家日常使用的计算机都是经典计算机 xff0c 经典计算机计算性能的发展遵循摩尔定律 xff0c 在价格不变时 xff0c 集成电路上可容纳的晶体管数目 xff0c 约每隔18个月便会增加一倍 性能也将提升一倍
  • 浅谈ChatGPT对生产关系及工具的颠覆影响

    xff08 先歪个楼 xff0c 配图是三体乱纪元 xff0c 证明三体问题无解 xff0c 而ChatGPT证明了AIGC问题是可解的 xff09 最近ChatGPT越来越热 xff0c 仿佛看到了资本市场又一次的爆发 最近周末也会跟几个
  • 蓟门边studio-码农创业路的起点

    蓟门边工作室 xff0c 开张了 先简单介绍下lz的情况吧 xff01 lz是北邮在读硕士 xff0c 码农一枚 断断续续写代码也有一两个年头了 xff0c 但是感觉总是在外面飘着 xff0c 没写过什么大的项目 xff0c 也没真正依靠技
  • 【机器学习算法-python实现】逻辑回归的实现(LogicalRegression)

    转载请注明出处 xff1a http blog csdn net buptgshengod 1 背景知识 在刚刚结束的天猫大数据s1比赛中 xff0c 逻辑回归是大家都普遍使用且效果不错的一种算法 xff08 1 xff09 回归 先来说说
  • 新闻个性化推荐系统(python)-(附源码 数据集)

    1 背景 最近参加了一个评测 xff0c 是关于新闻个性化推荐 说白了就是给你一个人的浏览记录 xff0c 预测他下一次的浏览记录 花了一周时间写了一个集成系统 xff0c 可以一键推荐新闻 xff0c 但是准确率比较不理想 xff0c 所
  • 明天是我的生日,写给24岁的自己

    哎 xff0c 本来想把今晚留给蛋疼的latex 我的导师让我写一篇论文 xff0c 我正在研究怎么用latex 但是想了想 xff0c 明天就过生日了 xff0c 最后一晚还是写点东西 xff0c 静静地思考下 本来想写点东西发到朋友圈或
  • 如何用PYTHON代码写出音乐

    如何用PYTHON代码写出音乐 什么是MIDI 博主本人虽然五音不全 xff0c 而且唱歌还很难听 xff0c 但是还是非常喜欢听歌的 我一直在做这样的尝试 xff0c 就是通过人工智能算法实现机器自动的作词和编曲 xff08 在这里预告下
  • 深度学习RNN实现股票预测实战(附数据、代码)

    背景知识 最近再看一些量化交易相关的材料 xff0c 偶然在网上看到了一个关于用 RNN实现股票预测的文章 xff0c 出于好奇心把文章中介绍的代码在本地跑了一遍 xff0c 发现可以 work 于是就花了两个晚上的时间学习了下代码 xff

随机推荐

  • Oracle面试题(基础篇)

    1 Oracle跟SQL Server 2005的区别 xff1f 宏观上 xff1a 1 最大的区别在于平台 xff0c oracle可以运行在不同的平台上 xff0c sql server只能运行在windows平台上 xff0c 由于
  • 图像拐点检测-原理以及代码实现

    今天带来的内容只用两个字形容 干货 xff01 xff01 首先我们科普下图像识别的常识 xff0c 图片在电脑看来 xff0c 其实就是一个矩阵 xff0c 每个矩阵中的一个值都对应图片的一个像素点 xff08 下图摘自 机器学习实践应用
  • c#如何实现在两个窗体(Form)间传输数据或变量

    在父窗体中显示子窗体时 xff0c 加上子窗体 Owner 61 this 在子窗体中定义一个父窗体对象 xff0c 在Load函数里面让父窗体对象 61 xff08 父窗体类型 xff09 this Owner 然后用这个父窗体对象就可以
  • 各类远程工具对比

    windows上自带远程桌面和远程协助 xff0c linux上基本标配SSH xff0c 当我们需要跨平台远程时 xff0c 可能就需要其他工具了 常用的工具如下 工具名称 支持平台 官网 特点 优点 缺点 ToDeskwindowsht
  • 无线电波在介质中的传播速度计算公式和印刷电路板(PCB)的特性阻抗与特性阻抗控制

    无线电波在介质中的传播速度计算公式 首先介绍介质天线 xff0c 介质天线是为了使接收天线小型化而设计的 所以有必要了解一下电磁波在不同介质中的传播速度的计算方法 xff0c 以便于确定不同介质材料中天线振子的长度 无线电波的波长 61 传
  • 新手如何快速入门人工智能?

    网上有很多关于 新手如何快速入门人工智能 的文章 xff0c 但是对于真正的小白来说并没有太多的指导作用 作为新手想进入人工智能领域 xff0c 首先是要明确需要掌握哪些基础知识 xff0c 其次是掌握一套行之有效的学习方法 xff0c 最
  • AI技术在医学领域有什么用?

    伴随人工智能技术热潮的再次崛起 xff0c 医学领域与AI技术的结合被认为是最有发展潜力的领域 可以看到人工智能多年来的厚积薄发 xff0c 在人脸语音识别 深度学习等领域的深入发展 xff0c 使得AI技术在医学领域不断获得突破性进展 下
  • OpenCV的使用范围有哪些?可以用在哪些领域?

    OpenCV是一种开源的计算机视觉库 xff0c 可以用于各种图像处理和计算机视觉任务 以下是OpenCV的使用范围 xff1a OpenCV的使用范围有哪些 计算机视觉 xff1a OpenCV可用于计算机视觉任务 xff0c 如目标检测
  • 人工智能可以用来诊断疾病吗?具体有什么用?

    人工智能可以用来诊断疾病 在医疗保健领域 xff0c 利用人工智能技术进行疾病诊断已经得到了广泛的应用和研究 具体来说 xff0c 人工智能可以通过机器学习等技术对医疗数据进行分析 xff0c 辅助医生进行疾病诊断 xff0c 提高诊断的准
  • 人工智能入门需要学习哪些课程?AI基础知识

    要入门人工智能 xff0c 需要掌握一些基础知识和技能 以下是一些入门人工智能需要学习的课程和基础知识 xff1a 人工智能入门需要学习哪些课程 xff1f AI基础知识 数学基础 xff1a 人工智能需要用到许多数学知识 xff0c 包括
  • coreApp="true";android:sharedUserId="android.uid.system";android:process="system"

    1 本文说下coreApp 61 34 true 34 xff1b android sharedUserId 61 34 android uid system 34 xff1b android process 61 34 system 34
  • 线程池 多线程运行结束后 如何关闭? ExecutorService的正确关闭方法

    前言 最近在使用ExecutorService的时候 xff0c 对于与ExecutorService相关的概念有些迷糊 xff0c 加上本身ExecutorService内部的有些方法名在取名上也容易让使用者误解 xff0c 导致 犯了一
  • 教你搭建个人/企业私有云盘-seafile

    工具 原料 Linux服务器 xff08 网上一大堆 xff0c 不要虚拟注意 xff0c 要云主机 xff0c 这样你才有操作权限 xff01 小编的是89一个月的测试主机 xff09 xshell xff08 以前的教程中用到过 xff
  • Android 模拟ButterKnife BindView注解实现绑定view(KAPT使用教程)

    简单回顾一下ButterKnife使用BindView注解初始化View过程 xff1a 使用注解 64 BindView R id main title view xff0c 并将要绑定的id传入调用BufferKnife bind th
  • 概率论知识环状及桌形排列问题

    关于峁诗松 概率论与数理统计 第1 2第14题 xff0c 看了答案也觉得不是很懂 xff0c 于是查了大量的参考资料 xff0c 才发现原来环状排列问题 xff0c 是一类很特殊的排列的问题 xff0c 有自身的规律 xff0c 自己解题
  • 三种简单数组排序n^2(C语言)

    文章目录 SelectionSortBubbleSortInsertionSort SelectionSort 选择排序 算法 xff1a 依次比较 xff08 仅仅只是比较 xff09 xff0c 找出最小数 xff0c 按从小到大的顺序
  • arch 中文化(乱码-输入法安装)

    文章目录 语言包中文输入法 xff08 ibus rime ibus自启动 语言包 我的情况是因为没有安装中文语言包 安装完就ok了 span class token function sudo span pacman S adobe so
  • mac date 命令记坑, 翻了半天 man 才发现的

    昨天 date v span class hljs number 1 span d 43 span class hljs string 34 span class hljs variable Y span span class hljs v
  • spring注解详细解析

    一 Spring Web MVC注解 64 RequestMapping 64 RequestMapping注解的主要用途是将Web请求与请求处理类中的方法进行映射 Spring MVC和Spring WebFlux都通过RquestMap
  • Android系统学习(六)------裁剪Android系统

    你好 xff01 这里是风筝的博客 xff0c 欢迎和我一起交流 经过前面几篇博客的编译步骤 xff0c 成功的编出了Android系统 xff0c 但是发现编出来的system img有点大了 xff0c 有差不多1 7G xff0c 怎