1. ホーム
  2. android

[解決済み] compileSdkVersionとtargetSdkVersionの違いは何ですか?

2022-03-16 09:17:59

質問

を見てきました。 ドキュメント との違いがよくわかりません。 compileSdkVersiontargetSdkVersion があります。

としか書かれていない。

compileSdkVersion プロパティはコンパイル対象を指定します。

さて、quot;コンパイル対象とは何でしょうか?

この解釈には2つの可能性がありますね。

  1. compileSdkVersion はアプリのビルドに使用されたコンパイラのバージョン、一方 targetSdkVersion アプリケーションが対象とするAPIレベル" . (このような場合、私が想定するのは compileSdkVersion を超える必要があります。 targetSdkVersion ?
  2. コンパイル対象 == "アプリケーションが対象とするAPIレベル == "アプリケーションが対象とするAPIレベル == と同じ意味です。
  3. 他に何か?

なるほど この質問 は以前にも質問されていますが、1つの回答はドキュメントを引用しているだけで、私には不明確な点です。

どのように解決するのですか?

コンパイルSdkVersion

compileSdkVersion は、アプリがコンパイルされているAPIのバージョンです。これは、そのバージョンのAPIに含まれるAndroid APIの機能を使用できることを意味します(もちろん、それ以前のすべてのバージョンも同様です)。もし、API 16の機能を使おうとして compileSdkVersion を15に設定すると、コンパイルエラーになります。もし compileSdkVersion を 16 に設定しても、アプリの実行パスが API 16 固有の API を呼び出そうとしない限り、API 15 のデバイスでアプリを実行することができます。

ターゲットSdkバージョン

targetSdkVersion は、アプリのコンパイル方法や利用できるAPIとは関係ありません。そのため targetSdkVersion は、指定されたバージョンでアプリをテストしたことを示すものです(おそらく、そのバージョンまで)。これは、Android OS に対して、OS の機能の観点からアプリをどのように扱うべきかのヒントとなる認証またはサインオフのようなものです。

例えば ドキュメント と記載されています。

例えば、この値を "11" 以上に設定すると、Android 3.0 以降で動作するアプリに新しいデフォルトテーマ (Holo) を適用するようになります...

Android OSのことです。 ランタイム時 は、この値に基づいて、OS のコンテキストでアプリがどのようにスタイライズされるか、またはその他の方法で実行されるかが変更される場合があります。この値によって影響を受ける既知の例は他にもいくつかあり、このリストは時間の経過とともに増えていくでしょう。

実用上、ほとんどのアプリは targetSdkVersion には、API の最新リリースバージョンを指定します。こうすることで、最新の Android 端末でアプリを可能な限り美しく表示できるようになります。を指定しない場合 targetSdkVersion に設定され、デフォルトは minSdkVersion .