Android API レベル 11 の機能が必要ですが、targetSdkVersion を 10 に設定すると、必要な古いスタイルのメニュー (メニュー ボタン) が表示されます。これらの値の設定は「合法」ですか、それとも targetSdkVersion は minSdkVersion 以上である必要がありますか?
(注:うまくいくようです!)
Android API レベル 11 の機能が必要ですが、targetSdkVersion を 10 に設定すると、必要な古いスタイルのメニュー (メニュー ボタン) が表示されます。これらの値の設定は「合法」ですか、それとも targetSdkVersion は minSdkVersion 以上である必要がありますか?
(注:うまくいくようです!)
ドキュメントが について述べているようにandroid:targetSdkVersion
、
アプリケーションが対象とする API レベルを指定する整数。設定されていない場合、デフォルト値は minSdkVersion に指定された値と同じです。この属性は、ターゲット バージョンに対してテストしたことをシステムに通知し、システムはターゲット バージョンとのアプリの前方互換性を維持するために互換動作を有効にすべきではありません。アプリケーションは、古いバージョン (minSdkVersion まで) でも実行できます。
いずれにせよ、targetSdkVersion
は常に より大きいか等しい必要があります。minSdkVersion
これは、アプリを の下で実行できないためですminSdkVersion
。targetSdkVersion
より少ない値を入力した場合minSdkVersion
は、このアプリを でテストしたことを Android システムに伝えていることを意味しますがtargetSdkVersion
、これは不可能です (アプリは までのデバイスでしか実行できないためminSdkVersion
)。
したがって、矛盾により、targetSdkVersion
は常に より大きくなければなりませんminSdkVersion
。
常にtargetSdkVersion
より大きい を に等しくしminSdkVersion
ます。
バージョンをバイパスしandroid:targetSdkVersion
て、特定の API レベルの機能を使用できます。この問題を解決する最善の方法は、実行時にデバイスのバージョンをプログラムで判断し、ハードコードされた値を指定するのではなく、API 固有の実装を使用することです。
こちらをご覧ください。
// Make sure we're running on Honeycomb or higher
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
// set the new menu styles
} else {
// do nothing and it will show the default theme
}
こちらの公式ドキュメントを確認してください。
http://developer.android.com/training/basics/supporting-devices/platforms.html#version-codes