Android 系统的裁剪

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

  • 19
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 17
    评论
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wang 恒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值