---
title: "Android 17（API 37）の変更点｜targetSdk 37で必要な対応とAPI 37.2・対応機種"
url: "https://www.issoh.co.jp/tech/details/10993/"
published: 2026-02-16
updated: 2026-10-14
categories: ["モバイル（iOS・Android）"]
publisher: "株式会社一創"
---

# Android 17（API 37）の変更点｜targetSdk 37で必要な対応とAPI 37.2・対応機種

Android 17はAPIレベル37に当たるAndroidのメジャー版です。Pixel向けの安定版は2026年6月16日に公開され、9月にはマイナー版のQPR1（API 37.1）が届きました。10月時点ではQPR2（API 37.2）のSDKが安定チャンネルで配布され、端末向けはベータ7まで進んでいます。本記事は開発者向けです。targetSdkを37に上げたときに変わる動作と、targetSdkに関係なく全アプリに効く変更を、公式ドキュメントの2026年10月9日更新分まで反映して一覧にしました。そのうえで、失敗したときの現れ方ごとに対応順を決めています。いつ・どの機種に来るかは冒頭のまとめで確認できます。

## まとめ：Android 17（API 37）の要点

- **リリース日**：安定版は2026年6月16日（Pixelの大半とAOSP）。QPR1（API 37.1）は2026年9月15日のPixel月例更新から配信。QPR2（API 37.2）はベータ中で、Beta 7が2026年10月9日に公開された。
- **SDK**：`platforms;android-37.0`・`37.1`・`37.2`の3つが安定チャンネルで入手できる。マイナー版はtargetSdkに指定できず、targetSdkで切り替わる動作変更も含まない。
- **対応機種**：Android 17の更新対象はPixel 6からPixel 10aまでの21機種。Pixel 11シリーズはAndroid 17を搭載して発売された。QPR2ベータの対象からはPixel 6・6 Proが外れている。GalaxyはAndroid 17ベースのOne UI 9を9月16日からS26シリーズに配信。
- **targetSdk 37で変わる主な点**：大画面で向き・リサイズ制限を無視する仕様のオプトアウト廃止、LAN機器との通信にシステム仲介のピッカーかACCESS\_LOCAL\_NETWORK権限が必要、標準SMSのOTPを3時間保留、static finalの変更禁止、バックグラウンドからのActivity起動の制限強化など18項目。
- **全アプリに効く点**：端末RAMに応じたメモリ上限、Keystoreのキー数上限、背景での音声操作の制限など。QPR2では自分宛てブロードキャストの配送が変わる。
- **開発環境**：compileSdk 37にはAndroid Studio Panda 3（2025.3.3 Patch 1）とAGP 9.1.1以上が必要。10月時点の安定版はRabbit 1（2026.2.1）とAGP 9.4。
- **Google Play**：2026年8月31日から新規アプリと更新はAPI 36以上が必須。API 37の必須化は2027年8月とGoogleがブログで予告している。
- **ART**：世代別GCがGoogle Playシステムアップデート経由でAndroid 12以降の端末にも配られる。targetSdkは関係ない。

## Android 17のリリース日と配信スケジュール

Android 17からは、開発者向けのDeveloper Previewが無くなりました。Canaryチャンネルからそのままベータに入り、3月のBeta 3でAPIが確定（Platform Stability）した後、6月に安定版が出ています。その後は四半期ごとのQPR（Quarterly Platform Release）で機能が足されます。

| 日付               | リリース          | 内容                        |
| ---------------- | ------------- | ------------------------- |
| 2026-02-13       | Beta 1        | Canaryから最初のベータ            |
| 2026-03-26       | Beta 3        | Platform Stability（API確定） |
| 2026-06-01       | Beta 4.1      | 安定版前の最後のベータ               |
| 2026-06-16       | 安定版           | Pixelへ配信・AOSPでソース公開       |
| 2026-04-22〜08-17 | QPR1 Beta 1〜9 | Beta 6でAPI 37.1が確定        |
| 2026-09-15       | Pixel月例更新     | QPR1がPixelへ配信             |
| 2026-07-20〜10-09 | QPR2 Beta 1〜7 | API 37.2のSDKは安定チャンネルで配布中  |

