【Kotlin/Android Studio】コードからAPI(OS)レベルを取得して分岐する方法!Build.VERSION.SDK_INT

【Kotlin/Android Studio】コードからAPI(OS)レベルを取得して分岐する方法!Build.VERSION.SDK_INT

この記事からわかること

  • Android Studio/KotlinコードからAPIレベル取得する方法
  • Build.VERSION.SDK_INT使い方
  • Android 10(API 29)とAndroid 11(API 30)でコードを分岐させるには?

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

環境

APIレベルとは?

公式リファレンス:<uses-sdk>

Androidの「APIレベル」とはAndroidプラットフォームにおけるリリースバージョンごとに更新されていく値です。これはOSのバージョン(Android 16など)と基本的に関係していてOSのバージョンが上がるとAPIレベルも上がります。

Androidアプリ開発においては「アプリの最小対応APIレベル(minSdkVersion)」や「ターゲットAPIレベル(targetSdkVersion)」、「コンパイルAPIレベル(compileSdkVersion)」を指定することでAPIレベルに応じたアプリとして管理することが可能です。

アプリの最小対応APIレベル(minSdkVersion)

「アプリの最小対応APIレベル(minSdkVersion)」はアプリがインストール可能なAPIレベルです。指定した値より古いデバイス(APIレベルの低い端末)ではアプリ自体がインストールできなくなるので、適切な範囲で指定する必要があります。

またアプリにライブラリを導入している場合は各ライブラリのminSdkVersionとの兼ね合いも考慮する必要があります。

未設定の場合は1(全てのAndroidが対象)になってしまうので設定は必須になります。

ターゲットAPIレベル(targetSdkVersion)

「ターゲットAPIレベル(targetSdkVersion)」はアプリがメインターゲットとしているAPIレベルです。未設定の場合はminSdkVersionに指定した値が反映されます。

またtargetSdkVersionに指定したAPIレベルは上位互換性を維持するため、新しいAPIにおいて動作に対する変更を適用しない仕組みになっており、targetSdkVersionで指定したレベルで期待される動作に近づくように働いてくれます。

targetSdkVersionを上げないことのデメリットは最新のAPIレベルで追加された機能が利用できないことです。なのでAPIレベルアップデート対応を行う場合はcompileSdkVersionをあげれば対象のAPIレベルで動作することは担保できますが、対象のAPIレベルで追加された機能を使用したい場合はtargetSdkVersionをあげておく必要があります。

コンパイルAPIレベル(compileSdkVersion)

「コンパイルAPIレベル(compileSdkVersion)」はコンパイル時に適応するAPIレベルです。ここで指定しているレベルでサポートしている機能が利用できるようになるため、基本的に最新にしておけば問題ないです。

またtargetSdkVersioncompileSdkVersionより大きな値を指定することはできないようになっています。


android {
    // アプリケーションの名前空間(パッケージ名)を指定。リソースやクラスを一意に識別するために使用。
    namespace 'com.example.myapp' 
    // コンパイル時に使用するAndroid SDKのバージョン。最新のAPI機能を使用するために指定。
    compileSdk 33 

    // アプリケーションの基本的な設定。
    defaultConfig {
        // アプリケーションの一意なID。Google Playでのアプリを識別用。
        applicationId "com.example.myapp" 
        // アプリが動作するための最小SDKバージョン。
        minSdk 24 
        // アプリがターゲットとするSDKバージョン。
        targetSdk 33 
        // アプリの内部バージョンコード。
        versionCode 1 
        // ユーザーに表示されるアプリのバージョン名。
        versionName "1.0" 
    }
}

コードからAPIレベルを取得する方法

Kotlinでコードからアプリが実行されているデバイスのAPIレベルを取得するにはBuildクラスのVERSION.SDK_INTを使用します。Build.VERSION.SDK_INTの中には自動でデバイスのAPIレベルが格納されています。

import android.os.Build
print(Build.VERSION.SDK_INT) // 34

取得できる数値はAndroid 14であれば34といったAPIレベルです。

AndroidのバージョンとAPIレベル

AndroidのバージョンとAPIレベル、バージョンコードは以下のようになっています。(※ 2025/3/6時点)

プラットフォームのバージョン API レベル VERSION_CODE
Android 16 API 35 → ベータ版 1 BAKLAVA
Android 15 35 VANILLA_ICE_CREAM
Android 14 34 UPSIDE_DOWN_CAKE
Android 13 33 TIRAMISU
Android 12 32 S_V2
Android 12 31 S
Android 11 30 R
Android 10 29 R
Android 9 28 Q

詳細は公式サイトを参考にしてください。

公式リファレンス:API レベル

処理を分岐する

Build.VERSION.SDK_INTで取得した値で分岐させることでAPIに応じて非推奨になってしまったコードなどを分けて記述することができるようになります。

if (Build.VERSION.SDK_INT <= 29) {
  // Android 10 (API 29) 以前で実行する処理
} else if(Build.VERSION.SDK_INT >= 30) {
  // Android 11 (API 30) 以降で実行する処理
}

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index