The Android operating system is mostly open source. Although some components are closed source, many parts of the system are either released open source under a permissive license (BSD or Apache) or under a license that requires that modifications be released open source (GNU Public License [GPL]). Because of the GPL, many vendors in the ecosystem make source code modifications available to the general public. This appendix documents the publicly accessible resources that distribute the source code used to build various Android devices.
As mentioned in Chapter 1 of this book, Google is the originator of the Android operating system. Google develops new versions in secret and then contributes the code to the Android Open Source Project (AOSP) upon release. Several of the facilities Google provides for accessing source code are documented elsewhere in this text, but for your convenience, we have repeated them here.
The AOSP is a collection of Git repositories that contain the open source parts of the Android operating system. It is the primary outlet for all things Android. It even serves as the upstream starting point for original equipment manufacturers (OEMs) to build firmware images. In addition to the source code for the different runtime components, AOSP includes a full build environment, source for the Native Development Kit (NDK) and Software Development Kit (SDK), and more. It supports building full device images for Nexus ...