2012年5月23日水曜日

minSdkVersion, targetSdkVersionとProject Build TargetのSDKバージョンの違い

Androidのアプリを作成する時にはManifestファイルに
<uses-sdk android:minSdkVersion="3" android:targetSdkVersion="7"/>
等のようにSDKのバージョン(APIレベル)を設定すると思います。
さらにビルドするときに使用する SDKのバージョンもあります。
これらの違いはよく混乱するので簡単に纏めておきます。

minSdkVersion
指定したバージョン以上のシステムでならアプリが動作することを示します。これ未満のバージョンのシステムにはアプリはインストールできません。
動作することを保証するのは開発者の責任です。使用しているクラス・メソッドのAPIレベルを確認し、必要なら対処しましょう。

targetSdkVersion
指定したバージョンより新しいシステムではコンパチビリティを保証するためtargetSdkVersionで指定したシステムと同じように動作するようになります。
例えばこの値を11未満(Android 3.0.x HONEYCOMB未満)にするとたとえAndroid 3.0.xのシステムでもデフォルトのテーマはこれまでの @android:style/Theme になります(forward-compatibility)。
11に設定していればAndroid 3.0.xのシステムではHONEYCOMBスタイルの @android:style/Theme.Holo が使用されます。他にもAction Barの使用やオプションメニューがなくなる等の影響がでてきます。
アプリを作成した場合はエミュレータや実機で動作を十分に確認すると思いますが、そこで確認したことが保証されるよう確認に使用したバージョンをここに指定しましょう。

Buildに使用するSDKのバージョン
EclipseならPackage ExplorerのProperties - Android - Project Build Targetで指定するSDKのバージョンです。
この値によってソースコードで使用できるクラスやメソッドが決まります。targetSdkVersionより大きい値も設定できます。その場合、使用しているクラス・メソッドのAPIレベルを確認し対処するのは開発者の責任です。

0 件のコメント:

コメントを投稿