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

2023-10-29 02:28

本文主要是介绍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/ :该目录下存放的一些第三方应用,应用可卸载。

这篇关于Android底层摸索改BUG(二):Android系统移除预置APP的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/297638

相关文章

基于Python实现一个简单的题库与在线考试系统

《基于Python实现一个简单的题库与在线考试系统》在当今信息化教育时代,在线学习与考试系统已成为教育技术领域的重要组成部分,本文就来介绍一下如何使用Python和PyQt5框架开发一个名为白泽题库系... 目录概述功能特点界面展示系统架构设计类结构图Excel题库填写格式模板题库题目填写格式表核心数据结构

Linux系统中的firewall-offline-cmd详解(收藏版)

《Linux系统中的firewall-offline-cmd详解(收藏版)》firewall-offline-cmd是firewalld的一个命令行工具,专门设计用于在没有运行firewalld服务的... 目录主要用途基本语法选项1. 状态管理2. 区域管理3. 服务管理4. 端口管理5. ICMP 阻断

Nacos注册中心和配置中心的底层原理全面解读

《Nacos注册中心和配置中心的底层原理全面解读》:本文主要介绍Nacos注册中心和配置中心的底层原理的全面解读,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录临时实例和永久实例为什么 Nacos 要将服务实例分为临时实例和永久实例?1.x 版本和2.x版本的区别

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

Windows 系统下 Nginx 的配置步骤详解

《Windows系统下Nginx的配置步骤详解》Nginx是一款功能强大的软件,在互联网领域有广泛应用,简单来说,它就像一个聪明的交通指挥员,能让网站运行得更高效、更稳定,:本文主要介绍W... 目录一、为什么要用 Nginx二、Windows 系统下 Nginx 的配置步骤1. 下载 Nginx2. 解压

如何确定哪些软件是Mac系统自带的? Mac系统内置应用查看技巧

《如何确定哪些软件是Mac系统自带的?Mac系统内置应用查看技巧》如何确定哪些软件是Mac系统自带的?mac系统中有很多自带的应用,想要看看哪些是系统自带,该怎么查看呢?下面我们就来看看Mac系统内... 在MAC电脑上,可以使用以下方法来确定哪些软件是系统自带的:1.应用程序文件夹打开应用程序文件夹

windows系统上如何进行maven安装和配置方式

《windows系统上如何进行maven安装和配置方式》:本文主要介绍windows系统上如何进行maven安装和配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录1. Maven 简介2. maven的下载与安装2.1 下载 Maven2.2 Maven安装2.

使用Python实现Windows系统垃圾清理

《使用Python实现Windows系统垃圾清理》Windows自带的磁盘清理工具功能有限,无法深度清理各类垃圾文件,所以本文为大家介绍了如何使用Python+PyQt5开发一个Windows系统垃圾... 目录一、开发背景与工具概述1.1 为什么需要专业清理工具1.2 工具设计理念二、工具核心功能解析2.

Linux系统之stress-ng测压工具的使用

《Linux系统之stress-ng测压工具的使用》:本文主要介绍Linux系统之stress-ng测压工具的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、理论1.stress工具简介与安装2.语法及参数3.具体安装二、实验1.运行8 cpu, 4 fo

ubuntu20.0.4系统中安装Anaconda的超详细图文教程

《ubuntu20.0.4系统中安装Anaconda的超详细图文教程》:本文主要介绍了在Ubuntu系统中如何下载和安装Anaconda,提供了两种方法,详细内容请阅读本文,希望能对你有所帮助... 本文介绍了在Ubuntu系统中如何下载和安装Anaconda。提供了两种方法,包括通过网页手动下载和使用wg