谷歌源码中,增加删除应用机制
来源:互联网 发布:mac 安装的程序在哪里 编辑:程序博客网 时间:2024/05/16 10:25
最近的项目中,预计一下需求,客户要求在某些版本中,删除所有不需要的应用,只留下设置和相机应用,其他都需要删除。
但是因为同一条代码线上面,还有其他的项目,因此不能影响到其他的项目,问题有些棘手。
基于此问题,我们想到了两个解决方案。
1: 通过mk文件中的LOCAL_OVERRIDES_PACKAGES 属性来覆盖其他应用。
这种修改方法固然可行,但是因为这个LOCAL_OVERRIDES_PACKAGES是在应用的mk中写的,如果一次性删除大量的应用。这个应用的mk文件就会添加很多,容易出错。因此这种方案只适合覆盖很少的几个应用,不使用大面积的覆盖应用。
2:参考系统原有的PRODUCT_PACKAGES 属性写一个属于自己的PRODUCT_DEL_PACKAGES 属性来进行特定应用的删除,
这样做只需要在相应项目的mk文件中添加 PRODUCT_DEL_PACKAGES 然后按照 PRODUCT_PACKAGES 添加应用的方法,将需要删除的应用直接添加到 PRODUCT_DEL_PACKAGES 后面即可实现删除应用的操作。这种做法使用于大面积删除应用的情况。
下面是方案2的修改方法:总共两个步骤
1:修改/build/core/product.mk ,在其中定义 PRODUCT_DEL_PACKAGES。如下面标红色的部分。
PRODUCT_SHIPPING_API_LEVEL \
PRODUCT_DEL_PACKAGES \
define dump-product
$(info ==== $(1) ====)\
2:修改/build/core/main.mk ,添加具体功能实现方案。如下面标红色部分。
# by product_config.mk.
product_MODULES := $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PACKAGES)
# Filter out the overridden packages before doing expansion
product_MODULES := $(filter-out $(foreach p, $(product_MODULES), \
$(PACKAGES.$(p).OVERRIDES)), $(product_MODULES))
$(info *********************************************************** )
$(info Del apk)
$(info $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_DEL_PACKAGES))
$(info $(space))
$(info before compile)
$(info $(product_MODULES))
$(info $(space)$(space))
$(info ************************************************************* )
product_MODULES := $(filter-out $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_DEL_PACKAGES), $(product_MODULES))
$(info ************************************************************ )
$(info Del apk)
$(info $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_DEL_PACKAGES))
$(info $(space))
$(info after compile)
$(info $(product_MODULES))
$(info $(space))
$(info ************************************************************)
# Resolve the :32 :64 module name
modules_32 := $(patsubst %:32,%,$(filter %:32, $(product_MODULES)))
modules_64 := $(patsubst %:64,%,$(filter %:64, $(product_MODULES)))
modules_rest := $(filter-out %:32 %:64,$(product_MODULES))
# Note for 32-bit product, $(modules_32) and $(modules_64) will be
# added as their original module names.
使用方式:
上面的修改使用方法与PRODUCT_PACKAGES的使用方法一致,请看下面例子:
直接在项目mk文件中的修改如下:
PRODUCT_DEL_PACKAGES := \
Browser \
Calendar \
Email \
Mms \
Music
问题排查方法:
通过上面的修改,如果发现存在问题,请直接在编译的log中搜索before compile和after compile,然后对比这两个打印前后的信息,看下删除功能是否OK
阅读全文
0 0
- 谷歌源码中,增加删除应用机制
- Android源码中删除应用
- Android源码中增加模块
- Android源码中增加模块
- SQL SERVER中增加删除约束
- DataGrid中数据的增加/删除/获取
- html表格中自动增加删除
- Android中增加和删除Browser书签
- html中js增加删除行
- SQL SERVER中增加删除约束
- 在SESSION中增加和删除
- SQL SERVER中增加删除约束
- MySQL中的表中增加删除字段
- SQL SERVER中增加删除约束
- MySQL中的表中增加删除字段
- MySQL中的表中增加删除字段
- Android中获取,增加,删除Browser书签 .
- IE中增加直线和删除直线
- Session
- tf.estimator Quickstart解读
- tdy
- java连接数据库出现的Access denied for user 'é??'@'localhost' (using password: YES)问题:
- MyBatis-Spring-TransactionManager
- 谷歌源码中,增加删除应用机制
- iOS 关于接入海康视频SDK的步骤
- HTTPS和HTTP的区别
- 数据结构实验之链表九:双向链表
- iOS MVVM+RAC 从框架到实战
- Maven+Spring+Mybatis+SpringMvc所需要导入的jar包坐标
- tensorflow实现简单的矩阵相乘
- 嵌入式系统开发之驱动篇001——LED驱动
- Linux之多线程及互斥锁pthread_mutex_t的学习