Open27
[Google I/O 2022 メモ]What's new in Android
Jetpack
- 120以上のライブラリがある
- 新しいライブラリとすでにあるライブラリの更新を紹介する
JankStats
- アプリのパフォーマンスの追跡と分析
- アプリのロード時間の高速化と、最初のアプリ操作のdropprd framesの削減のためにBaseline Profilesを作った
Room
- 2.5
- full Kotlinの最初のステージ
- KSPサポートstable
- relational query methods
Navigation library
- マルチバックスタック
- 2paneレイアウトが簡単に実装できる
Fragment
- 今日のFragmentは大幅に変更されている
- 初期のAPIは個別の専用クラスに移動。非推奨に。
- ライフサイクルはandroidxライフサイクルが採用されている
- Fragment間の情報受け渡しはFragmentResultAPIを使う。内部でLifecycleAPIが使われており、テスト可能
Compose
- 1.2 betaリリース
- advancedな使い方に対応できるよう機能を追加している
- Downlodable Fonts
- Nested Scrolling Interop
Tools
- Live Edit
- Recomposition debugging
セッション
- 2つのセッションはdeep diveする
- Common Performance Gotchas in Jetpack Compose
- 避けるべきパターンを紹介
- baseline profileで改善
- Backwards write. すでにreadしたものをstateにwriteしないようにする
- remember
- Lazy Layouts in Compose
- スクロールpositionのコントロール方法
- Lazy grids. 1.2でexperimentalを卒業
- Custom lazy layouts
- Common Performance Gotchas in Jetpack Compose
ハンズオン
- Basic Layouts in Compose
- Using State in Jetpack Compose
Large Screens
Designing Apps for Large Screens
- デバイスはどのように持って使うか、から考え始める
- 快適で効率的に使えるように
- UIのexpandや再構築を適切にする
- コンテンツの統合やナビゲーションをどうするか
- Canonical layouts
Update your app for the larger screen
- Window Size
- Compact / Medium / Expanded
- すべてをrewriteせずにadaptive UIを構築
- Small and large screens
- activity embeddingを使ってside by side でActivityを表示
- SlidingPaneLayout
- Navigation Rail
- Drag and Drop
Implementing Android apps for all screen sizes
- どのNavigationコンポーネントを使うか
- navigation bar → compactに
- navigation rail → mediumに
- navigation drawer → expandedに
Input for all screens
- マウス、キーボード、トラックパッド、スタイラス...
- 様々なデバイスのためのデザインガイダンスを更新している
- Keyboard shortcutsの実装
- Hover States
- Stylus
Building Adaptive Layouts with SlidingPaneLayout
Android13
- beta2が利用可能に
Developing Privacy User Centric Apps
- アプリがセンシティブな情報にどうアクセスするか
- 最小のデータアクセスとパーミッションで
- 通知のパーミッション
- READ_EXTERNAL_STORAGEがdeprecatedに
- 新しいPhoto Picker
- ランタイムパーミッションが不要
- ランタイムパーミッションが不要
Privacy Sandbox
- 新たなプライバシーに配慮したadvertising solutions
- 広告ビジネスモデルを可能にしつつ、ユーザーのプライバシーを保護できるAPIを提供
- 例えば、Androidは常に別々のプロセス内でアプリをSandbox化するが、アプリ内のすべてのコードはサードパーティSDKを含め、データ/権限への同じアクセス権を持つ同じSandboxで実行される
- アプリが収集したすべてのデータに責任がある
- Android13ではSDKランタイムを導入、アプリと独立した広告関連のSDKを配布、インストール、実行し、アプリがアクセスできるデータを制限するようにする
- カスタム定義のオーディエンスを管理し、Attribution Reportを作成するために、新しいプライバシー保護APIを提供予定
Back Action
- Androidの象徴的なBack Actionは、物理ボタンからソフトボタンへ、そしてジェスチャーへと進化した
- しかし時々予測不可能なときがある。
- これを予測可能で流動的なものにしたい
Ahead-of-time model
- Android13で新しいopt-in APIを備えたBackの進化が導入されている
- 事前にシステムにBackをハンドリングするか/しないかを伝える
- Predictable Back
- Backするとどのような画面になるかのPreviewを見せる
Background work
- App Restriction Levels
- バックグラウンドアプリ制限を標準化し、エコシステム内のデバイス間の一貫性を向上
- Android13ではユーザーが選択した新しい制限レベルが導入され、実行できるBackground work量に影響を与える
- バックグラウンドアプリ制限を標準化し、エコシステム内のデバイス間の一貫性を向上
- Resource Management
- しきい値を設けて、アプリがバックグラウンドでバッテリーを消費しすぎているとユーザーに通知する可能性がある
- JobSchedular Improvements
- Jobschedular Priority
- 前のJobを次の予測したアプリ起動に近づける
- Job priorityを提供。deviceが過熱や通信状況が悪い等、クリティカルな状況では低priorityなJobをkillする
- Jobschedular Priority
Android Machine Learning
- on-device ML
- 用意されたMLを簡単に使うにはMLKit、独自のon-device MLを開発したい時はCustom ML、が使える
- MLKit にはたくさんのAPIアップデートがあった
- リアルタイムのpose detection
- Text Recognition V2(Beta)
- 37言語
- Google Code Scanner
- barcodes、QR codes、そのたコードを簡単にScan可能
- カメラパーミッション不要
- Custom ML
- TensorFlowLite in Google Play Services
- Google Play Services経由でTensorFlow Liteが利用可能
- embedするよりAPK sizeを減らせ、簡単に更新できる
Camera
- CameraX v1.1.0
- OEMと協力
- テストラボで、挙動の確認や改修を行っている
- Video capture with dropping WYSIWYG camera controls
Android media
- HDR Video
- Android13ではキャプチャと再生に必要なHDRフォーマットを標準化
- Jetpack Mediaを更新。HDRの再生、編集、トランスコーディングのサポートが入る
- Spetial Audio
- Android13では空間オーディオをサポート
- ExoPlayer2.17はデフォルトでdeviceを空間オーディオ用に構成
- ExoPlayer
- DRMキーのプリフェッチ
- android12のバックグラウンド機能の互換
Accessibility
- Jetpack Composeのアクセシビリティ機能
- マテリアルコンポーネントでのautoタッチターゲットサイズ設定
- Composeのセマンティックシステム
- UIのモデル化方法
- UIのモデル化方法
Google Wallet
- イベントチケット、搭乗券、ワクチンカードなど何でもGoogle Walletに保存できるようになった
- 以前のGooglePayPasses APIを進化させ、アイテムを簡単に保存できるようにした
- バックエンドを統合せずに、アプリから直接パスを保存できる
- 複数のパスをグループ化する機能もある
- 今までのPassAPIは機能するが、GoogleWalletアプリが出たら新しいWalletボタンに更新してください
Multi-device Development
- UWB、BLE、Wi-Fiを使って、マルチデバイスエクスペリエンスを可能にするソフトウェアスタックを構築
- cross-device APIは、接続部分を抽象化するため、ユーザーデバイスが何を利用可能か気にする必要がない
seamless sign-in across devices
- 複数デバイスでの認証
- 3つのAPIがある
- BlockStore
- セキュアでシンプルなAPI
- 以前にサインインしたことがあれば、新しいデバイスでsign-inフロー無しで使える
- OneTap
- ユーザーがアカウントを持ってなければ、OneTap APIで簡単にアカウントが作れてサインインできる
- クロスプラットフォーム、Webでも使える
- Passkeys
- passwordsをリプレース
- 暗号的に安全であるため、簡単に漏洩しない
- パスワードがパスワードマネージャーにバックアップされるのと同じ方法でパスキーがバックアップされ、Googleアカウントに同期される
- 新しい端末に引き継がれるので、ユーザーは端末のロック解除するだけ
Google Play
- コンソールの最新情報
- Vitals
- レポートAPIを提供
- データを抽出して独自のダッシュボードやワークフローを作れる
- 国ごとにフィルタ。問題がフォアグラウンドかバックグラウンドかが表示されるようになった
- Crashlyticsとの統合改善
- アプリをCrashlyticsにリンクしてPlayからの情報を表示できる
- VitalsデータをCrashlyticsで直接見れる
- IssueラベルをCrashlyticsと連携させ、両方での作業をしやすくした
- Prioritize
- 優先度付けしやすくした
- 他のアプリとの比較に加えて、デバイス、国、人口統計、収益で分類
- レポートAPIを提供
- デバイスカタログ
- 新しい動的フィルター追加
Acquisition, engagement, monetization
- Custom store listing wuith deep links
- ディープリンク付きのカスタムストアリスティングを利用可能に
- 50までカスタムストアリスティングを使える
- Engagement
- LiveOps(beta)
- Playストア全体でアプリ内コンテンツを表示。ユーザーエンゲージメントを促進できる
- LiveOps(beta)
- Monetization
- 最低価格を下げることで購入者のリーチを改善
- Subsctiptions
- 新しいオファーごとにSKUを追加する必要なしに、オファーの適格性と価格設定に関するオプションが増え、複雑さが軽減された
- 新しいオファーごとにSKUを追加する必要なしに、オファーの適格性と価格設定に関するオプションが増え、複雑さが軽減された
Wear OS
- Compose for Wear OSがBetaに
- Health Services
- フィットネスサービスを構築するのにHealth Services APIがどのように役立つかを説明
- ワークアウトトラッキング、定期的なモニタリング、指標の収集といった一般的なタスクにAPIを提供する
- 保存して、共有
Health Connect
- ユーザーは健康に関する情報を1箇所で確認したい
- GoogleFit、Fitbit、SamsungHealthを1つのAPIに統合
- ユーザー同意を得て、デバイス上のデータストアでread/writeを行う
- Jetpack Health API、今秋にリリース予定
Android TV, Google TV
- 4K UIのサポート
- 子供向け専用のコンテンツキュレーション
- Android12の改善点の要約
- パフォーマンスと品質を向上させる、Android13の改善を紹介
- Picture in Pictureサポート、ExpandedなPiP
Android for cars
- Car App Library
- すべてのマップテンプレートに、インタラクティブ性を追加
- 目的地を動的に更新
- 複数目的地
- 交通監視カメラのアラート
Android Development Tools
- BumbleBee、Chipmunkの主な機能の要約
- Dolphin、ErectricEelの新機能
Performance
- Dolphinに追加されたProfilerのジャンク検出
- Perfetto
- AndroidVitals
- AndroidStudio Profilerの再確認
- Macrobenchmark
- アプリの起動などのキーフローを計測する方法
- JankStats
- 市場で発生したjankyなフレームを報告する方法を説明
- Baseline Profiles