title: Complete Android Operating System build for a specific hardware target
body: <p>I'm going to try to rephrase and genericize these two questions:</p>
  
  <p><a href="https://stackoverflow.com/questions/3716142/custom-android-os-build">Custom Android OS Build</a></p>
  
  <p><a href="https://stackoverflow.com/questions/2483631/custom-android-build-how-to">https://stackoverflow.com/questions/2483631/custom-android-build-how-to</a></p>
  
  <p>and add my own two cents.</p>
  
  <p>A number of us have a need to build Android -- the complete operating system/stack -- and run that build on real, commercial hardware. Clearly this is possible since the various handset vendors do it themselves.</p>
  
  <p>However, the instructions provided by Google ( <a href="http://source.android.com/source/initializing.html" rel="nofollow noreferrer">http://source.android.com/source/initializing.html</a>) only take you so far before you realize that, if you're not using one of the <em>very few</em> hardware platforms mentioned (unhelpfully on the very, very last page <a href="http://source.android.com/source/building.html" rel="nofollow noreferrer">http://source.android.com/source/building.html</a>), you are SOL. To wit, according to Google:</p>
  
  <p>"[T]he Android Open-Source Project can't be used from pure source code only, and requires additional hardware-related proprietary libraries to run, specifically for hardware graphics acceleration"</p>
  
  <p>Okay, fine (sort of). But Google does describe how that process works. The first ask is for guidance on building Android to run on real. (Indeed, how is it even possible for a non-handset-vendor to contribute to the Android OS <em>without</em> being able to build the OS and run it on hardware?) In particular, do said proprietary libraries need to be somehow extracted from the commercial binary and incorporated into the "custom" build?</p>
  
  <p>Now, GPL requires mods to the kernel -- which could included drivers -- to be made available to the public and some vendors (HTC, Acer) make kernel source readily available. But it's not at all clear if this code is sufficient to do a runnable "custom" build. Further, even if that code is sufficient, the source tree from the vendor doesn't line up <em>at all</em> with the source tree from Google. So it's not obvious how to merge the files provided from the device vendor with the files from Google to do a build. So the second (third?) ask is how to merge the vendor code with the Google code to make a source tree that's buildable (and then build it) and runnable on an arbitrary hardware platform?</p>
  
  <p>Anyone? Anyone?</p>