最小SDKバージョン/ターゲットSDKバージョンとコンパイルSDKバージョンの違いは何ですか?


214

「最小SDKバージョン/ターゲットSDKバージョン」と「コンパイルSDKバージョン」の違いは何ですか?minとtarget sdkの意味を知っていますが、sdkバージョンのコンパイルは何を意味しますか?

Eclipseでは、min / maxとtarget sdkがありますが、android studioではこれらの3つの設定があります。


私は現在、私は12としてtargetsdkversionを使用アプリに取り組んでいますし、すべての私のレイアウトは非常に、私は23に戻って、それを変更し、私はtargetsdkバージョンがコンパイルされたバージョンのように、常に同じでなければならないと思うので、それは魔法のように動作異常に働い
シャヒードSarwar

回答:


232

分のSDKのバージョンは、あなたのアプリケーションが実行できるのAndroid SDKの初期リリースです。通常、これは以前のAPIの問題、機能の欠如、またはその他の動作上の問題が原因です。

ターゲットSDKのバージョンは、アプリケーションがされたバージョンです対象に実行します。理想的には、これはある種の最適な実行条件によるものです。「バージョン19のアプリを作成する」場合は、ここで指定します。以前のリリースでも後のリリースでも動作する可能性がありますが、これはあなたが目指していたものです。これは主に、アプリケーションが市場などでどのように使用されているかを示すためのものです。

コンパイルSDKのバージョンは、お使いのIDE(または私は仮定コンパイルの他の手段)を使用すると、公開時にアプリを作るために使用するアンドロイドのバージョンで.apkファイルを。これは、開発時にアプリをコンパイルする必要があるため、アプリのテストに役立ちます。これはAPKにコンパイルするバージョンになるため、当然、リリースのバージョンになります。同様に、これをターゲットSDKバージョンと一致させることをお勧めします。


私のコンパイルSDKバージョンとターゲットSDKバージョンは同じです。それは21です。APIレベルが低いデバイスで実行すると、アプリがクラッシュします。Androidは初めてですが、どうすればよいですか?
prgmrDev 2015

2
@prgmrDev 21未満のバージョンでアプリがクラッシュする場合、おそらくSDKの最小バージョンを21に設定する必要があります。これにより、実際には21未満のターゲットでアプリケーションが修正されず、アプリが下位バージョンでサポートされていないことが示されます。また、アプリケーションを破壊しているもの(バージョン21で変更されたもの)を正確に特定し、その依存関係を処理するためのサポートを追加するオプションもありますが、これは多くの作業であり、Android初心者の範囲内ではないと思われます事業。
マット

1
minSdkVersion = 14に設定するとどうなりますか。targetSdkVersion = 23; SDKを19にコンパイルしますか?
thadeuszlay

5
@thadeuszlayバージョン23で実行することをターゲットとする場合、19でコンパイルすることはどのようにして可能であるかを少し考える必要があるため、質問は無関係です。数式に従ってくださいminSdkVersion <= targetSdkVersion <= compileSdkVersion
Asad

@Mattたとえば、たとえばcompileVersion 26を使用しているときに、バージョン21でサポートされていない機能またはJava APIを誤って使用してしまうことがあります。これは最小SDKです。申し訳ありませんが、本当にここにいくつかの基本的な概念を得ていない
HAART

83

式は

minSdkVersion <= targetSdkVersion <= compileSdkVersion

minSdkVersion-アプリケーションがインストールできるAndroidの最小バージョンを定義するマーカーです。また、存在しないAPIの呼び出しを防ぐためにLintによって使用されます。また、ビルド時間にも影響します。したがって、ビルドフレーバーを使用して、開発中にminSdkVersionを最大にオーバーライドできます。Androidチームが提供するすべての改善を使用して、ビルドをより速くするのに役立ちます。たとえば、Java 8の一部の機能は、特定のバージョンのminSdkVersionからのみ使用できます。

