Android内核开发:从源码树中删除出厂的app应用
来源:互联网 发布:全民夺宝助手软件 编辑:程序博客网 时间:2024/06/06 17:56
公开课1060:组策略(下)
12345678910
本文是《Android内核开发》系列的第十一篇文章,本文重点介绍如何从Android源码中删除出厂的app应用。
上一篇文章中提到过,系统出厂的app应用,其实就是被安装到/system分区的app,这些app在Android源码树中被编译后打包到了system.img镜像中,系统启动时,以只读的方式挂载/system目录,因此,非root手机用户是无法删除这些app的。
如果我们已经成功获取了手机的root权限,就可以通过下面的方法直接删除掉系统出厂的app应用,假设某app的安装文件叫做**x.apk,那么删除它的命令如下所示:
$ adb shell rm /system/app/**x.apk
同样,我们也可以将自己的app安装到系统的/system目录中去:
$ adb push **x.apk /system/app/
上面的方法只是介绍了通过命令行的方式手动添加/删除系统出厂的app,那么,如何从Android系统源码树中删除指定的出厂的app应用呢?
首先,推荐大家阅读一下这篇文章:《理解 Android Build 系统》,大致了解一下整个Android源码的编译系统架构,本文在这篇文章的基础上,重点关注如何删减系统出厂的app。
Android源码中,在 build/target/product 目录下预先定义了很多app列表的组合,如下所示:
wKiom1WaaJDCsv9lAAJB6wc5abc587.jpg
在开发具体的Android产品时,可以通过“引用”这些系统预定义的mk文件,快速形成某类产品的app列表,比如包含了generic_no_telephony.mk的产品,就直接定义了时钟,邮件,日历,照相机的常用的app。
那么,上面这些系统预定义的mk文件,到底哪些被具体的Android产品“引用”了呢?
Android源码树中,真正定义产品配置的文件夹是:device//,以我手头的beagleboneblack源码为例,如下所示:
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所指向的**xx.mk文件即可,如本例中的beagleboneblack.mk。
具体决定是否编译某个app的宏是“PRODUCT_PACKAGES”,例如:
PRODUCT_PACKAGES := \
DeskClock \
Calculator \
Calendar \
Camera2 \
Email \
因此,如果希望删减掉某个app,直接从“PRODUCT_PACKAGES”列表删除掉就行了,例如,删除掉 Email,那么系统出厂的app里面就不会有“ Email”这个app了。(注意,具体的**x.mk文件通常还会引用其他的mk文件,比如:generic_no_telephony.mk,device.mk 等等,因此,在分析过程中,凡是被依赖的mk文件也需要深入分析和删减),例如:
//beagleboneblack.mk
$(call inherit-product, device/ti/beagleboneblack/device.mk)
关于如何从Android源码树中删除APP就介绍到这里了,有任何疑问或者建议欢迎留言或者来信lujun.hust@gmail.com交流,或者关注我的新浪微博 @卢_俊 获取最新的文章和资讯。
- Android内核开发:从源码树中删除出厂的app应用
- Android内核开发:从源码树中删除出厂的app应用
- Android内核开发:从源码树中删除出厂的app应用
- Android内核开发:在源码树中添加新的app应用
- Android内核开发:在源码树中添加新的app应用
- Android内核开发:在源码树中添加新的app应用
- 如何在Android 内核源码树中添加app应用?
- 如何在Android 内核源码树中添加app应用?
- Android源码中删除应用
- android开发笔记之mtk平台 手机恢复出厂设置数据不删除的方法
- 开发APP的那些组件---->>>>------Android中BroadcastReceiver的应用
- 恢复出厂设置不删除已安装的JAVA应用
- android app还原出厂设置
- 从TextView源码解析:“android开发中,文字的最难适配”
- Android APP应用开发中异常处理
- 源码树中添加app应用
- 从源码角度解析android APP启动过程中各类及其方法的调用
- android应用app开发
- git中删除已跟踪文件的跟踪
- 引爆物联网应用的WiFi室内定位技术及其演进
- mysql数据库去重
- 线程(一)--线程控制-join方法
- 在Mac环境下安装AndroidStudio
- Android内核开发:从源码树中删除出厂的app应用
- linux开发缩写
- Python:You must not use 8-bit bytestrings unless you use a text_factory that can interpret 8-bit byt
- PHP函数
- C# Report根据条件设置显示颜色
- python的【字典dict】:创建、访问、更新、删除;查看键、值、键值对;遍历;排序
- 设置横竖屏切换及全屏显示
- iOS金额输入小数点后两位限制
- proguard混淆常用保存笔记