a2sd(アプリをSDカードに保存可能にする機能)対応する方法ですが、ビルドまでに必要な手順は以下の2(3)ステップです。

・ビルドターゲットを2.2にする
・マニフェストファイルでinstallLocationを設定
<manifest 
xmlns:android="http://schemas.android.com/apk/res/android"
android:installLocation="auto"
... />

(↓2.2より以前のOSでも一応インストールできるようにしたい場合。ただし、a2sd以外のSDK8以降の機能は使わないように気をつける)
・android:minSdkVersionは8にせず、任意のバージョンに設定

ただし!!
そのアプリをマーケットで公開したい場合は、もう1つ注意点があります。

・マーケットのデベロッパーコンソールの「公開設定のオプション」で「コピー防止」をオフにする
コピー防止をオフに

コピー防止をオンのまま公開すると、インストールはできても「設定>アプリケーション>アプリケーションの管理」から「SDカードに移動」ボタンが無効のままで効果がありません!

Apps on SD Card: The Details
↑「Security and Performance Implications」のところを参照
Android Marketでアプリ公開の際、apkファイルをアップロードするとこのようなエラーが場合はversionCodeが前回時と同じもしくは少ないことが原因です。

The new apk's versionCode (1) in AndroidManifest.xml must be higher than the old apk's versionCode (1).
The server could not process your apk. Try again.


結論からいくと、
versionCodeは、何回目のアップロードかを表す整数
versionNameは、自分で好きに決めたバージョン名を表す数字
です。なので、アップデートする際は少なくとも前回時よりもversionCodeが大きくなっていなければなりません。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
android:versionCode="1"
android:versionName="1.0.0"
package="net.karappo.android.myapp">
として公開スタートしたアプリの次回バージョンアップ時は
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
android:versionCode="1"
android:versionName="1.0.1"
package="net.karappo.android.myapp">
ではなく
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
android:versionCode="2"
android:versionName="1.0.1"
package="net.karappo.android.myapp">
とします。(もちろん、いきなり1.1.0とかでもOK!)

要は、versionCodeはアップデートの旅にインクリメントされていなければならないんですね。知っていれば当たり前、でも、僕はversionCodeはversionNameの整数部と連動していて、メジャーバージョンアップしないかぎりいじらないのかと、馬鹿な考えをしていました・・・。