日付は[Android 17のリリースノート](https://developer.android.com/about/versions/17/release-notes)と、QPR1・QPR2それぞれのリリースノートに基づきます。9月15日はPixel Update Bulletinの公開日で、パッチレベルは2026-09-05です。10月の月例更新は10月6日公開（パッチレベル2026-10-05）でした。QPR2の正式配信日は、2026年10月14日時点で公表されていません。

### Developer Previewに代わるCanaryチャンネル

Beta 1の公式ブログは、従来のDeveloper Previewを「常時稼働のCanaryチャンネル」に置き換えたと説明しています。社内テストを通った機能やAPIは、四半期リリースを待たずにCanaryへ入ります。CanaryはOTAで更新できるので、手動でフラッシュする必要がありません。SDKリポジトリには`platforms;android-canary-20261007`のような日付付きのCanary SDKも並んでいます。次のメジャー版の作業を早く始めたいチームは、これをCIの検証用に使えます。

### API 37.1・37.2（QPR1・QPR2）とマイナーSDKの扱い

Android 16から、SDKには「メジャー.マイナー」の番号が付くようになりました。`Build.VERSION.SDK_INT`はメジャー版でだけ上がり、マイナー版まで区別するときは`SDK_INT_FULL`を使います。APIリファレンスには、マイナー版は新しいAPIを追加できる一方、**targetSdkVersionで切り替わる動作変更を含まない**と書かれています。targetSdkとminSdkにはマイナー版を指定できません。37.1で追加されたAPIを呼ぶときは、`Build.VERSION.SDK_INT >= 37 && Build.VERSION.SDK_INT_FULL >= Build.VERSION_CODES_FULL.CINNAMON_BUN_1`で分岐します。

2026年10月14日時点のSDKリポジトリ（repository2-3.xml）では、`platforms;android-37.2`がコードネームの付かない確定版として安定チャンネルに入っています。SDK拡張レベルは37.0が22、37.1が23、37.2が24です。これはSDKパッケージの配布状況で、端末へのOS配信とは別物です。QPR2のリリースノートは「動作変更は予定していない」と書く一方で、全アプリに効く変更を2つ載せています。中身は後述の[QPR2で加わる全アプリ向けの変更](#qpr2-changes)で扱います。

## Android 17の対応機種：Pixelの更新対象と初期搭載端末

公式の[「Get Android 17」](https://developer.android.com/about/versions/17/get)ページでOTA配信の対象とされているPixelは、次の21機種です。Pixel 5以前は対象外です。これとは別に、Pixel 11シリーズはAndroid 17を搭載して発売されています（Google Storeの仕様表に「Launched with Android 17」と記載）。

| 世代        | Android 17                          | QPR2ベータ                         |
| --------- | ----------------------------------- | ------------------------------- |
| Pixel 6系  | 6／6 Pro／6a                          | 6aのみ                            |
| Pixel 7系  | 7／7 Pro／7a／Tablet／Fold              | 同じ                              |
| Pixel 8系  | 8／8 Pro／8a                          | 同じ                              |
| Pixel 9系  | 9／9 Pro／9 Pro XL／9 Pro Fold／9a      | 同じ                              |
| Pixel 10系 | 10／10 Pro／10 Pro XL／10 Pro Fold／10a | 同じ                              |
| Pixel 11系 | 初期搭載                                | 11／11 Pro／11 Pro XL／11 Pro Fold |

[QPR2ベータの入手ページ](https://developer.android.com/about/versions/17/qpr2/get)の対象一覧には、Pixel 6とPixel 6 Proが載っていません。Pixel 6・6 Proは2021年10月の発売で、Googleのヘルプにある「米国のGoogleストアで最初に販売された時点から5年」の更新期間が尽きる時期に当たります。Pixel 6aは2022年7月発売なので一覧に残っています。Pixel 6・6 ProをテストやQAの実機に使っているなら、QPR2以降の検証は別の端末に移す前提で計画してください。

Pixel以外では、HONOR・iQOO・Lenovo・OnePlus・OPPO・realme・シャープ・vivo・Xiaomiの9社がAndroid 17のベータを提供しています。Galaxy（Samsung）はこの一覧に入っていませんが、Samsungは自社のOne UI 9を、2026年5月のベータ発表で[「Android 17をベースにした」と説明](https://news.samsung.com/uk/samsung-launches-one-ui-9-beta-for-galaxy-s26-series-users)しています。One UI 9はGalaxy Z Fold8 Ultra・Fold8・Flip8で先に搭載され、[2026年9月16日からGalaxy S26・S26+・S26 Ultraへの正式配信](https://news.samsung.com/global/samsung-begins-official-rollout-of-one-ui-9-bringing-the-latest-galaxy-experiences-to-more-devices)が始まりました。ほかのメーカーと機種の配信時期は、メーカーのOSアップデート告知と、キャリア版ならキャリアの告知で確認するのが確実です。

## ART（Android Runtime）の世代別GCとMessageQueueの刷新

ARTはAndroid Runtimeの略です。アプリのバイトコードを実行し、メモリを管理するランタイムを指します。Android 17で性能にかかわる変更は、ARTのGCとMessageQueueの2つです。この2つは、効き始める条件が違います。

### 世代別GCの配布条件：Android 12以降・targetSdk不問

Android 17では、ARTのConcurrent Mark-Compact GCに「young generation」の回収が加わりました。寿命の短いオブジェクトと長いオブジェクトを分け、ヒープ全体の走査より軽い回収を頻繁に回します。Googleは、アプリのスレッドへのGCの干渉が減り、最大RSS（常駐メモリ）が下がったと説明しています。ARTの改善はGoogle Playシステムアップデートで配られ、公式ブログの表現では「Android 12（API 31）以降の10億台超」が対象です。targetSdkを上げなくても、端末側の更新で効きます。

### MessageQueueのロックフリー化とtargetSdk 37での適用

`android.os.MessageQueue`がロックフリー実装になるのは、targetSdk 37以上のアプリだけです。公式は、フレーム落ちの減少と起動時間の改善を効果に挙げています。ただし、MessageQueueのprivateフィールドやメソッドをリフレクションで触るコードは動かなくなります。テストでキューの中身を覗いているなら、`TestLooperManager`に追加された`peekWhen`・`poll`への置き換えが公式の移行先です。

## targetSdk 37で変わる動作の一覧

次の変更は、targetSdkを37以上にしたアプリにだけ適用されます。公式の[「Behavior changes: Apps targeting Android 17」](https://developer.android.com/about/versions/17/behavior-changes-17)（2026年10月9日更新）と[安定版の公式ブログ](https://android-developers.googleblog.com/2026/06/Android-17.html)から抜き出しました。行の並びは、本記事で影響が大きいと判断した順です。

| 変更                            | 影響を受ける実装                     | 起きること                       |
| ----------------------------- | ---------------------------- | --------------------------- |
| 大画面の向き・リサイズ制限を無視              | 縦固定・resizeableActivity=false | オプトアウト不可                    |
| ローカルネットワーク権限                  | LAN機器への直接アクセス                | 権限かシステムのピッカーが必要             |
| 標準SMSのOTP保護                   | SMS本文からのOTP読取り               | 受信から3時間は読めない                |
| Activity Security（BAL）        | IntentSenderでの起動             | 背景からの起動を制限                  |
| static finalの変更禁止             | リフレクション・JNIでの書換え             | 例外またはクラッシュ                  |
| MessageQueueのロックフリー化          | 内部フィールドへのリフレクション             | 動作不良                        |
| ネイティブライブラリの安全な動的読込            | System.load()                | 書込み可能ならUnsatisfiedLinkError |
| ウィジェットのメモリ上限                  | RemoteViewsのBitmap・Icon      | IllegalArgumentExceptionで終了 |
| CP2のPII列制限                    | Data表のACCOUNT\_NAME等         | 列がビューから消える                  |
| CP2の厳格なSQL検査                  | READ\_CONTACTSなしのData表検索     | 非互換のクエリは例外                  |
| Certificate Transparency既定有効  | TLS接続                        | CT検証が既定でオン                  |
| ECH（Encrypted Client Hello）   | ライブラリと接続先がECH対応のTLS接続        | SNIを暗号化                     |
| 背景での音声の制限                     | 背景での再生・音量変更                  | FGS＋WIU能力（アラーム例外あり）         |
| setContentCaptureEnabledの非推奨化 | falseで無効化する実装                | 無効化されない                     |
| 物理キーボードのパスワード表示               | パスワード入力欄                     | 既定で全文字を伏せる                  |
| IMEのユーザー補助                    | 標準TextView                   | 変換候補の選択を読み上げに通知             |
| NPU利用の宣言                      | LiteRTのNPUデリゲート等             | 未宣言ならNPUにアクセス不可             |
| RFCOMMのread()                 | Bluetoothの読込みループ             | 切断時に-1を返す                   |

### 大画面でのリサイズ・向き制限のオプトアウト廃止

Android 16（API 36）では、sw600dp以上の画面で向き・アスペクト比・リサイズの制限が無視されるようになりました。当時は`android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY`で一時的に回避できましたが、targetSdk 37ではこの回避策が使えません。システムが無視するのは、`screenOrientation`、`setRequestedOrientation()`、`resizeableActivity=false`、`minAspectRatio`・`maxAspectRatio`です。ゲームは引き続き対象外です。ただし判定の根拠について、Android 16の動作変更ページは`android:appCategory`、Android 17の公式ブログはGoogle Playのアプリカテゴリと書いています。ゲームとして除外を受けるなら、両方をゲームに揃えておくのが安全です。

画面が縦長のまま引き伸ばされる、回転で状態が消える、といった不具合が主に出ます。Composeでレイアウトを組んでいるなら、ウィンドウサイズクラスで分岐する設計にするのが近道です。公式ブログは、新しいAPIやガイダンスをJetpack Compose向けにだけ作ると宣言しました。View系（`android.widget`、Fragment、RecyclerViewなど）は、重大なバグ修正だけを受けるメンテナンスモードに入っています。移行の判断材料は[Jetpack Composeの仕組みと採用判断](/tech/details/16030/)にまとめています。

### LAN通信の権限要求とシステム仲介ピッカーの選択

スマート家電やキャスト先など、LAN上の機器を探して接続するアプリに効く変更です。Android 16ではオプトインでしたが、targetSdk 37では強制になります。道は2つで、システムが仲介するデバイスピッカーを使うか、実行時権限を要求するかです。この権限は既存のNEARBY\_DEVICES権限グループに属します。同じグループの権限をすでに許可しているユーザーには、再度ダイアログは出ません。APIリファレンスが定義する「ローカルネットワーク」はWi-FiやEthernetのようにブロードキャストできるIPネットワークで、モバイル回線（WWAN）とVPNは含みません。

```
<!-- AndroidManifest.xml -->
<uses-permission android:name="android.permission.ACCESS_LOCAL_NETWORK" />
```

保護レベルはdangerousです。マニフェストに宣言したうえで、実行時にも要求する必要があります。

### SMSのワンタイムパスワード保護

targetSdk 37では、SMS Retriever形式でもWebOTP形式でもない普通のSMSについても、OTPを含むメッセージは受信から3時間読めなくなります。その間は`SMS_RECEIVED_ACTION`が届かず、SMSプロバイダの検索結果からも除かれます。既定のSMSアプリやコンパニオンアプリなどは対象外です。SMS本文を読んで認証コードを自動入力しているアプリは、SMS Retriever APIかSMS User Consent APIに移行しないと、認証コードの自動入力が3時間遅れます。手入力の導線があればログイン自体は続けられますが、自動入力しか用意していない画面では止まったように見えます。

### Activity Securityとバックグラウンドからの起動

公式はActivity Securityを、フィッシングや操作の乗っ取りを防ぐための一連の強化と位置づけています。開発者に直接効くのは、バックグラウンドからのActivity起動（BAL）の制限が`IntentSender`にも広がる点です。`ActivityOptions`で`MODE_BACKGROUND_ACTIVITY_START_ALLOWED`を渡している箇所は、呼び出し側が画面に見えているときだけ起動を許す`MODE_BACKGROUND_ACTIVITY_START_ALLOW_IF_VISIBLE`などの細かい指定に移します。`PendingIntent`や`IntentSender`を使って画面を開く実装が、点検の対象です。公式は、StrictModeと更新されたLintで古い書き方を洗い出すよう案内しています。

### static finalフィールドの変更禁止

Android 17で動き、かつtargetSdk 37以上のアプリは、static finalフィールドを変更できません。リフレクションで書き換えると`IllegalAccessException`が投げられます。JNIの`SetStaticLongField()`などで書き換えると、例外ではなくその場でクラッシュします。テストでモックのために定数を差し替えるライブラリや、ホットパッチ系のSDKが引っかかりやすい部分です。

### Contacts ProviderのPII列制限とSQL検査

連絡先では2つ変わります。1つはData表のビューからACCOUNT\_NAME・ACCOUNT\_TYPE・ACCOUNT\_TYPE\_AND\_DATA\_SETの3列が消えることです。これらの列が必要なら、RAW\_CONTACT\_IDで`ContactsContract.RawContacts`と結合して取り出すのが公式の移行先です。もう1つは、READ\_CONTACTS権限なしで`ContactsContract.Data`を検索すると、StrictColumnsとStrictGrammarが有効になることです。この検査に合わないクエリは例外で拒否されます。連絡先ピッカーから受け取ったURIを自前のSQLで絞り込んでいるアプリは、権限なしで動かした状態で一度テストしてください。

## targetSdkに関係なく全アプリに効く変更

次の変更は、targetSdkを上げなくても、Android 17の端末で動いた時点で適用されます。targetSdkを36のまま据え置く判断をしても、ここは避けられません。

### Android 17の全アプリ向け変更

出典は[Behavior changes: all apps](https://developer.android.com/about/versions/17/behavior-changes-all)（2026年10月1日更新）です。

- **アプリのメモリ上限**：端末の総RAMに応じた上限が入った。上限で終了したかどうかは、`ApplicationExitInfo`の理由がREASON\_OTHERで、`getDescription()`に「MemoryLimiter:AnonSwap」を含むかで判定できる。
- **Keystoreのキー数上限**：システム以外のアプリは、targetSdk 37以上なら50,000個、それ以外は200,000個まで。超えると`KeyStoreException`。
- **WebOTP形式SMSの遅延**：ドメイン検証で宛先と判定されないアプリは、受信から3時間読めない。
- **プロファイルをまたぐループバック通信の遮断**：仕事用プロファイルと個人用プロファイルの間でlocalhost通信をしている構成が対象。
- **回転後のIME表示**：アプリ自身で処理しない構成変更の後は、キーボードの表示状態が復元されない。
- **タッチパッドの相対イベント**：`View.requestPointerCapture()`中のタッチパッド操作が、マウスと同じ相対移動とスクロールとして届く。指の絶対座標が必要なら`POINTER_CAPTURE_MODE_ABSOLUTE`を指定する。
- **背景での音声操作**：有効なライフサイクル外での再生や音量変更は、例外を出さずに失敗する。フォーカス要求は`AUDIOFOCUS_REQUEST_FAILED`を返す。
- **Bluetoothの自動再ペアリング**：ボンドが失われるとシステムが裏で再ペアリングを試みる。`ACTION_PAIRING_REQUEST`に`EXTRA_PAIRING_CONTEXT`が付き、`ACTION_KEY_MISSING`は再ペアリングに失敗したときだけ送られる。

メモリ上限は、adbで挙動を再現できます。上限を課していない端末では、これらのコマンドは何もしません。

```
adb shell am memory-limiter status
adb shell am memory-limiter manual <pid> 30
adb shell am memory-limiter ignore all
```

2行目は指定プロセスに30MBの上限をかけ、3行目は全アプリを上限の対象外にします。検証後は`adb shell am memory-limiter manual <pid> none`と`adb shell am memory-limiter ignore none`で手動設定を解除してください。

予告も2つあります。ACTION\_SENDなどでURI権限を自動で付与する仕組みはAndroid 18で廃止される予定で、`StrictMode`の`detectImplicitUriPermissionGrant()`で該当箇所を洗い出せます。マニフェストの`usesCleartextTraffic`も将来の版で非推奨になる予定です。HTTP通信が必要なドメインは、ネットワークセキュリティ構成ファイルで個別に許可する形へ移しておきます。minSdkが24未満のアプリだけは、属性と構成ファイルの両方を書く必要があります。

### QPR2で加わる全アプリ向けの変更

[QPR2のリリースノート](https://developer.android.com/about/versions/17/qpr2/release-notes)（Beta 7・2026年10月9日）には、targetSdkを問わない変更が2つ載っています。

- **自分宛てブロードキャストの配送**：受信側がすべて送信元と同じプロセスにあるブロードキャストは、送信元のプロセスに戻され、メインスレッドで配られる。送ってもプロセスの重要度は上がらず、キャッシュ済みのプロセスは凍結されたまま。配送前にプロセスが終了すると、そのブロードキャストは失われて再送されない。
- **コール転送のUSSD制限**：`TelephonyManager.sendUssdRequest()`で`*21#`などのコール転送コードを送る操作は、CALL\_PHONE権限だけでは通らなくなり、`USSD_ERROR_NOT_ALLOWED`が返る。残高照会などの転送以外のUSSDは影響を受けない。

影響が広いのは前者です。自分にブロードキャストを送り続けてタイマーや延命の代わりにしている実装は、QPR2の端末では処理が止まったり消えたりします。公式の移行先は、定期処理ならWorkManager、時刻指定ならAlarmManager、プロセス内の通知ならコールバックやKotlin Flowです。ジョブの組み方は[WorkManagerの遅延実行の仕組みと採用判断](/tech/details/16038/)、端末側のアイドル制御は[AndroidのDozeモードのDeep/Lightの違いと解除方法](/tech/details/4402/)が参考になります。

## compileSdk・targetSdkを37に上げる手順

最低要件は、Android Studio Panda 3（2025.3.3 Patch 1）とAGP 9.1.1です。これは[AGPの互換表](https://developer.android.com/build/releases/about-agp)（2026年10月8日更新）に記載されています。2026年10月14日時点の安定版はAndroid Studio Rabbit 1（2026.2.1）とAGP 9.4で、AGP 9.4のリリースノートは対応する最大APIレベルを37としています。これから環境を作るなら、最低要件ではなくこの組み合わせから始めるのが手戻りが少ない選び方です。一方、Android 17の「Set up the SDK」ページ（2026年10月1日更新）には、Android 16のときと同じ「Meerkat」「AGP 8.9.0-rc01」の記述が残っています。SDK Managerの項目名も「Android Cinnamon Bun Preview」のままです。バージョン要件は互換表のほうで確認してください。

```
// build.gradle.kts（モジュール）
android {
    compileSdk = 37
    defaultConfig {
        targetSdk = 37
    }
}
```

SDKをコマンドラインで入れる場合、パッケージ名は`platforms;android-37`ではなく`platforms;android-37.0`です。マイナー版は`platforms;android-37.1`・`platforms;android-37.2`で入ります。

```
sdkmanager "platforms;android-37.0" "build-tools;37.0.0"
```

API 37.1や37.2のAPIを使うときは、Android 16 QPR2（36.1）の公式手順と同じDSLで、マイナー番号を指定します。次は37.2の例です。

```
android {
    compileSdk {
        version = release(37) {
            minorApiLevel = 2
        }
    }
}
```

実行時にAndroid 17かどうかで分けるときは、`Build.VERSION_CODES.CINNAMON_BUN`（Android 17のコードネームCinnamon Bun）と比べます。

```
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.CINNAMON_BUN) {
    // Android 17以降だけの処理
}
```

SDKの導入やエミュレータの起動をターミナルやAIエージェントから回すなら、[Android CLIのインストールとコマンド一覧](/tech/details/11841/)の手順も使えます。

## Google Playのターゲット API 要件とAPI 37の時期

[Google Playのターゲット API 要件](https://developer.android.com/google/play/requirements/target-sdk)（2026年10月1日更新）は、2026年8月31日から次のようになっています。

- 新規アプリとアプリの更新：API 36（Android 16）以上。Wear OSとAndroid Automotive OSはAPI 35以上、Android TVとAndroid XRはAPI 34以上。
- 既存アプリ：API 35以上が必要。API 34以下（Wear OS・Android TV・Android XRは33以下、Android Automotive OSは31以下）のアプリは、targetSdkより新しいOSの端末では新規ユーザーに表示されなくなる。
- 対応期限の延長：申請すれば2026年11月1日まで延ばせる。申請フォームはPlay Consoleに出る。

API 37については、2026年2月の[Android Developers Blog（大画面のリサイズ対応を扱った記事）](https://android-developers.googleblog.com/2026/02/prepare-your-app-for-resizability-and.html)が、Google Playの新規アプリと更新に対するtargetSdk 37の必須化を「2027年8月」と予告しています。ターゲット API 要件のページには、2026年10月14日時点でまだAPI 37の日付が載っていません。延長の可否などの詳細は、要件ページに載った時点で確認してください。この予告どおりなら、Google Playで配信するアプリは2027年8月までに、大画面でリサイズ制限が無視される前提へ移る必要があります。要件の締切を待って一度に上げるより、先にcompileSdkだけ37にして非推奨警告とLintを片付け、targetSdkは次の章の順で検証してから上げるのが安全です。

## 影響の出方で決めるtargetSdk 37の対応順

targetSdk 37とQPR2の変更は、失敗したときの現れ方で4種類に分けられます。対応の優先順位は、情報漏えいや中核機能の停止といった影響を先に評価し、影響が同程度なら検知しにくいものを先にします。例外を伴わない失敗は、クラッシュレポートを見ていても気づけません。背景音声の制限だけは、logcatか`adb shell dumpsys audio`に出る「AudioHardening」で始まるログで調べられます。

| 現れ方      | 該当する変更                                                 | 検知手段                       |
| -------- | ------------------------------------------------------ | -------------------------- |
| 黙って失敗    | SMSのOTP・背景音声・Content Capture・MessageQueue・自分宛てブロードキャスト | 機能テストと独自ログ                 |
| 通信エラー    | LAN通信（UDPはEPERM・TCPはタイムアウト）                            | 通信層のエラーログ                  |
| 例外・クラッシュ | static final・native DCL・ウィジェット・CP2のSQL                 | Crashlytics・Android Vitals |
| 表示・操作の変化 | 大画面のリサイズ・パスワード表示・背景からの起動                               | タブレット・折りたたみ実機              |

影響が同程度なら、最優先は「黙って失敗」の行です。認証コードが自動入力されない、背景で音が鳴らない、システムのコンテンツキャプチャを止めたつもりが止まっていない、という状態は、クラッシュ監視だけでは見逃すおそれがあります。MessageQueueも同じで、互換のために残された`mMessages`フィールドは新実装では常にnullになるため、キューの中身をリフレクションで覗くコードは例外を出さずに誤った判断をします。QPR2の自分宛てブロードキャストは、targetSdkに関係なく端末側の更新だけで効くので、この行の中でも先に洗います。`sendBroadcast()`を自分のレシーバーだけに向けて送っている箇所を検索すれば、対象は絞れます。とくに`setContentCaptureEnabled(false)`で画面内容を隠していたアプリは、今後は`FLAG_SECURE`で守るしかありません。この変更はセキュリティの前提が崩れる部類なので、見落とすと情報漏えいにつながります。

「例外・クラッシュ」の行は、社内テストやクローズドテストでtargetSdk 37版を配り、該当処理を実行するテストとクラッシュレポートの両方で確認します。自社コードに加え、リフレクションを使うテスト用ライブラリや、ネイティブライブラリを動的に読み込むSDKも確認対象です。依存ライブラリのAndroid 17対応版を先に確認してください。

逆に、targetSdk 37へ急いで上げるべきでないのは、LAN機器との通信が主機能のアプリです。権限の要求画面を用意しないまま上げると、アップデートした瞬間に中核機能が止まります。権限の導線かシステムのデバイスピッカーを実装し終えるまで、targetSdkは36のままにしておくのが妥当です。社内に検証の手が足りない場合は、[Androidアプリ開発の支援](/service/apps/android/)で既存アプリのtargetSdk移行から引き受けています。

## Android 17の主な新機能：利用者と開発者の目線

安定版の公式ブログから、利用者が目にする変化と、それに対応するAPIを挙げます。

- **App Bubbles・Bubble Bar**：ランチャーのアイコンを長押しすると、どのアプリでもフローティングのバブルにできる。タブレットや折りたたみでは、タスクバーにバブルの置き場所が付く。
- **デスクトップモードの操作できるPiP**：外部ディスプレイにつないだデスクトップモードで、常に最前面に表示されたまま操作できるピクチャー・イン・ピクチャー。[接続ディスプレイの開発者ガイド](https://developer.android.com/develop/adaptive-apps/guides/support-connected-displays)によると、スマートフォンを外部ディスプレイにつなぐと、スマートフォン側の状態はそのままで、外部ディスプレイに空のデスクトップセッションが始まる。アプリ側は、ウィンドウサイズの変化と表示先ディスプレイの移動に耐える作りが前提になる。
- **Continue On（Handoff）**：スマートフォンで最後に開いていたアプリが、タブレットのタスクバーに候補として出る。開発者は`setHandoffEnabled()`で対応する。
- **プライバシー重視のピッカー**：連絡先ピッカー（`ACTION_PICK_CONTACTS`）、そのセッションだけ正確な位置情報を渡す位置ボタン、画面上の任意の色を拾うEyeDropper（`ACTION_OPEN_EYE_DROPPER`）。
- **耐量子暗号**：対応端末ではKeystoreでML-DSAの鍵を生成でき、従来の署名とML-DSA署名を組み合わせるAPK署名方式v3.2が加わった。
- **メディア**：HDR動画規格Eclipsa Video、RAW14形式、H.266（VVC）をメーカーが組み込むための枠組み、補聴器ごとの音の振り分け。
- **AppFunctions**：アプリの機能を、端末内のMCP（Model Context Protocol）相当の「ツール」として公開するAPI。Geminiとの連携は、2026年6月時点で限定プレビュー。

カメラ関連では、CameraXを1.5.2か1.6.0以降にしないと、Android 17端末で追加されたダイナミックレンジモードに起因するクラッシュが起きると公式ブログが注意しています。CameraXを使っているアプリは、targetSdkに関係なく先に上げておくべき依存です。

## よくある質問

### Android 17はいつリリースされましたか？

安定版は2026年6月16日に公開され、Pixelの大半に配信が始まりました。2026年9月15日のPixel月例更新でQPR1（API 37.1）が配信され、QPR2（API 37.2）は10月時点でベータ中です。

### Android 17の対応機種はどれですか？

公式の更新対象一覧にはPixel 6・6 Pro・6aからPixel 10aまでの21機種が掲載されています。Pixel 11シリーズは、Android 17を搭載した状態で発売されました。Pixel 5以前は対象外です。QPR2ベータの一覧からはPixel 6・6 Proが外れました。Galaxyでは、Android 17ベースのOne UI 9の配信が2026年9月16日にGalaxy S26シリーズから始まっています。

### API 37.2とは何ですか？

Android 17のQPR2に当たるマイナーSDKです。`platforms;android-37.2`として安定チャンネルで配布されています。新しいAPIを使うにはcompileSdkでマイナー番号2を指定します。targetSdkには指定できず、targetSdkで切り替わる動作変更もありません。

### 「android17 art」のARTとは何ですか？

Android Runtimeの略で、アプリを実行してメモリを管理するランタイムです。Android 17では世代別GCが加わり、この改善はGoogle Playシステムアップデートを通じてAndroid 12以降の端末にも配られます。

### targetSdk 37への対応は今すぐ必須ですか？

2026年10月時点のGoogle Playの必須要件はAPI 36です。API 37はGoogleが2027年8月に必須化すると予告しています。ただし、全アプリに効く変更はAndroid 17端末で動いた時点で適用されるので、動作確認は今から必要です。

## 関連記事

- [Jetpack Composeとは？宣言的UIの仕組みとBOM運用・採用判断を解説](/tech/details/16030/)
- [WorkManagerとは？使い方とコード例・2.12系の変更点と採用判断](/tech/details/16038/)
- [AndroidのDozeモードとは？Deep/Lightの違いと通知が遅れるときの解除方法](/tech/details/4402/)
- [Android CLIとは｜1.0のインストール・コマンド一覧・エージェント連携](/tech/details/11841/)
- [Kotlinとは？Javaとの違いとK2コンパイラ・2.4系の現在地を実装者目線で解説](/tech/details/15789/)

---

出典: [Android 17（API 37）の変更点｜targetSdk 37で必要な対応とAPI 37.2・対応機種](<https://www.issoh.co.jp/tech/details/10993/>)（株式会社一創）
