Android 内置应用裁剪

news2024/9/19 17:23:55

文章目录

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2131860.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【YashanDB知识库】执行sql语句时报YAS-04401 data type - expected, but BLOB got异常

本文转载自YashanDB官方网站,具体链接为:执行sql语句时报YAS-04401 data type - expected, but BLOB got异常 问题现象 某客户的.net小程序在通过.net驱动执行业务时,报YAS-04401 data type - expected, but BLOB got异常: 问题…

2024/9/13 数学20题

根的个数问题: 数列:

OPENAIGC开发者大赛企业组银奖 | Gambit-AI智能合同审核助手

在第二届拯救者杯OPENAIGC开发者大赛中,涌现出一批技术突出、创意卓越的作品。为了让这些优秀项目被更多人看到,我们特意开设了优秀作品报道专栏,旨在展示其独特之处和开发者的精彩故事。 无论您是技术专家还是爱好者,希望能带给您…

SSO单点登录简易认证流程

流程说明 导入依赖 <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.16</version></dependency>模拟代码 客户端 import cn.hutool.core.codec.Base64; import cn.hutool.crypto…

已开源!无限场景生成和高效数据迁移:3D金字塔扩散模型斩获ECCV24 Oral

作者主页&#xff1a; https://yuheng.ink/ 论文标题&#xff1a; Pyramid Diffusion for Fine 3D Large Scene Generation 导读&#xff1a; 本文通过设计一种新颖的金字塔扩散模型&#xff0c;为三维室外场景生成提供了一种从粗到细的策略。本文对金字塔扩散模型进行了大量实…

云平台虚机卡顿问题分析

电信云中宿主机分配的虚机运行时出现卡顿问题,可能由多种因素导致。为了准确分析并定位原因,可以从以下几个方面进行排查: 1. 资源使用情况 检查CPU、内存和磁盘使用情况: 使用工具检查虚拟机的CPU、内存和磁盘使用情况,确认是否存在资源瓶颈。如果发现资源使用率较高,特…

4052A/4052B/4052C/4052D/4052E/4052F/4052G /4052H信号/频谱分析仪

4052A/4052B/4052C/4052D/4052E/4052F/4052G /4052H信号/频谱分析仪 苏州新利通 Ceyear 4052具备出色的测试动态范围、相位噪声、幅度精度和测试速度&#xff0c;具备频谱分析、I/Q分析、实时频谱分析、瞬态分析、矢量信号分析、脉冲分析、音频分析等丰富的测试功能。 Ceyear…

C++ | Leetcode C++题解之第400题第N位数字

题目&#xff1a; 题解&#xff1a; class Solution { public:int findNthDigit(int n) {int d 1, count 9;while (n > (long) d * count) {n - d * count;d;count * 10;}int index n - 1;int start (int) pow(10, d - 1);int num start index / d;int digitIndex i…

【Elasticsearch】-7.17.24版本接入

官网 https://www.elastic.co/cn/downloads/elasticsearch 本项目基于windows环境下&#xff0c;其他环境操作类似 1、初始化配置 打开config/elasticsearch.yaml 添加如下配置 cluster.name: dams_clusternetwork.host: 127.0.0.1 http.port: 9200# 不开启geo数据库 inge…

【软件设计师真题】下午题第五大题---面向对象程序设计

系列文章目录 1.【软考之软件设计师】PPT课件 2.【软考之软件设计师】学习笔记 3.【软考之软件设计师】上午题—信管网(每天更新) 4.【软考之软件设计师】上午题—希赛网(每天更新) 5.【软件设计师真题】下午题第一大题—数据流图设计 6.【软件设计师真题】下午题第二大题…

小众语言ruby在苹果中的初步应用

前言 感觉Ruby在苹果系统中充当一种脚本语言来使用。 1、直接输入ruby没有反应 2、可显示结果的命令 ruby -e "puts Goodbye, cruel world!" 效果如下图&#xff1a; 说明苹果系统中ruby已经安装完毕&#xff0c;或者就是自带的。 3、编辑运行第一个ruby程序 输入…

