<>1.前言

大概几个月前,笔者收到一些信息,说道公司出去的Android工控系统冗余很多,希望做一些精简,但不管那时的笔者还是现在的笔者。都是一个大菜鸟啊,听到系统精简这个操作,瞬间懵逼了,第一次执行这种任务,表示鸭梨挺大~

<>2.正文

但工作在这,不得不做,经过一系列的百度,谷歌。emmm… ,有了一些头绪,总结了一下,大多是这样的精简方式。
可以跟着Android系统架构来进行一些动作。
1.驱动层的裁剪
2.Android native层服务的裁剪。
3.Android frameworks层服务的裁剪。
4.Android APP层的裁剪。

因为笔者这方面经验并不是很足,选择了最简单的一种–APP层的裁剪,先把多余的APP干掉,但这四个里面最简单的一个也是把我这个菜鸟搞得是头破血流啊,来说说这个艰难的路程。。。

首先,大家得知道Android APP 是否参与编译和一个编译变量有直接的关系。PRODUCT_PACKAGES
这个变量相比大家都见过,在Android源生的mk中,或者厂商定制的mk中都会有对这个变量的赋值。那给这个变量赋值的变量是什么呢?
我们先随便找个APP的mk看看。

这个是 系统应用Music的mk文件:packages/apps/Music/Android.mk
可以看到我标红的一个变量:LOCAL_PACKAGE_NAME 这个就是每个模块的模块名,对应APP也就是APP名
那么,看到这里,我萌生了几个想法可以进行“APP层的系统裁剪”
1.把这个赋值给这个LOCAL_PACKAGE_NAME 变量的名称改掉。
2.找到PRODUCT_PACKAGES 变量中LOCAL_PACKAGE_NAME对应的模块名进行删除。
3.暴力点,直接把这个APP的源码进行删除。
笔者对上面的想法一一验证,可以,效果很不错,都达到了我裁剪的目的,但冷静下来仔细想想,这样做真的合适吗?
这是一个APP的裁剪,那么十个,百个,N个呢?每个都这样操作,那是不是会累死?而且总体的管理是不是也极为不方便?

答案是的,这几种处理方法能够达到我们所想要的结果,但!!!对于源生的代码结构,管理,甚至人为的工作量是极其不友好的。
那么,还有其他什么办法吗?这里回过头来想,既然系统控制模块是否参与编译是根据PRODUCT_PACKAGES
这个变量来进行控制的,那我们倒不如去跟跟这个玩意到底做了些什么?
这里提供一个博文,写的不错:

看完后,是不是想去看看Android源码结构中关于build这块的代码。笔者也很想去看看,同时笔者已经这么做了,去看看build/core/main.mk这个主要的核心编译文件里对于PRODUCT_PACKAGES
这个是如何做的。

这里可以看到这个控制编译语句,如果是完整编译。会依次将PRODUCT_PACKAGES 里面的变量参与编译。
那么思路是不是就来了?我们可以参照这个变量的使用方式,自己弄一个删除APP的变量:PRODUCT_DEL_PACKAGES
哈哈,先试为快!
步骤1:
既然来了这里就先从这里开始:添加过滤APP参与编译操作

那么做到这里别忘了一件事,开头提过的PRODUCT_PACKAGES赋值给了另一个变量,那么我们也得在相应的地方进行添加。

做到这里,我们就可以愉快用这个PRODUCT_DEL_PACKAGES变量进行Android APP层的裁剪了。
既然是对产品定制了,我们就统一在device.mk中进行操作吧。
找到要删减的APP,这里对于怎么找到自己要删减哪些APP,APP在哪里,笔者就不详述了,偷偷送上笔者认为特别好用的一句搜寻命令:grep -rn
“xxx” . 这命令的意思是在当前目录下搜寻包含xxx的所有文件。
笔者最终做出的裁剪如下:
device/qcom/msm8953_64/msm8953_64.mk

这样之后,我们在make clean -> make
最后烧录镜像。观察,美滋滋啊!想要删除的APP全都没了。
好了,此篇完结。大家有更好的办法或者此博文有不足之处,请大家不吝赐教~

P.s.
后面笔者会经过不断的学习进行更深的系统精简,经过笔者验证后会继续与大家分享~上面还提到的其他裁剪都还没做过呢,惭愧。。。另外,系统裁剪需谨慎,有时候把一些重要的东西删了就很难受了,笔者可是吃了很大的亏,说起来都是泪啊

技术
©2019-2020 Toolsou All rights reserved,
一个名叫“讨火车”的小村子 终于把火车讨来了运营商 网站访客手机号码抓取hive压缩&&hdfs合并小文件精准手机号抓取,运营商大数据函数基本定义和使用‘未完待续Spring Boot教程十六:SpringBoot注入类实现多线程基于神经网络的车辆牌照字符识别技术MyBatis 新增数据 成功 返回 自增主键ID值json反斜杠问题接错水管喝了三年软水?软水和软水机究竟有何用