You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AOSP编译时如何查看PRODUCT_PACKAGES最终内容及移除冗余包

AOSP编译相关问题解答

一、查看PRODUCT_PACKAGES完整内容的方法

有三种实用方法可以获取最终生效的PRODUCT_PACKAGES完整列表:

  • 执行make dump-products命令,该命令会输出所有产品配置的详细信息,包括完整的PRODUCT_PACKAGES集合。如果需要精准过滤,可搭配管道命令:make dump-products | grep -A 20 "PRODUCT_PACKAGES"
  • 先完成编译环境初始化:. build/envsetup.sh,再选择目标设备:lunch <你的设备目标名>,之后将PRODUCT_PACKAGES输出到文件查看:echo $(PRODUCT_PACKAGES) > packages_list.txt(直接echo可能因内容过长显示不全)
  • 查看编译生成的中间文件:out/target/product/<你的设备>/obj/PACKAGING/product_intermediates/product_info.txt,该文件包含最终生效的产品配置,其中就有PRODUCT_PACKAGES的完整内容。

二、关于移除冗余包的问题

你当前使用的BUILD_PHONY_PACKAGE方式是AOSP官方推荐的无侵入式包覆盖方案,但如果部分包无法移除,可能是以下原因:

  1. 包存在依赖关系:如果目标包被系统服务、其他应用或框架模块硬依赖,AOSP编译系统会自动保留该包以避免编译失败。可通过make dependencies或make dump-products查看具体依赖链。
  2. 模块名错误:注意AOSP中需要指定的是模块名而非应用显示名称,部分厂商会自定义模块名(比如Dialer可能被命名为TeleService),需通过上述查看PRODUCT_PACKAGES的方法确认正确的模块名。
  3. 条件编译标签添加:部分包是通过PRODUCT_PACKAGES_DEBUG、PRODUCT_PACKAGES_RELEASE等条件标签添加的,这种情况下需要对应编译变体中配置覆盖规则,或检查条件编译逻辑。

另外,如果你能确保自己的配置文件在其他添加包的mk之后加载,也可以在自定义mk中直接过滤:

PRODUCT_PACKAGES := $(filter-out Dialer Calendar etc, $(PRODUCT_PACKAGES))

这种方式更直接,但同样要注意模块名和依赖问题。

内容的提问来源于stack exchange,提问作者himel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 13:32:14