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.
In 2.3/Gingerbread, there are two main variables that dictate what
gets included in the AOSP:
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 ...