Appendix C. Customizing the Default Lists of Packages

As we saw in Chapter 4, the build system can be modified to add new packages to those it builds by default. What we didn’t cover in that chapter is how the build system creates the default list of packages that it uses when creating images or how we can customize it. Obviously, playing around with something as fundamental as the default set of packages required to get a functional AOSP has its risks, as you may end up generating stale images. Still, it’s worth taking a look at how this works and what’s in there. If nothing else, you’ll get a better idea of where to look in case you have to get your hands in there.

Overall Dependencies

In 2.3/Gingerbread, there are two main variables that dictate what gets included in the AOSP: GRANDFATHERED_USER_MODULES and PRODUCT_PACKAGES. The first is generated from a static list found in build/core/user_tags.mk and contains the bulk of the “core” packages required for the AOSP, with such things as adbd, the system services, and Bionic. This file isn’t meant to be edited and starts with a warning to that effect:

# This is the list of modules grandfathered to use a user tag

# DO NOT ADD ANY NEW MODULE TO THIS FILE
#
# user modules are hard to control and audit and we don't want
# to add any new such module in the system

In effect, the list of packages in GRANDFATHERED_USER_MODULES is more or less fixed in stone—what we want to focus our attention on is the packages added to PRODUCT_PACKAGES. There’s ...

Get Embedded Android now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.