系统裁剪一般都是按照Android系统架构的一下几个部分精简:
1.驱动层的裁剪
2.Android Native层服务的裁剪
3.Android Frameworks层服务的裁剪
4.Android APP层的裁剪

应用程序的裁剪

主要文件:

device/qcom/common/base.mk

device/qcom/common/common.mk

device/qcom/msm8953_64/msm8953_64.mk

产品关键的mk:

build/target/product/base.mk

build/target/product/core.mk

build/target/product/full_base.mk

build/target/product/sdk_base.mk

build/target/product/generic_no_telephony.mk

build/target/product/telephony.mk

高通裁剪:

vendor/qcom/proprietary/common/config/device-vendor.mk

vendor/qcom/proprietary/prebuilt_HY11/target/product/msm8937_64/Android.mk

vendor/qcom/proprietary/qrdplus/Extension/products.mk

裁剪方式:

找到对应APK的LOCAL_MODULE,然后在*.mk文件中全局搜索LOCAL_MODULE,在含有的PRODUCT_PACKAGES 中移除即可。记得要删除out/目录后全编,否则打包image时会将之前编译的Package包含进去。

系统服务裁剪

frameworks/base/services/java/com/android/server/SystemServer.java

关键方法:startOtherServices、startCoreServices 、 startBootstrapServices

关键字:startService

裁剪示例:

Slog.i(TAG, "Camera Service");
//mSystemServiceManager.startService(CameraService.class);//add here// The AccountManager must come before the ContentService
traceBeginAndSlog("StartAccountManagerService");
//mSystemServiceManager.startService(ACCOUNT_SERVICE_CLASS);//add here
Trace.traceEnd(Trace.TRACE_TAG_SYSTEM_SERVER);

有些系统服务可以按照上述应用程序裁剪方式

裁剪不需要的本地服务:device/qcom/msm8953_64/init.target.rc

裁剪不必要的属性内容:system.prop

裁剪一些资源

字体:frameworks/base/data/fonts/fonts.mk:

铃声: frameworks/base/data/sounds/AllAudio.mk

属性:frameworks/base/data/etc/platform.xml

按键:frameworks/base/data/keyboards/keyboards.mk

# 列出所有安装的应用程序adb shell pm list packages# 列出当前内存的使用情况adb shell dumpsys meminfo# 列出当前正在运行的进程adb shell ps

添加宏控移除APK

diff --git a/build/core/main.mk b/build/core/main.mk
index 9135d72..46e6fae 100755
--- a/build/core/main.mk
+++ b/build/core/main.mk
@@ -746,6 +746,12 @@ ifdef FULL_BUILDproduct_MODULES := $(filter-out $(foreach p, $(product_MODULES), \$(PACKAGES.$(p).OVERRIDES)), $(product_MODULES))+  #add for PRODUCT_DEL_PACKAGES to cut app
+  product_sub_MODULES := $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_DEL_PACKAGES)
+  product_MODULES := $(filter-out $(foreach p, $(product_sub_MODULES), \
+      $(p)), $(product_MODULES))
+  #add for PRODUCT_DEL_PACKAGES to cut app
+# Resolve the :32 :64 module namemodules_32 := $(patsubst %:32,%,$(filter %:32, $(product_MODULES)))modules_64 := $(patsubst %:64,%,$(filter %:64, $(product_MODULES)))
diff --git a/build/core/product.mk b/build/core/product.mk
old mode 100644
new mode 100755
index 332b015..b4d0f0d
--- a/build/core/product.mk
+++ b/build/core/product.mk
@@ -83,6 +83,7 @@ _product_var_list := \PRODUCT_PACKAGES_DEBUG \PRODUCT_PACKAGES_ENG \PRODUCT_PACKAGES_TESTS \
+    PRODUCT_DEL_PACKAGES \PRODUCT_DEVICE \PRODUCT_MANUFACTURER \PRODUCT_BRAND \
diff --git a/device/qcom/msm8953_64/msm8953_64.mk b/device/qcom/msm8953_64/msm8953_64.mk
index f5cf879..f5b67eb 100755
--- a/device/qcom/msm8953_64/msm8953_64.mk
+++ b/device/qcom/msm8953_64/msm8953_64.mk
@@ -183,3 +183,48 @@ PRODUCT_PACKAGES += cpu_full#bug6764 add by gaoyunlai @20161129 for support update the mbnPRODUCT_PROPERTY_OVERRIDES += persist.radio.start_ota_daemon=1+#add for cut app
+PRODUCT_DEL_PACKAGES += \
+    SnapdragonCamera \
+    Music

