🚀

[Google I/O 2021 メモ]What's new in Jetpack

2021/05/23に公開

動画

https://youtu.be/xeQ9faYJktM

  • 昨年からJetpackの導入が進み、top1000アプリのうち2020->47%appsだったのが2021->79%appsになっている

Jetpack & Versioning

  • Jetpackライブラリは大きのアルファ版リリースをしている
  • いくつかの変更を加えた
  • アルファ版は変わらず、機能は不十分だがテストはされている
  • 安定版のためにベータに移行するが、ここに変更がある。
  • クリティカルな問題やコミュニティフィードバックによって、APIの変更もありえる
  • より早くベータに達するが、機能によっては時間が必要なものもある
  • 新しいメタデータとツールを導入した
  • 実験的な機能を呼び出すときには明示的にannotationを付ける必要がある
  • Kotlinを使っている人にはおなじみの@OptIn
  • OptInとは開発者が理解して使っていることを意味する。APIがアルファであり、将来変更される可能性があることを。
  • 機能が安定するとannotationを削除することができる

CameraX

  • 統合されたAPI Sarfaceを提供する
  • Device固有やOSバージョンへの互換性を持つ
  • 露出補正、CameraのState/Featureへのアクセスサポート
  • FPS範囲などのカメラ設定、Camra2との相互運用性
  • 最新のデバイスと、OSサポートを提供
    • HDRプレビュー
    • Zoom比コントロール
    • サイレントモードへの対応
  • パフォーマンス改善
    • 画像キャプチャを15%高速化
    • 起動の高速化(特に古いデバイスで)
  • 堅牢なアプリケーション設計をサポートするために、最新のアルファバージョンでは、CameraViewからCameraControllerを分割した
    • ズームなどカメラ機能との相互作用を提供する
  • PreviewView
    • レンダリングを担当
    • AndroiViewシステムとの統合
  • 画像分析と追加のキャプチャオプションもある

AppSearch

  • 高機能な全文検索 
  • Fuzzy matching(あいまい検索)を簡単に実行できる
  • 同義語とスペル修正の処理
  • 複数言語のサポート
  • データ表現を簡素化する
  • AndroidS以降で使えるschema.orgをデバイス横断の検索に使える

DataStore

  • シンプルで使いやすいAPIを維持しながら、SharedPreferencesの欠点を補う
  • データモデルを提起するための複数の方法を提供
    • ゆるく紐付けされたKey-Valueストア。既存のSharedPreferenceに似ている形
    • プロトコルバッファを使用した厳密に型指定された形
  • なぜ移行する必要があるか?
    • SharedPreferencesは小さなアプリでは問題なく動作するが、データストアは型安全性/非同期操作/エラー処理に関する強力な保証がある
    • データ移行などの便利な機能もある
  • SharedPreferncesから基本的なKey-Valurデータストアへの移行はシンプル
    • SharedPreferenceMigrationオブジェクトを利用してDataStoreを作成する

Security Cripto

  • ファイルと設定を暗号化する簡単な方法を提供
  • 将来はDataStoreとの統合も予定されている
  • SharedPreferencesを暗号化するにはEncreptedSharedPreeferenceを使う
  • 適切なKeyとSchemeを利用
  • 標準のSharedPreferenceと同じように使用する

Hilt

  • ViewModelサポートはcore Hiltへ移動
  • SavedStateHandleがデフォルトの依存関係として追加
  • ActivityやFragmentなどのAndroidEntryPointから、@HiltViewModelを使うことができる
  • Navigationを対象とするViewModelを取得することができる(by hiltNavGraphViewmodels())
  • WorkManagerとの統合改善
    • @AssistedInjectを利用
    • Workerパラメータを手動で渡さなくてよくなる
    • ボイラープレートコードをかなり削減することができる
  • Test
    • @TestInstallIn
    • テスト用の依存注入ができる

WorkManager

  • 延期可能な非同期タスクをスケジュール
  • アプリ終了したり、デバイスが再起動しても実行される
  • すべてのタスクが確実に実行される
  • 特定のAndroidOSバージョンで起きる問題に対応
  • マルチプロセスアプリのサポート改善
    • 多くのリクエストをスケジュールする際にSingle Processにスケジューリングしデータベース使用量を削減
  • Version2.7ではAndroidSのフォアグラウンド制限に対応
  • Studio ArcticFoxでWorkManagerInspectorが利用可能に

Room

  • データ永続化レイヤー
  • Kotlin Symbol Processing(KSP)サポート
    • ベンチマークではkaptより200%速度が向上
  • enumとRxJava3の組み込みサポート
  • QueryCallback
    • SQL実行のコールバックを提供
    • ロギングなどがしやすくなる
  • @ProvidedTypeConverter
    • TYpeConverterを作成するときにより柔軟性を可能にする
    • 以前がstaticメソッド、引数なしのコンストラクタ、ビルド時の検証が必要だったが、@ProvidedConverterを使うと実行時にTypeConverterを構築できる

ConstraintLayout

  • 2.0に達した
  • MotionLayoutはstableに
  • MotionLayout
    • コード不要のアニメーション作成
    • foldable devicesサポート
    • 画像フィルターやモーションエフェクトのサポート
    • Studioのモーションエディタ
      • What's new in design toolsで詳しく

Fragment

  • 内部実装とドキュメント化されていない挙動の削減に努力した
  • ActivityResult integration
    • フラグメントからActivityResultへの登録を可能に
  • FragmentOnAttachListener導入
    • onAttachFragmentを置き換える
    • onAttachFragmentは非推奨に

Navigation

  • Multiple Backstack support
    • BottomNavigationを使用する際にシンプルになる

Google Shortcuts

  • アシスタントや他のGoogleProductsにアクションを公開
  • 既存のShortcutInfoクラスを経由
  • ShortcutManagerを介して、最大15個のショートカットを送信可能。Googleアシスタントに表示される
  • appCapabilityBindingを利用してGoogleサービスが理解するのに役立つ情報を登録する

EmojiCompat

  • 新しいメジャーバージョン
  • AppCompat1.4以降を入れてるアプリではEmojiCompatを自動的にプルし、新しい絵文字を動的に読み込む。最新のUnicode仕様の読み込み
  • AppCompatを使ってないアプリではEmojiCompatTextViewを利用することでプラットフォームTextViewの代わりにそれを使うことができる

Paging

  • メジャーバージョン3.0
  • Kotlinで完全書き直し
    • coutines and Flow
    • RxJavaと Guava primitiveを使用した非同期ロード
    • presentionとrepositoryレイヤーの改善

Macrobenchmark

  • Jetpackのbenchmarkを拡張
  • app startupとscrollのような挙動のパフォーマンス測定
  • リモートではCIテストで使用可能、ローカルではAndroidStudioで表示可能な結果を出力
  • 詳しくは、Measuring Jank and Startup with Macrobenchmarkを参照

Compose integrations

  • JetpackとNavigation, ConstraintLayoutなどとの統合
  • Using Jetpack Libraries in Composeを参照

Form factors

  • Foldable, Large Screens, Wear Devices
  • それぞれ別の動画があるのでそちらを参照

Discussion