Android底层摸索改BUG(二):Android系统移除预置APP

首先我先提供以下博主博文,对相关知识点可以提供理解、解决、思考的

  1. Android 系统如何预装第三方应用以及常见问题汇集
  2. android Android.mk属性说明及预置系统app操作说明系
  3. Android 中去除系统原生apk的方法

取消预置APK方法一:

其实就是上面的链接3,但是这个方法有局限性,比较适用于单个Android系统项目,直接对Android.mk中的相关APK代码进行删除,(下图来源链接3)

但是很多情况、很多公司在实际中,使用repo拉取代码上有许多项目,而且A、B、C、D、E项目中,可能对于A、C项目需要保留这个APK,而其余的需要不保留这个APK,需要参看公司的需求表。

取消预置APK方法二:

也是常用惯用方法,根据上面的特殊性说明来,我们需要宏控制,即:在Android.mk文件中添加条件判断,A、C项目包含了这个宏且为yes值,则保留这个APK(预置这个APK),而其余的BDE不设置这个宏或者设置为no值,则不会预置这个APK(宏在项目的var.mk进行编写)

理一下思路,进行编写:以下以Calendar.APK为例

1.如果不知道包名,可以先使用反编译工具进行查看包名

先要知道是否预置这个APK的包名,从而在后面更好的定位、判断是否成功,这里使用了jadx反编译工具,可以上网搜一下使用方法,在这大概讲一下。将jadx下载(解压)到任意路径,将目标apk文件拖动到jadx的bin目录下打开终端执行jadx -gui apk名

D:\jadx\bin>jadx -gui Calendar.apk

反编译出 在AndroidManifest.xml或其他可以查看到包名

2.在需要的项目下var.mk中添加宏,即A、C项目下

示例路径 device\xxx\xxxx\项目名\var.mk

宏的名称编写需要你查看公司的规范文档 例如 公司名_软件名...

宏示例:宏名称=yes

3.在Android.mk下添加判断 来判断是否执行语句(创建文件夹、拷贝apk等操作)

Android.mk无论什么项目都会执行它所以你是否执行apk操作需要你自己的宏是否有、值是否对应来决定

示例路径vendor/xxxx/packages/xxxx/Calendar/Android.mk

ifeq($(XXXXXXX),yes)$(warning mkdir -p $(PRODUCT_OUT)/system/preloadapp/$(LOCAL_MOULE)/)$(shell mkdir -p $(PRODUCT_OUT)/system/preloadapp/$(LOCAL_MOULE)/)$(warning Aron -------- cp $(LOCAL_PATH)/$(LOCAL_MOULE)/$(PRODUCT_OUT)/system/preloadapp/$(LOCAL_MOULE)/$(LOCAL_MOUDLE).apk)$(shell cp $(LOCAL_PATH)/$(LOCAL_MOULE).apk $(PRODUCT_OUT)/system/preloadapp/$(LOCAL_MOULE)/$(LOCAL_MOULE).apk)
endif

3.在需要预制的项目的main.mk下添加(一般可能有了,检查一下)APK

需要包含Calendar

PRODUCT_PACKAGES +=\

Calendar\

...

4.其他不需要预置的项目不添加宏(一般不进行修改,默认没有宏,不执行预置APK)

番外:

如果需要替换已经有的APK,例如日历我只需要一个,将例如谷歌的APK替换,则在Android.mk进行添加语句:

ifeq($(strip $(XXXXXX)),yes)
LOCAL_OVERRIDES_PACKAGES :=Calender 
else
LOCAL_OVERRIDES_PACKAGES :=CalendarGoogle 

5.验证是否预置APK

可以通过adb命令来查看手机的包名或者看out目录下是否有生成的APK

adb命令:手机链接电脑,使用adb devices检测到手机

再输入adb shell pm list packages   命令将显示设备上安装的所有应用的包名列表

查看列表中是否有APK包名

