The Android Framework is not a specific component of the Android platform. It is a very broad naming of a specific layer in all the Android architecture. In the picture below (from Embedded Android), I like to place the Android Framework in the android.* rectangle. But other people also include System Services, Android Runtime and some native daemons. Binder and User Apps and Stock Android Apps. Sometimes even Dalvik and Zygote. Basically everything that you can find in the frameworks directory in the AOSP (plus something more :).
As you can see the Android Framework is what most people know as Android. It is where most developers base their applications on. The Android Platform includes also other frameworks to help and support developers, like Apache Harmony, but that is not part of the Android Framework. Those are externals.
Since Android Framework is just those Dev APIs, you can imagine that you can build AOSP without the framework. It might look weird but Android can be suitable for other kind of systems that is not running a hand-held with Apps. AOSP provides a specific configuration in the build system for this. To do this, just do the next
$ BUILD_TINY_ANDROID=true make -j16
This is what is called Tiny Android. It is specially useful if you are in an early stage of a porting process to a new platform. It will build Init, Bionic, Toll-box, adbd, logcat, and some other binaries and libraries.
So, as a resume, there is a bit of confusion out there on what really is the Android Framework. You can check the sources here and see it by yourself. As you see in the picture the frameworks rely on many services and key components, some of them we already discussed in previous posts like Service Manager, and others we did not discussed yet. But we will in later posts, like Zygote, Surfaceflinger, Android Runtime and Dalvik.