手把手教你用护核纪元地心护核者用服务器开服联机

1、购买后登录服务器面板&#xff08;百度莱卡云面板&#xff09; 登录面板的信息在绿色的登陆面板按键下方&#xff0c;不是你的莱卡云账号 进入控制面板后会出现正在安装的界面&#xff0c;安装大约3分钟&#xff08;如长时间处于安装中请联系我们的客服人员&#xff09; 2、…

代码随想录算法训练营第13天|二叉树基础知识、递归遍历、迭代遍历、层序遍历、116. 填充每个节点的下一个右侧节点指针

目录 二叉树基础深度和高度满二叉树和完全二叉树二叉搜索树和平衡二叉搜索树二叉树节点定义前中后序遍历 递归遍历前序递归遍历—144. 二叉树的前序遍历 迭代遍历层序遍历116. 填充每个节点的下一个右侧节点指针1、题目描述2、思路3、code 二叉树基础 深度和高度 满二叉树和完…

有JavaScript动态加载的内容如何抓取

引言 JavaScript动态加载的内容常见于现代Web应用中&#xff0c;用于增强用户体验和减少初始页面加载时间。然而&#xff0c;这些动态加载的内容对于传统的网页抓取工具来说往往是不可见的&#xff0c;因为它们不包含在初始的HTML响应中。为了抓取这些内容&#xff0c;我们需要…

Java项目: 基于SpringBoot+mybatis+maven星之语明星周边产品销售网站(含源码+数据库+毕业论文)

一、项目简介 本项目是一套基于SpringBootmybatismaven星之语明星周边产品销售网站 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、界面美…

计算机中的浮点数(二)

IEEE 754-2008 标准(二进制) 计算机中的浮点数(一)-CSDN博客文章浏览阅读188次&#xff0c;点赞12次&#xff0c;收藏12次。这篇文章介绍了计算机系统中浮点数的正式定义&#xff0c;关于浮点数的介绍总共分两篇文章&#xff0c;这是第一篇。https://blog.csdn.net/daduzimama/…

动手学深度学习(pytorch)学习记录30-含并行连接的网络(GoogLeNet)[学习记录]

目录 GoogLeNetInception块GoogLeNet模型训练模型 GoogLeNet GoogLeNet&#xff0c;也称为Inception v1&#xff0c;是由Google团队在2014年提出的深度学习模型&#xff0c;它在当年的ImageNet竞赛中取得了显著的成绩。GoogLeNet的设计引入了多个创新点&#xff0c;包括Incept…

Spring Boot实战-文章管理系统(1.用户相关接口)

一、用户相关接口 1.注解 RestController&#xff1a;是一个组合注解&#xff0c;它结合了 Controller 和 ResponseBody 注解的功能&#xff08;就相当于把两个注解组合在一起&#xff09;。 在使用 RestController 注解标记的类中&#xff0c;每个方法的返回值都会以 JSON 或…

【数据结构】带你初步了解排序算法

文章目录 1. 排序的概念及运用1.1 概念1.2 运用 2. 常见的排序算法2.1 插入排序2.1.1 直接插入排序&#xff08;简单插入排序&#xff09;2.1.2 希尔排序 2.2 选择排序2.2.1 直接选择排序&#xff08;简单选择排序&#xff09;2.2.2 堆排序 2.3 交换排序2.3.1 冒泡排序2.3.2 快…

python | 2行命令解决pip模块不存在问题

一、报错情况 有时&#xff0c;在执行 pip 更新命令后&#xff0c;会提示更新失败或错误警告。 报错提示如下&#xff1a; 然后&#xff0c;再次使用 pip 安装命令时&#xff0c;会提示 pip 模块找不到或不存在&#xff1a; ModuleNotFoundError: No module named pip 导致…