Android内核开发:从源码树中删除出厂的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 Build 系统》,大致了解一下整个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)
本文转自 Jhuster 51CTO博客,原文链接:http://blog.51cto.com/ticktick/1671438,如需转载请自行联系原作者

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
什么是REST?
REST 表象化状态转变(英文:Representational State Transfer,简称REST)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。 目前在三种主流的Web服务实现方案中,因为REST模式的Web服务与复杂的SOAP和XML-RPC对比来讲明显的更加简洁,越来越多的web服务开始采用REST风格设计和实现。例如,Amazon.com提供接近REST风格的Web服务进行图书查找;雅虎提供的Web服务也是REST风格的。 宗旨 REST 从资源的角度来观察整个网络,分布在各处的资源由URI确定,而客户端的应用通过URI来获取资源的表形。获得这些表形致使这些应用程序转变了其状态。随着不断获取资源的表形,客户端应用不断地在转变着其状态,所谓表形化的状态转变(Representational State Transfer)。 这一观点不是凭空臆造的,而是通过观察当前Web互联网的运作方式而抽象出来的。Roy Fielding 认为, “ 设计良好的网络应用表现为一系列的网页,这些网页可以看作的虚拟的状态机,用户选择这些链接导致下一网页传...
- 下一篇
Windows高级排错实战
一、序 为什么需要学习排错 诚然,App-V很可能是应用程序部署和使用的趋势,在某种程度上正帮助我们减少应用程序出错的机会,从而减少测试和排错的精力。然而,任何大小的变化都会多多少少地遭受反对和引起疑虑,App-V这些新事物的引入,带来着基础架构的新变化,并需要改变IT和用户部署使用应用程序的观念,这种建议的提出并执行有时不是一件简单的事情,尤其是比较大型的公司, 关于安全你要说服IT Security Team,关于基础架构改变你要和技术主管展示使用的好处,关于支持你要培训IT部门不然出了问题不能总靠你自己去support,关于用户你要改变用户使用观念,关于购买你要说服老板,关于……还有很多关于…… 对于应用程序的出错,我们有两个可以同时考虑的互不冲突的方向,一个方向是减少出错的机会,使用应用程序虚拟化例如App-V,一是提高出错时排错的能力。这篇文章介绍的是后者。 在目前的基础架构上,我们很多时候面对着蓝屏和传统应用程序报错带来的挑战。关于蓝屏分析,因为网络中的同类文章已经比较多了,这里不再赘述,但会在文章最后分享大拿Eric的精品文章链接给大家参考。这里我们说说应用程序报错的排错...
相关文章
文章评论
共有0条评论来说两句吧...