android系统裁剪优化一直是各个厂商定制产品的关键步骤,包括浅层次的去除不必要的apk(android apk裁剪定制 )和深层次的裁剪整个编译系统和框架层. android作为开源系统,各个产品同质化严重,只有深层次的裁剪定制自己的系统,才能充分体现各自产品的特性,也是优化各自产品的关键步骤,此篇文章主要关注编译系统和框架层的裁剪,抛砖引玉, 还有很多地方可以改进的地方,基于工作中时间限制,没有彻彻底底的进行,此处只是工作的实战篇,请拍砖引论,apk裁剪请看之前的单独文章(android apk裁剪定制
).
思路:
android系统大而繁杂,对于不太熟悉android真个框架的朋友可以从真个思路入手:
1: 给予原生的代码镜像,adb shell进入单板, 主要是查看/system文件夹的内容,从这个文件夹入手,裁剪不必要的服务,库文件,apk,等等.
2: 了解真个编译系统,从编译过程入手,看隐含的可裁剪项,过程和思路很重要
具体裁剪内容:
1: build/target/product是编译产品关键的mk文件存放处,此处可以更加各个mk文件编译内容进行裁剪
base.mk文件:去除不必要的lib库文件和bin文件
core_minimal.mk: dmtracedump, Shell, HTMLViewer, screencap等工具和apk等
core.mk: libnfc_ndef, mms-common nfc功能库文件和mms短信功能等
embedded.mk: dumpstate, dumpsys
emulator.mk: camera.goldfish , camera.goldfish.jpeg , lights.goldfish , gps.goldfish等
full_base.mk: 去除不需要的库和apk
full_base_telephony.mk: 去除apk和电话功能
generic_no_telephony.mk:去除apk和不必要的库
languages_full.mk,locales_full.mk: 去除不需要的语言设置(可以去除res包的大小)
2:
external/icu4c/stubdata/icu-data-default.txt: 修改此文件,去除编译出的icu.dat文件大小,去除不需要的语言,重新用脚本生成想要的dat文件即可
external/skia/Android.mk: 去除其中test的编译
3:
frameworks/base/data/etc/platform.xml: 去除不需要的属性
frameworks/base/data/fonts/Android.mk: 去除不需要的字体
frameworks/base/data/fonts/fallback_fonts.xml: 去除不需要的字体
frameworks/base/data/fonts/fonts.mk: 去除不需要的字体
4:
frameworks/base/data/sounds/AllAudio.mk: 去除不需要的声音文件(除了ui的保留,其他都可以去除)
frameworks/base/data/videos/VideoPackage1.mk: 去除不需要的视频文件
frameworks/native/data/etc/handheld_core_hardware.xml: 去除不需要的属性
frameworks/native/data/etc/tablet_core_hardware.xml: 去除不需要的属性
frameworks/base/preloaded-classes: 裁剪不必要的资源加载
5:
init.rc: 裁剪不需要的本地服务
system.prop: 裁剪不必要的属性内容
以上这些内容可以使得镜像大大的减少,包括参加apk内容,根据实践,镜像减少100M,当然还有可以裁剪的地方,请广大同胞搞点玉出来,我也好学习学习
---------------------
本文来自 yanxiangyfg 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/yanxiangyfg/article/details/38760309?utm_source=copy