最新の API レベル - 16 でのみ利用可能ないくつかの関数とクラスを使用するアプリを作成していますが、API レベル 15 のデバイスでエラーなしで実行したいと考えています。
いくつかの例を使用してみましょう。新しいクラス: Android.widget.Advanceable
、および新しい/名前が変更されたメソッド: View.setBackground()
:
私はこのようなことができます:
Advanceable myAdvanceable = ...;
if (android.os.Build.VERSION.SDK_INT >= 16)
{
myView.setBackground(...);
myAdvanceable.advance();
}
else
{
myView.setBackgroundDrawable(...); // The old function name.
// Don't bother advancing advanceables.
}
また、minSdk を 15 に設定し、ビルド ターゲットを 16 に設定すると (つまり、[プロジェクト プロパティ] -> [Android] で)、実際にはエラーなしでコンパイルされます。少なくとも時々。Eclipse はエラーについて少し確率論的であり、「setBackground() は API レベル >= 16 でのみ使用可能です」などと言うことがありますが、プロジェクトをきれいにすると、これらのエラーは魔法のように消えます。
だから私の質問は、私はこれをすることを許されていますか? API レベル 15 のデバイスでコードを実行するとクラッシュしませんか? 実際に 16 コードに到達した場合にのみクラッシュしますか? Eclipse がビルドを止めないのはなぜですか?
編集 1
答えてくれてありがとう、私は質問が本当にあるべきだと思います: 新しい API の使用について lint が警告しないのはなぜですか?
マニフェストにこれがあり、API レベル 16 関数を使用していますが、それでも警告は表示されません。
<uses-sdk android:minSdkVersion="15"
android:targetSdkVersion="16"/>
また、クラス全体が API レベル ( Advanceable
. 具体的には、それらをメンバー変数として使用する場合。
編集 2
答えは「Eclipse は地獄のようにバグが多い」であることが判明しましたが、Nico の答えも非常に役に立ちました。