まあ、それはよく説明されていないと思うし、今は少し混乱している. このリンクから:
Compile Withは、アプリをコンパイルするプラットフォームのバージョンです。デフォルトでは、これは SDK で利用可能な Android の最新バージョンに設定されています。(Android 4.1 以上である必要があります。そのようなバージョンが利用できない場合は、SDK Manager を使用してインストールする必要があります)。古いバージョンをサポートするようにアプリをビルドすることはできますが、ビルド ターゲットを最新バージョンに設定すると、新しい機能を有効にしてアプリを最適化し、最新の端末で優れたユーザー エクスペリエンスを実現できます。
代わりにこれから:
アプリケーションを開発するときは、アプリケーションをコンパイルするプラットフォーム バージョンを選択する必要があります。一般に、アプリケーションがサポートできるプラットフォームの可能な限り低いバージョンに対してアプリケーションをコンパイルする必要があります。
さて、それらは矛盾しているので、ここで私が理解したことを説明します: api 5 でコンパイルするとしましょう。これは、1 から 5 まで実行すると、アプリケーションは動作しますが、バージョンでは動作しないことを意味します > 5.だから:
- compileWith が 5 に設定されている場合、なぜ minSdkVersion を設定する必要があるのですか?
- targetSdkVersion とは何ですか?
ポイントは、compileWith が最新バージョンに設定されている場合、最新の API を使用して下位互換性を維持できるかどうかです。私は間違っていると確信しており、何かが欠けています。ありがとうございました。
編集 1
今、私はもっと理解していますが、とにかく何かが欠けています: minSdk が 9 で、ターゲットが 18 (私の現在の SDK) であるとしましょう。古いバージョンのサポート パッケージがない限り、api 18 に固有のものは使用できないということですよね? 私は別のことを考えています。上位互換性を得るために、可能な限り低いバージョンでコンパイルします。つまり、Win2000 で Windows アプリケーションをコンパイルすると、Windows 8 まで実行されますが、Win2000 API に限定されます。Windows 8 でコンパイルする場合、実行時に下位互換性をチェックする必要があり、Win2000 で Windows 8 API を使用できるのは「サポート パッケージ」のみです (明らかに例です)。右?
編集 2
これは、私が Android について尋ねていることです (JVM についてではありません)。Android は順方向と逆方向を混合しており、Windows の例を使用してさらに混合しました。参考までに、こちらの例で説明されているように、Windows には下位互換性があるようです。では、Android はどうでしょうか。minSdk バージョンは開発者からテストする必要があるようです。つまり、最新バージョンでコンパイルし、アプリケーションの動作を変更しない最小 API レベルまでテストする必要があります。したがって、コンパイルされたAPIレベルよりも低いすべてのAPIレベルでテストすることにより、下位互換性をテストする必要があるようであり、それらは上位互換性を保証します。右?
前方互換性定義と後方互換性定義を混在させていると思います。私がそれらを読むたびに、それらは異なっているように見えます。