\subchapter{System Customization}{Learn how to build a customized Android}

After this lab, you will be able to:
\begin{itemize}
  \item Use the product configuration system
  \item Change the default wallpaper
  \item Add extra properties to the system
  \item Use the product overlays
\end{itemize}

\section{Setup a new product}

Revert the changes you made to the beagleboard product and define a new product
named \textit{training} instead. This product will have all the attributes of
the beagleboard product for now, plus the extra packages we will add along the
labs.

As we are still using the same platform, the product name returned by the
kernel doesn't change, even though we compiled a different product. Change
the name of the product that is used through the command line passed to the
kernel to match the name of your product. You can pass the product name through
the \code{android.hardwareboot} property.

Now, setup a custom init config file that will be used only by your product and
make it create the file \code{/data/hello_world}.

The system should compile and boot flawlessly on the DevKit8000, with all the
corrections we made earlier.

\section{Change the default wallpaper}

First, set up an empty overlay in your product directory.

The default wallpaper is located in \code{frameworks/base/core/res/res/drawable/}.
Use the overlay mechanism to replace the wallpaper by a custom one without
modifying the original source code.

\section{Add extra properties to the system}

As we have seen, properties are extensively used around the Android system.
Extend the \code{system.prop} file of the \textit{training} product by adding a
\code{foo.bar} property.

Boot the system and use \code{getprop} to check that the property has indeed been added.