相关参考

https://blog.csdn.net/qq_23327993/article/details/90768627
https://blog.csdn.net/wzl_show/article/details/111991846 (定义宏控移除PRODUCT_PACKAGES )
https://blog.csdn.net/kanyueliang410/article/details/78962288

Android系统ROM+RAM基础裁剪相关推荐

  1. Android 系统自带图片裁剪功能(适配7.0、8.0、对了还有小米手机)

    前段时间写了如何获取相册和拍照之后的照片并且进行显示和上传,这一次是如何进行圆形图像制作,经常看我写的笔记的人会知道,我很懒.那么我就懒的自定义了,目前需求就用原生的就好了,大神的轮子,我会在后面进行 ...

  2. 卸载安卓并安装linux,删除Android系统Rom自带的软件方法

    Android系统没有卸载Rom自带软件的功能.可能有些同学很想删除废了武功的Youtube,想删除墙那边的Twitter,加上Android的快捷方式没法修改没法自己排序没法分页,安装的程序太多就会 ...

  3. 【移动App自动化测试4】---1基于Android系统的自动化基础

    1.Android系统发展历程介绍 Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导(2007年11月,G ...

  4. android 模拟器 ROM RAM 空间设置

     指定ROM.RAM大小 示例:            emulator -memory 512 -partition-size 512 -avd handroid2.3 注释:1:-memroy 5 ...

  5. android 系统/本地日志打印

    android 本地日志打印 提示 博主:章飞_906285288 博客地址:http://blog.csdn.net/qq_29924041 转载请注明出处 前言   离上一篇博客大概有快四个月没有 ...

  6. Android 系统源码代码情景分析

    一.本书简介 <Android系统源代码情景分析>是2012年10月出版的图书,作者是罗升阳. 在内容上,本书结合使用情景,全面.深入.细致地分析了Android系统的源代码,涉及到Lin ...

  7. Android系统基础架构

    一.体系架构 虽然Android系统非常庞大且错综复杂,需要具备全面的技术栈,但整体架构设计清晰.Android底层内核空间以Linux Kernel作为基石,上层用户空间由Native系统库.虚拟机 ...

  8. Android系统基础介绍

    Android系统基础介绍 Android系统发展史 Android系统从1.5版本迭代到现在10.0 需要注意的几个版本: 5.0 界面设计技术发生变革,采用全新的MaterialDesign界面, ...

  9. Unity获取Android手机的RAM和剩余RAM和ROM

    Unity获取Android手机的RAM和剩余RAM和ROM 前言 一.Android工程方法的实现 二.生成aar 三.Untiy中的调用 前言 项目工作需要,在游戏APP运行时,获取当前手机的剩余 ...

最新文章

  1. 哔哩哔哩小甲鱼 汇编语言 记录一下 寄存器(内存访问)两个小实验
  2. C# + ArcEngine 常用方法(不定时更新)
  3. php-cgi导致的502 Bad Gateway错误
  4. 解决跨域常见方案(is therefore not allowed access)
  5. Step by Step 使用AET 创建Product extension fields
  6. P3545HUR-Warehouse StoreP4053建筑抢修(反悔贪心、堆)
  7. junit junit_JSON的JUnit Hamcrest Matcher
  8. mybatis-plus对datetime返回去掉.0_0欧姆电阻只能当导线用?12种用法来学习下
  9. 每日一道python的leetcode:冒泡排序
  10. rgba转16进制颜色
  11. 赶紧收藏!不可多得的Instagram运营技巧
  12. node.js安装和vue全局安装教程
  13. C++ 相关职位的要求
  14. 电脑账户服务器未能登录拒绝访问,win7系统开机提示服务未能登入拒绝访问的解决方法...
  15. 不可不看:管理定理一网打尽
  16. QT入门学习之软件程序开发初体验
  17. H5实现扫一扫(二)
  18. apache的url重写
  19. dubbo 服务调用源码分析
  20. 学界 | 离开实验室的材料科学:AI正将新材料的发现过程提速200倍

热门文章

  1. java韩顺平学习笔记
  2. 多粒度和多尺度的区别
  3. Android 自定义TabLayout
  4. 那些有趣又实用的开源人工智能项目 Top 10
  5. 教程 | 如何使用地图可视化疫情情况
  6. NodeMCU连接SD读卡器
  7. Wepy 引入 WeUI
  8. 5G有源、无源室分对比
  9. Clarify concepts: WANET, MANET, WMN, WSN, DTN
  10. 水瓶的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告