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

b5c6e30760810067aca120834044fb96.png

你的赞赏是我坚持原创的动力

赞赏

共 0 人赞赏

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