Linux kernel provides an abstraction hardware layer for an Android. This allows an Android to be ported into variety of different devices. Furthermore the linux kernel is used for android's memory management, process management, netwoking and other underlined operating systems services.
These shared libraries are pre-installed on a android device by each vendor. They are written in C/C++ language and allow 3D and 2D graphics, window manager, all sorts audio video formats, Sqllite database and etc.
This layer includes Dalvik Virtual machine code and core Java Libraries.
Android Application framework is a high-level layer to provide a developer with a space for a new Android applications development.
This is the highest level of the Android system architecture. End user android applications and widgets layer.

Figure 1.1 - Android system architecture