targetSdkVersion-特定の動作の変更を有効にするようAndroidシステムに指示します。

例えば:

  • Android 6.0以降(APIレベル23)Runtime Permissionsが導入されました。targetSdkVersion22以下に設定すると、アプリケーションは実行時にユーザーに何らかの許可を求めません。

  • Android 8.0(APIレベル26)以降では、すべてをnotificationsチャネルに割り当てる必要があります。そうしないと、チャネルが表示されません。Android 7.1(APIレベル25)以下を実行しているデバイスでは、ユーザーはアプリごとにのみ通知を管理できます(事実上、Android 7.1以下では、各アプリには1つのチャネルしかありません)。

  • 、アンドロイド9(APIレベル28)で始まりますWeb-based data directories separated by process。場合はtargetSdkVersion28+であり、あなたは、いくつかの作成WebView異なるプロセスでは、あなたが取得しますjava.lang.RuntimeException

compileSdkVersion-実際にはSDKプラットフォームのバージョンであり、Gradleにコンパイルに使用するAndroid SDKを指示します。.javaAndroid SDKの新機能やデバッグファイルを使用する場合は、compileSdkVersionに注意する必要があります。もう1つの例は、使用を強制するAndroidXの使用compileSdkVersionです。レベル28 compileSdkVersion はAPKに含まれていませんcompile time。純粋にで使用されています。compileSdkVersionを変更しても、ランタイムの動作は変わりません。たとえば、新しいコンパイラの警告/エラーを生成できます。したがって、常に最新のSDKでコンパイルすることを強くお勧めします。既存のコードでの新しいコンパイルチェックのすべての利点が得られ、新しく廃止されたAPIを回避し、新しいAPIを使用できるようになります。もう一つの事実はcompileSdkVersion >= Support Library version

詳細については、こちらをご覧ください。また、Android 8.0 への移行の例をご覧になることをお勧めします。


9
targetSdkVersionとcompileSdkVersionの実際の違いを実際に説明しているため、ここでの最良の回答
Dean Wild

@ yoAlex5ご回答ありがとうございます。多くの場合、targetSdkVersionとcompileSdkVersionが同じであることがわかります。androidが2つを別のものとして作成したのに、1つでは十分ではなく、2つの別々のフィールドを作成する背後に特別な理由があるのですか?
満州

@ManjuあなたはSOのスレッドでより見つけることができますstackoverflow.com/questions/26694108/...
yoAlex5

@ yoAlex5「Androidシステムで特定の動作の変更を有効にする」とはどういう意味ですか?説明できますか?
k_kumar

@atishr「特定の動作の変更」は、「たとえば」ブロックにリストされています
yoAlex5

74

分のSDKのバージョンは、アプリケーションを実行するために必要なAndroidオペレーティングシステムの最小バージョンです。

ターゲットSDKのバージョンは、アプリが上で実行するために作成されたことのAndroidのバージョンです。

コンパイルSDKのバージョンがあることのAndroidのバージョンであるビルドツールの使用法は、リリース、実行、またはデバッグするために、アプリケーションをコンパイルして構築します。

通常、コンパイルsdkバージョンとターゲットsdkバージョンは同じです。


23
そして、彼らが同じ長所/短所ではないときは?
パウダー366

4

compileSdkVersion:compileSdkVersionは、アプリがコンパイルされる対象のAPIのバージョンです。これは、そのバージョンのAPIに含まれているAndroid API機能を使用できることを意味します(明らかに、以前のすべてのバージョンと同様)。API 16の機能を使用しようとして、compileSdkVersionを15に設定すると、コンパイルエラーが発生します。compileSdkVersionを16に設定しても、API 15デバイスでアプリを実行できます。

minSdkVersion:min sdkバージョンは、アプリケーションの実行に必要なAndroidオペレーティングシステムの最小バージョンです。

targetSdkVersion:ターゲットSDKバージョンは、アプリの実行対象となるバージョンです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.