当前位置: 首页 > news >正文

Android 内置应用裁剪

文章目录

      • 查询目标 APK 的 Android.mk(或 Android.bp)文件
      • apk裁剪方式
          • 1.注释或删除.mk/.bp文件
          • 2.将 APK 名称加入“OVERRIDES”配置项中
          • 3.自定义“PRODUCT_PACKAGES_REMOVE”配置项

查询目标 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 都将被裁剪。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 基于python实现Modis数据的检索与下载
  • React第三章(tsx语法入门 )
  • 移远通信高端5G智能模组SG560D-NA率先通过PTCRB认证
  • 配置WSL(单纯记录
  • Hive任务优化参数整理
  • 【笔记】绪论 轨道交通材料及其加工工艺
  • Version ‘18.19.0‘ not found - try `nvm ls-remote` to browse available versions.
  • torch.stack()方法在数据集构造中的应用
  • 【Rust】008-常用集合
  • 【计算机网络】电路交换、报文交换和分组交换——三种交换方式性能分析以及计算机网络的分类
  • 一文读懂:如何将广告融入大型语言模型(LLM)输出
  • Android 车联网——CarProperty使用实例(二十三)
  • gRPC etcd 服务注册与发现、自定义负载均衡
  • C++学习,函数重载
  • GO学习笔记(4) strconv/time
  • @jsonView过滤属性
  • 【comparator, comparable】小总结
  • 【面试系列】之二:关于js原型
  • crontab执行失败的多种原因
  • JAVA_NIO系列——Channel和Buffer详解
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • Next.js之基础概念(二)
  • python大佬养成计划----difflib模块
  • SAP云平台里Global Account和Sub Account的关系
  • Webpack入门之遇到的那些坑,系列示例Demo
  • 分布式熔断降级平台aegis
  • 力扣(LeetCode)21
  • 面试遇到的一些题
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 一起参Ember.js讨论、问答社区。
  • 交换综合实验一
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • ​io --- 处理流的核心工具​
  • #Datawhale X 李宏毅苹果书 AI夏令营#3.13.2局部极小值与鞍点批量和动量
  • #if等命令的学习
  • (3)nginx 配置(nginx.conf)
  • (C语言)fread与fwrite详解
  • (done) 两个矩阵 “相似” 是什么意思?
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (python)数据结构---字典
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (二)换源+apt-get基础配置+搜狗拼音
  • (二刷)代码随想录第15天|层序遍历 226.翻转二叉树 101.对称二叉树2
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • (一)kafka实战——kafka源码编译启动
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • (杂交版)植物大战僵尸
  • (转)visual stdio 书签功能介绍
  • (转)用.Net的File控件上传文件的解决方案
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)