android 系统 裁剪APK和SO库

本文介绍了Android系统裁剪中的APK和SO库的裁剪方法。通过注释掉.mk文件中不必要的APK添加行,并创建新的.mk文件来统一管理裁剪操作。对于SO库的裁剪,同样遵循类似逻辑,注意在Makefile中处理lib和lib64目录下的库。这些步骤有助于系统瘦身,提高效率。
摘要由CSDN通过智能技术生成

android 系统 裁剪APK和SO库

Android 系统的裁剪

接触android Framework 层开发没多久,最近学习了一下系统的裁剪的工作,一般系统裁剪分为 APK、so、jar 库和服务的裁剪,目前只学习了APK和so库的裁剪,这里做一下学习记录

APK裁剪

因为安卓系统里内置了很多的APK,包括一些平台也会内置一些APK在系统里面,有些不需要的我们就可以把它不编译到系统里来,至于那些APK可以不用,这个可以根据自己项目的需求来,刚开始学的可以用adb 在system/app 或者 system/priv-app 目录下找

  1. 想要把app编译到系统,都需要在.mk文件中添加,而PRODUCT_PACKAGES 就是添加APK的变量,我用RK自己的一个APP(RKUpdateService)做为例子,先找到APK在哪里添加的,因为RK的应用都在vendor/rockchip/common/apps/目录下,可以使用grep -nr “RKUpdateService” vendor/rockchip/common/apps/ 搜索:
    搜索结果
    在app.mk就可以看到添加APK的代码
    在这里插入图片描述
    正常来说把RKUpdateService 这行注释掉就可以完成裁剪的操作,但是不好统一管理,如果删除了多个需要恢复的时候又得一个一个去找很不方便,在网上参考了这篇文章,把APK进行了统一的管理

  2. 首先先找到系统在哪里添加所有的APK,使用grep 搜索 PRODUCT_PACKAGES 在build/core/main.mk文件中

ifdef FULL_BUILD
# The base list of modules to build for this product is specified
# by the appropriate product definition file, which was included
# by product_config.mk.
product_MODULES := $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PACKAGES)
# Filter out the overridden packages before doing expansion
product_MODULES := $(filter-out $(foreach p, $(product_MODULES), \
    $(PACKAGES.$(p).OVERRIDES)), $(product_MODULES))
# Filter out executables as well
product_MODULES := $(filter-out $(foreach m, $(product_MODULES), \
    $(EXECUTABLES.$(m).OVERRIDES)), $(product_MODULES))

在这里把所有的使用PRODUCT_PACKAGES 添加的APK 都找统一找出来,可以根据这个添加一个宏,把要删除的APK统一起来

  1. 新建一个.mk文件,在项目目录下新建了一个evb_del.mk文件
    在这里插入图片描述
    如果是新建的需要添加到编译文件中,不然不会编译,可以随便找一个能编译的.mk文件,我在项目目录下的.mk文件中添加:

在这里插入图片描述

然后在build/core/product.mk文件中添加PRODUCT_DEL_PACKAGES宏
在这里插入图片描述
在新建的evb_del.mk文件中把要删除的APK添加进来
在这里插入图片描述
最后需要在main.mk把PRODUCT_DEL_PACKAGES的APK移除出去

ifdef FULL_BUILD
  # The base list of modules to build for this product is specified
  # by the appropriate product definition file, which was included
  # by product_config.mk.
  product_MODULES := $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PACKAGES)
  # Filter out the overridden packages before doing expansion
  product_MODULES := $(filter-out $(foreach p, $(product_MODULES), \
      $(PACKAGES
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值