のセッションを見たメモです。
What's new in Android では今年の Android に関するセッション内容の概要を紹介する動画になっています。
なのでこのセッション動画を見ることでざっくりとした Android に関する新情報をキャッチアップができるようになっています。
詳細は記載しているセッション詳細のリンクから動画を見てみてください。
関連リンク
Jetpack ライブラリの話
- バックポートや新しい機能のライブラリで120を超えている
- 新しく追加された JankStats ライブラリ
- アプリのパフォーマンス問題の解析を行う
- アプリの起動時間の短縮に Baseline Profile を作成
- 既存のライブラリにも多くの更新がある
- Room 2.5
- Kotlin の置き換え
- KSP のサポート
- リレーショナルクエリメソッド
- Navigation
- multiple backstack
- 2 pane layout 対応
- Room 2.5
- 詳細は以下のセッションを参照
- 関連
Fragment の話
- 最初のサポートライブラリは Fragment だった
- ライフサイクルが AndroidX ライブラリを使うものに変更されたり、Fragment 間の連携に Fragment Resul API を使うようになったり、Fragment から個別に分離することでテストしやすくなった
- 詳細は以下のセッションを参照
Jetpack Compose の話
- 1.2 beta がリリースされた
- Downloadable font
- NestedScroll との互換
- Lazy Grid は stable になって新しい機能で書き直された
- Live Edit や Recomposition debugging、Animation Preview などのツールのサポートもある
- 詳細は以下のセッションを参照
- 関連
大きい画面対応の話
- スマートフォンだけでなく、タブレットやラップトップまでアプリの実行できるデバイスが増えている
- デザイン
- ユーザがどのように端末を持って使用するところから考える
- 快適さ、機能、効率、没入感について考える必要があり、コンテンツとナビゲーションの方法を検討する
- 実装
- Jetpack の WindowManager 1.1 で Window Size Classes で利用可能なサイズに基づいて UI を適用させるために使用できる
- 複数の Activity を使用している場合は Activity を並べて配置することができる
- Fragment の場合は SlidingPaneLayout を利用できる
- ナビゲーションの調整には NavigationRail が役に立つ
- Drag and drop は新しく Jetpack のライブラリで Util 系の処理を提供している
- 動作確認には Resizable Emulator と新しい Desktop Emulator を使用する
- Jetpack Compose の対応は Implementing Android apps for all screen sizes を参照
- 操作
- 大きい画面のデバイスの操作はマウス、スタイラス、キーボードがある
- View と Compose 1.2 がマウスのクリックとスクロールをサポートしている
- 使いやすさを向上させるために固有のキーボードショートカットを実装を検討したり、矢印キーでナビゲートできるようにする
- ドキュメントに詳細が記されている
- 詳細は以下のセッションを参照
Android 13 の話
- Beta 2 が使えるようになった
- 通知を表示させるための新しい権限
POST_NOTIFICATION
が追加 -
READ_EXTERNAL_STORAGE
が廃止されて細かな権限に変更 - 新しい Photo Picker が追加され、メディアライブラリ全体への権限なしにメディアへアクセスできる
- Privacy Sandbox の一つとして Android 13 では SDK ランタイムを導入してアプリとは独立して広告関連の SDK をインストールや実行できる予定
- 新しいオプトイン API を備えた戻る操作が導入された
- Android 13 では
enableOnBackInvokedCallback=true
にするとonBackPressed
などがよばれずにOnBackInvokedCallback
を使う必要があり Android 14 でデフォルトになる - Jetpack の Activity を使用した詳細な実装は Back to the basics of System Back を参照
- Android 13 では
- Android 13 でバックグラウンドのアプリの制限を標準化
- バックグラウンドでの動作の制限やバックグラウンドでバッテリーを消費しすぎている場合にユーザに通知する
- Job に優先度をつけて端末の状態に応じて優先度の低い Job を強制終了させる
- 詳細は以下のセッションを参照
- 関連
ML の話
- オンデバイスでは MLKit / Custom ML があり、リアルタイムのポーズ検出、顔検出、手書き認識などの精度を改善している
- Text Recognition V2 では 37 か国語に対応
- Google Play Service 経由でコードスキャナー機能がリリースされ、権限なしにバーコードや QR コードなどをスキャンできるようになった
- TensorFlow Lite がアプリに埋め込むのではなく Google Play Services 経由で利用できるようになった
- 詳細は以下のセッションを参照
Camera の話
- CameraX への投資を続けている
- 1.1 は RC になり、WYSIWYG コントロールやビデオキャプチャを追加
- ビデオキャプチャはデバイスに応じてカメラの選択やオーディオのオプション、SD~4K までの解像度をサポート
- プラットフォームと CameraX の両方で機能を追加していく
- 例えば Android 13 では HDR ビデオキャプチャが導入されていて、CameraX でもバックポート予定
- メーカーが実装する特殊効果にアクセスするための拡張機能を CameraX へ 2022 年後半に追加予定
- 拡張機能がサポートされていない場合は Google の独自機能にフォールバックする
- 詳細は以下のセッションを参照
Media の話
- HDR 動画をサポートするデバイスが増え、キャプチャをアプリに含めるか、インポートするか、SDR にトランスコードする必要がある
- Android 13 ではキャプチャと再生に必要な HDR を標準化して、Jetpack Media で HDR の再生や編集をサポートする
- Android 13 では空間オーディオのサポートを追加
- ExoPlayer の新機能
- DRMキーのプリフェッチ(2.14)
- Android 12 の互換(2.16)
- サーバ側の広告挿入(2.17)
- ExoPlayer の新機能
- ExoPlayer から Jetpack Media3 へのマイグレーションも続ける
- Jetpack ではメディアの再生だけでなく編集とトランスコーディングをサポート
- 詳細は以下のセッションを参照
Accessibility の話
- Android Studio が Touch target size や contentDescription の欠落など検出する
- Jetpack Compose にも対応
- 詳細は以下のセッションを参照
Google Wallet の話
- イベントチケットや搭乗券、ワクチンカードなどを Google Wallet に保存できるようになった
- 以前の Google Pay Passes API を Google Wallet API として進化させて Android の SDK を新しくリリースする
- アプリからバックエンドなしに直接 Wallet に保存できるようになる
- 詳細は以下のセッションを参照
- 関連
マルチデバイスの話
- さまざまなデバイスの登場でそれらの間でシームレスに機能することを期待している
- デバイスの検出、Wakeup、デバイス間通信などのシームレスな連携のためのライブラリを開発している
- 詳細は以下のセッションを参照
デバイスを跨いだシームレスな認証の話
- BlockStore はデバイス間でトークンを保存、転送できるシンプルな API で新しいデバイスでサインインなしでセットアップ可能
- OneTap はアカウントの作成とサインインが簡単になる API でプラットフォームを跨ってシームレスに認証できる
- Passkeys でパスキーが Google アカウントにバックアップ・同期される
- 詳細は以下のセッションを参照
Google Play の話
- Play Console の AndroidVitals でレポート API を提供するようになり、独自のダッシュボードを構築できるようになった
- AndroidVitals に国ごとにフィルタリングする機能や FG/BG もわかるようになった
- Firebase Crashlytics との連携も改善し、AndroidVitals を直接表示もできるようになる
- 問題に対して優先度が設定されるようになる
- Device catalog も刷新
- Custom store listing に deeplink が対応して A/B テストを細かく制御できるようになる
- サブスクリプションが見直され、オファーの適格性と価格設定のオプションが増え、複雑さが軽減された
- Play Billing Library 5.0 でサブスクリプションに関する In-App Messaging を出せるようになる(?)
- 詳細は以下のセッションを参照
- 関連
Wear の話
- Wear の Compose がベータに
- Health Service が心拍数などの測定データを API で提供する
- 測定データをアプリごとではなく1箇所で管理できるように Health connect が一つの Android API に統合しユーザの同意を得てデータの読み書きを行う
- Health connect は Jetpack Health を通じて提供される
- 詳細は以下のセッションを参照
- 関連
Android TV・Google TV の話
- Android 12 の変更点
- 4K UI のサポート
- 子供向けコンテンツのキュレーション
- Android 13 の変更点
- AudioManager がオーディオルートの変更を予測したり、HDMI の状態で電力を消費したりする
- 新しい Picture in picture のサポート
- 詳細は以下のセッションを参照
Android Development Tools の話
- Dolphin
- Logcat v2
- Compose Recomposition in Layout Inspector
- などなど
- Electric Eel 以降
- Jetpack Compose の Live Edit
- Visual Lint for Compose
- Compose Mutli-Preview
- などなど
- 詳細は以下のセッションを参照
- 関連
パフォーマンス改善の話
- Android Studio Dolphin に追加された CPU プロファイラーや Play Console の AndroidVitals で確認するところから始まる
- Macrobenchimarking ライブラリを使用してアプリの軌道などの計測をする
- JankStats ライブラリを使用してジャンキーフレームを検出
- Baseline profiles でアプリのパフォーマンスを大幅に向上させる
- Android フレームワークの ART の更新
- Android 12 で ART もメインラインモジュールになり、Android OS のリリースサイクルの外で ART の更新ができる
- これにより Open JDK の更新やパフォーマンス改善、バグ修正が提供できる
- Android 12 で ART もメインラインモジュールになり、Android OS のリリースサイクルの外で ART の更新ができる
- 詳細は以下のセッションを参照