posted based on udemy video -
Android OS Internals
π
Android Source Code Directory | Description |
---|---|
art | ART(Android Runtime) operating environment. All the ART-related modules can be found here including dex compilers, JVM, dalvik VM, etc. |
bionic | Android's custom C library. Bionic is Android's C library, math library, and dynamic linker. |
bootable | Boot-related code. Contains Bootloader, OTA, recovery mechanism. |
build | Build System. You can find envsetup.sh , common shell scripts and make, soong folders here. So these build systems are used to build the entrie AOSP Project. |
compatibility | CDD (Compatibility Definition Document) documentation |
cts | Android Compatibility Test Suite Standard. CTS tests ensure that you implementation is compatible with this latest AOSP build. |
dalvik | Dalvik Virtual Machine-related code. Even though ART was introduced, android still uses the dex code. In this folder, there are modules supporting dex code generator and Dalvik eXchange. |
developers | Developer Directory. Contains Demo and Sample Android Projects. |
development | Application development related. Here you can find the development IDE like clion, eclipse, IntellJ under the ide folder. Lots of Sample implementation under samples folder. And many other folder to support app development like Python, vndk, etc. |
device | Device-specific files and components. Here you can find the supporting configuration and driver files required for Development Boards like linaro hikey, ti, amlogic, etc. |
external | External Open Source projects imported into the AOSP. This folder contains a lot of dependent project used by AOSP like Dagger2, exoplayer, flatbuffers, icu, jackson, rust and many many more. There are around 347 dependent modules in it as in AOSP 12. |
dalbik | Dalbik Virtual Machine-related code. Even though ART was introduced, it still uses the dex code. In this folder, there are modules supporting dex code generator and Dalvik eXchange. |
frameworks | Application framework, the core part of the Android system, written in Java and C++. Here you can find all the system service and core implementations of Android. As such it's where most APIs are defined: frameworks/base/core/java/android/app/ frameworks/base/cord/java/android/content/ frameworks/base/services/core/java contains most system services, and these directories typically have more granularity than core/java/, since they can be refactored without top layer API changes. |
hardware | Mainly the code of the hardware abstraction layer and hardware support modules. Consists of the hal for audio, video, usb, tv, camera etc. |
kernal | Contains kernel configs, prebuilts. |
libcore | Consists of many core libraries related json, xmlparser, apache harmony etc. |
libnativehelper | Dynamic library, the basis of the JNI library. It consists of helper functions to use with JNI. |
ndk | NDK(Native Development Kit) related code to help developers embed C/C++ code in the application. |
out | After the Build is complete, the code output is in this directory. You can find the generated images for the build here. |
packages | Application package like Stock Android apps, providers, IMEs and many more. |
pdk | Platform Development Kit. PDK (Platform Development Kit) is a reduced set of Android release provided to chipset vendors and OEMs before a new android platform is released. The goal of the PDK release is to help chipset vendors and OEMs to migrate to a new release. PDK release includes only necessary components for developing android HAL (Hardware Abstraction Layer). Note that the full android release is a superset of PDK release, and there is no separate PDK release to public as the full paltform release includes everything in PDK. Place-holder for tools and test codes for PDK. -Build: It is a place-holder for PDK build related stuffs. -apps: test apps |
platform_testing | Platform test. Consists of platform test modules. https://source.android.com/compatibility/tests |
prebuits | Consists of Prebuilt binaries. Includes toolchains like asuite, android emulator, Bazel etc. |
sdk | Many SDK Tools sources can be found here. Instructions to build sdk for a specific build can be found here under docs. |
system | It contains Low-level file system libraries, applications, and components. This is the "Embedded Linux" folder. Here you can find folders for selinux, logging, libhidl and many low level configurations. |
test | Contains the test suites like csuite, catbox, vts(vendor test suite), mts(mainline test suite) etc. |
toolchain | Toolchain files related to benchmark and pgoprofiles. |
tools | Tool files like apksig, asuite, trade federation etc. |