title: Android backward compatibility but still utilise latest API features
body: <p>I have noted in the Android Market that many popular applications have backward compatibility to much earlier versions of Android.
  E.g.</p>
  
  <pre><code>Evernote - 1.6
  Faceobook Messenger - 2.2
  </code></pre>
  
  <p>These applications look and work great but how can they do this and support much older API levels? Are they only using API features that exist in the lowest supported OS version, hardly? I'm assuming they must be using some features of the later API levels to provide a great UI and featurelist.</p>
  
  <p>I can see two possible solutions:</p>
  
  <p><code>Use Min/Target API levels in build. Then through code you check the OS version and implement the features using a supported method and degrade gracefully. This seems like a lot of work.</code></p>
  
  <p><code>Have multiple app versions targeting various OS versions. E.g. A release for 2.2 and another for 4.0. Is this possible?</code></p>
  
  <p>The reason for asking is I am planning a new app that should support 2.2 but I fear I may require API features that are only available in later releases? Should I just target 2.2?</p>
  
  <p>EDIT: Also, what role do Compatibility Libraries play? Is this the key?</p>
  
  <p>Thanks.</p>