检查out目录(编译以后,Android源码中的out目录一开始是不存在的,是在我们执行编译操作之后才由系统自动生成)

路径为:out/target/product/项目名/app(或其他app文件夹)

以下四个路径存放APK(你可以选择,在Android.mk文件可以设置)

  • system/app/ :该目录下存放的是一些系统级的应用,该目录下的应用能获取到比较高的权限,应用不可卸载,如Phone、Contacts等
  • system/priv-app/ :该目录是从Android 4.4开始出现的目录,它存放的是一些系统核心应用,能获取到比system/app/下应用更高的权限,应用不可卸载,如:Setting、SystemUI等。
  • vendor/app/ :该目录存放制造商的一些应用,应用不可卸载。
  • data/app/ :该目录下存放的一些第三方应用,应用可卸载。

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

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

相关文章

03、SpringCloud -- 动态倒计时 及 当前用户的获取(用户未登录提示其登录)

目录 动态倒计时需求思路代码效果优化获取当前登录用户思路代码前端后端controllerservice接口impl实现效果问题修改动态倒计时 需求 根据不同时间展示不同状态,动态显示时间,如原型图: 思

Lua脚本语言

1. 概念 Lua(发音为"loo-ah",葡萄牙语中的"lua"意为月亮)是一种轻量级的、高效的、可嵌入的脚本编程语言。官网Lua最初由巴西计算机科学家Roberto Ierusalimschy、Waldemar Celes和Luiz Henrique de Figueiredo于1993年开…

【JVM】字节码文件的组成部分

🐌个人主页: 🐌 叶落闲庭 💨我的专栏:💨 c语言 数据结构 javaEE 操作系统 Redis 石可破也,而不可夺坚;丹可磨也,而不可夺赤。 JVM 一、字节码文件的组成部分1.1 iconst_0…

Linux命令(108)之dirname

linux命令之dirname 1.dirname介绍 linux命令dirname是用来获取文件的指定路径 2.dirname用法 dirname [参数] NAME dirname参数 参数说明-z使用NUL而不是换行符分隔输出--help查看帮助信息--version查看版本信息 3.实例 3.1.获取文件的指定路径 命令: dirn…

聊一下Word2vec-训练优化篇

Word2vec 涉及到两种优化方式,一种是负采样,一种是层序Softmax 先谈一下负采样,以跳字模型为例。中心词生成背景词可以由两个相互独立事件的联合组成来近似(引自李沐大神的讲解)。 第一个事件是,中心词和…

idea 提升效率的常用快捷键 汇总

点击File --> Settings --> keymap便可进入看到 IDEA 提供的快捷键。我们也可以搜索和自定义所有快捷键 下面13个事我常用的快捷键,后面还有全部,可以当做字典来查 1.当前文件下查找:CtrlF 当前文件下替换:CtrlR 2.当前…

前端的简单介绍

前端核心的分析 CSS语法不够强大,比如无法嵌套书写,倒是模块化开发中需要书写很多重复的选择器 没有变量和合理的样式复用机制,使逻辑上相关的属性值必须字面量的心事重复的输出,导致难以维护 CSS预处理器,减少代码的笨重&#…

前端 :用HTML和css制作一个小米官网的静态页面

1.HTML&#xff1a; <body><div id "content"><div id "box"><div id "top"><div id "top-left"><span id "logo">MI</span><span id "text-logo">小米账…

leetcode-二叉树

B树和B树的区别 B树&#xff0c;也即balance树&#xff0c;是一棵多路自平衡的搜索树。它类似普通的平衡二叉树&#xff0c;不同的一点是B树允许每个节点有更多的子节点。 B树内节点不存储数据&#xff0c;所有关键字都存储在叶子节点上。B树&#xff1a; B树&#xff1a; 二叉…

kafka丢数据的原因

