博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android内核开发:从源码树中删除出厂的app应用
阅读量:6708 次
发布时间:2019-06-25

本文共 1941 字,大约阅读时间需要 6 分钟。

hot3.png

本文是系列的第十一篇文章,本文重点介绍如何从源码中删除出厂的app应用。

 

上一篇文章中提到过,系统出厂的app应用,其实就是被安装到/system分区的app,这些app在Android源码树中被编译后打包到了system.img镜像中,系统启动时,以只读的方式挂载/system目录,因此,非root手机用户是无法删除这些app的。

 

如果我们已经成功获取了手机的root权限,就可以通过下面的方法直接删除掉系统出厂的app应用,假设某app的安装文件叫做xxxx.apk,那么删除它的命令如下所示:

 

$ adb root

$ adb remount

$ adb shell rm /system/app/xxxx.apk

 

同样,我们也可以将自己的app安装到系统的/system目录中去:

 

$ adb root

$ adb remount

$ adb push xxxx.apk /system/app/

 

上面的方法只是介绍了通过命令行的方式手动添加/删除系统出厂的app,那么,如何从Android系统源码树中删除指定的出厂的app应用呢?

 

首先,推荐大家阅读一下这篇文章:,大致了解一下整个Android源码的编译系统,本文在这篇文章的基础上,重点关注如何删减系统出厂的app。

 

Android源码中,在 build/target/product 目录下预先定义了很多app列表的组合,如下所示:

 

 

在开发具体的Android产品时,可以通过“引用”这些系统预定义的mk文件,快速形成某类产品的app列表,比如包含了generic_no_telephony.mk的产品,就直接定义了时钟,邮件,日历,照相机的常用的app。

 

那么,上面这些系统预定义的mk文件,到底哪些被具体的Android产品“引用”了呢?

 

Android源码树中,真正定义产品配置的文件夹是:device/<company>/<product>,以我手头的beagleboneblack源码为例,如下所示:

 

$ cd beaglebone/device/ti/beagleboneblack

$ ls *.mk

 

Android.mk  

AndroidProducts.mk  

beagleboneblack.mk  

BoardConfig.mk  

CleanSpec.mk  

device.mk

 

以上就是beagleboneblack产品配置最核心的mk文件了,其中,AndroidProducts.mk和BoardConfig.mk两个文件是必须的,编译系统会首先搜索这两个文件。

 

AndroidProducts.mk文件一般会直接指向具体产品配置文件,如本例中指向了beagleboneblack.mk文件,在beagleboneblack.mk中,则会详细地定义产品的名称、厂商、出厂的APP、需要拷贝的文件等等; BoardConfig.mk则是用来配置设备的硬件信息,如CPU架构、内核相关信息、bootloader、WIFI模块相关配置等等。

 

由此可见,要删减系统出厂的app,我们只需要重点关注AndroidProducts.mk所指向的xxxxx.mk文件即可,如本例中的beagleboneblack.mk。

 

具体决定是否编译某个app的宏是“PRODUCT_PACKAGES”,例如:

 

PRODUCT_PACKAGES := \

    DeskClock \

    Calculator \

    Calendar \

    Camera2 \

    Email \

 

因此,如果希望删减掉某个app,直接从“PRODUCT_PACKAGES”列表删除掉就行了,例如,删除掉 Email,那么系统出厂的app里面就不会有“ Email”这个app了。(注意,具体的xxxx.mk文件通常还会引用其他的mk文件,比如:generic_no_telephony.mk,device.mk 等等,因此,在分析过程中,凡是被依赖的mk文件也需要深入分析和删减),例如:

 

 

//beagleboneblack.mk

 

$(call inherit-product, $(SRC_TARGET_DIR)/product/full_base.mk)

$(call inherit-product, device/ti/beagleboneblack/device.mk)

 

结束语

 

免费学习更多精品课程,登录乐搏学院官网

或关注我们的官方微博,还有更多惊喜哦~

 

本文出自 “” 博客,请务必保留此出

 

关于如何从Android源码树中删除APP就介绍到这里了

转载于:https://my.oschina.net/learnbo/blog/788959

你可能感兴趣的文章
JS---分解质因数
查看>>
递推DP UVA 590 Always on the run
查看>>
设备读写方式
查看>>
实验箱FPGA部分测试报告及A8与FPGA链接测试报告
查看>>
CC2640R2F&TI-RTOS 拿到 TI CC2640R2F 开发板 第一件事就是移植串口驱动,重定向 printf...
查看>>
使用docker 安装 GITLIB
查看>>
既完美又可爱的拖拽(原生js)
查看>>
linux mysql 找不到 <mysql/mysql.h>
查看>>
JS-过滤敏感词【RegExp】
查看>>
HTC G11短信为什么对单独一个人发不出去??!!!!跪求解啊!!!!
查看>>
ObservableCollection 与list
查看>>
在工作空间中构建和使用catkin包
查看>>
Oracle RAC 归档 与 非归档 切换
查看>>
UVA-1335(UVALive-3177) Beijing Guards 贪心 二分
查看>>
main函数的参数
查看>>
nginx启动时报错
查看>>
C++ AFX_MANAGE_STATE(AfxGetStaticModuleState())的作用
查看>>
mongodb sort
查看>>
crossplatform---Node.js Applications with VS Code
查看>>
winform线程间操作UI的五种方法
查看>>