Android 内置应用裁剪

查询目标 APK 的 Android.mk(或 Android.bp)文件

  • 命令

find ./[dir] -type f -name *.mk | xargs grep APKname -in -w
or
find ./[dir] -type f -name *.bp | xargs grep APKname -in -w

  • 功能
    若用户已知目标 APK 名称,且目标 APK 是以.apk 文件的形式存在于源码中,用户可执行此命令
    查询目标 APK 的 Android.mk(或 Android.bp)文件。用户可在返回的 Android.mk(或 Android.bp)
    文件内完成对目标 APK 的裁剪工作。

  • 参数
    dir:文件所在目录,可仅为父目录,也可为父目录及其子目录。若省略此参数,则表示当前目录
    及其子目录
    APKname:APK 名称

  • 示例

/system_mssi_u0$ find ./packages/apps/ -type f -name *.bp | xargs grep CertInstaller -in -w
./packages/apps/CertInstaller/robotests/Android.bp:2:// CertInstaller Robolectric test target. #
./packages/apps/CertInstaller/robotests/Android.bp:17: instrumentation_for: “CertInstaller”,
./packages/apps/CertInstaller/Android.bp:7: name: “CertInstaller”,
/system_mssi_u0$

apk裁剪方式

1.注释或删除.mk/.bp文件

以裁剪MtkContacts为例

  1. 直接删除.mk/.bp文件
    将对应的.mk/.bp文件改名为Android.bp_disable
  2. 使用grep -rn “MtkContacts” device/ 命令搜索,将MtkContacts注释
    在这里插入图片描述
2.将 APK 名称加入“OVERRIDES”配置项中

示例 1:基于 Android.mk 文件,裁剪 Email.apk、Gmail2.apk、Email2.apk 和 Exchange2.apk

  1. 找到一个一定会参与编译的 APK 的 Android.mk 文件;假设,GMailGo.apk 一定会参与编译;
  2. 将待裁剪的具体APK名称(Email 、Gmail2 、Email2 和Exchange2) 添加在 “LOCAL_OVERRIDES_PACKAGES”配置选项中,多个 APK 以空格隔开,如下图:
    在这里插入图片描述
  3. 如 上 图 , Email 、 Gmail2 、 Email2 和 Exchange2 均 被 添 加 在 “LOCAL_OVERRIDES_PACKAGES”中,则编译 GMailGo.apk 时,系统会自动覆盖Email、Gmail2、Email2 和 Exchange2 这四个 APK,从而将这四个 APK 排除在编译选
    项外,达到裁剪的目的。

示例 2:基于 Android.bp 文件,裁剪 QtiCalendar.apk、AospCalendar.apk 和 OtherCalendar.apk

  1. 找到一个一定会参与编译的 APK 的 Android.bp 文件;假设,Calendar.apk 一定会参与编译;
  2. 将待裁剪的具体 APK 名称(QtiCalendar、AospCalendar 和 OtherCalendar)添加在“overrides”配置选项中,具体 APK 名称需要用双引号标记,多个 APK 以逗号隔开,
    如下图:
    在这里插入图片描述
  3. 如上图,QtiCalendar、AospCalendar 和 OtherCalendar 均被添加在“overrides”中,则编译 Calendar.apk 时,系统会自动覆盖 QtiCalendar、AospCalendar 和 OtherCalendar这三个 APK,从而将这三个 APK 排除在编译选项外,达到裁剪的目的。
3.自定义“PRODUCT_PACKAGES_REMOVE”配置项

参考 AOSP 中 PRODUCT_PACKAGES 配置的方式,自定义一个“PRODUCT_PACKAGES_REMOVE”
配 置选项。用户可根据自身项目的需要,将需裁剪的 APK 名称(无需 .apk 后缀) 都添加到“PRODUCT_PACKAGES_REMOVE”项下,从而做到一次性全部裁剪。此方法省去了查找目标 APK 的编译.mk 文件的时间,提高了工作效率。

补丁如下:

在这里插入图片描述
从以上补丁可以发现,只要是添加在“PRODUCT_PACKAGES_REMOVE”配置项下的 APK 都将被裁剪。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值