目录 背景kafkaClient代码消息丢失的可能原因broker is downRD_KAFKA_MSG_SIZE_TOO_LARGE分区问题Kafka Broker的处理能力无法跟上&#xff0c;可能会出现以下情况 Some基础知识补充 背景 采用的client是librdkafka&#xff0c;在producerClient Send的数据时候发现会有数据丢…

Maven - 国内 Maven 镜像仓库(加速包,冲冲冲~)

<?xml version"1.0" encoding"UTF-8" ?><!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding…

onclick事件的用法

onclick 事件是一种在网页开发中用来处理用户点击操作的事件。它通常用于 HTML 元素&#xff08;如按钮、链接、图像等&#xff09;&#xff0c;以便在用户单击该元素时触发 JavaScript 函数或执行一些特定的操作。以下是 onclick 事件的用法&#xff1a; HTML 元素上的 onclic…

react关于类组件this指向

在 React 中&#xff0c;类组件中 this 的指向和普通的 JavaScript 类相同&#xff0c;指向当前实例对象。但是&#xff0c;在事件处理函数中&#xff0c;this 的指向会有所不同。 当我们使用类组件的时候&#xff0c;事件处理函数中的 this 默认指向 undefined。为了保证 thi…

一、灵动mm32单片机_开发环境的搭建(Keil)

1、安装Keil MDK。 略。 2、安装芯片对应的Pack包。 (1)这里以MM32F0130单片机为例。 (2)进入灵动微电子官网。上海灵动微电子股份有限公司 (3)点击“支持”→“KEILPacl”。 (3)点击下载Pack包。 (4)下载后&#xff0c;解压下载的压缩包&#xff0c;找到对应的Pack包&…

【ARMv8 SIMD和浮点指令编程】NEON 通用数据处理指令——复制、反转、提取、转置...

NEON 通用数据处理指令包括以下指令(不限于): • DUP 将标量复制到向量的所有向量线。 • EXT 提取。 • REV16、REV32、REV64 反转向量中的元素。 • TBL、TBX 向量表查找。 • TRN 向量转置。 • UZP、ZIP 向量交叉存取和反向交叉存取。 1 DUP (element) 将…

改进YOLOv3!IA-YOLO:恶劣天气下的目标检测

恶劣天气条件下从低质量图像中定位目标还是极具挑战性的任务。现有的方法要么难以平衡图像增强和目标检测任务&#xff0c;要么往往忽略有利于检测的潜在信息。本文提出了一种新的图像自适应YOLO (IA-YOLO)框架&#xff0c;可以对每张图像进行自适应增强&#xff0c;以提高检测…

3. t2t_vit inference

前言 对vit 进行fp16推理 参考链接&#xff1a; https://github.com/open-mmlab/mmpretrain/tree/master/configs/t2t_vit run code &#xff1a; https://mmclassification.readthedocs.io/en/latest/getting_started.html#inference-and-test-a-dataset https://mmclas…

PHP如何批量修改二维数组中值

每个name值加pex&#xff0c;age加5&#xff0c; 原数据&#xff1a; $data[["name">a,age>12],["name">b,age>22],["name">c,age>33],["name">d,age>44], ];实现效果 方案一、foreach引用方式 $data[["…

R语言生物群落(生态)数据统计分析与绘图实践技术应用

R 语言作的开源、自由、免费等特点使其广泛应用于生物群落数据统计分析。生物群落数据多样而复杂&#xff0c;涉及众多统计分析方法。以生物群落数据分析中的最常用的统计方法回归和混合效应模型、多元统计分析技术及结构方程等数量分析方法为主线&#xff0c;通过多个来自经典…

iis前端代理后台tomcat

1)tomcat服务器配置运行好&#xff0c;服务地址位于 localhost:8080/wechat 2)iis 绑定了域名 api.abc.com 希望访问 api.abc.com/wechat时&#xff0c;实际由tomcat的服务处理; 3)iis上需要添加组件 requestRouter_amd64.msi rewrite_amd64_zh-CN.msi 4)iis进行相关配置…