Upgrade to Pro — share decks privately, control downloads, hide ads and more …

What’s new in Android Jetpack and Tools

7166bc2cbc462ab5fd1987a76d0fe709?s=47 takahirom
June 20, 2021
240

What’s new in Android Jetpack and Tools

アニメーションなどはこちらから確認できるのでこちらからご覧ください。
https://docs.google.com/presentation/d/1oZ9JKsjIEiEb_jhAascpJHFUH9kD8RycGgY4RtgGkcM/edit#slide=id.ge0a6176be0_0_483

7166bc2cbc462ab5fd1987a76d0fe709?s=128

takahirom

June 20, 2021
Tweet

Transcript

  1. What’s new in Android Jetpack and Tools Jetpack and Tools

    1 takahirom(@new_runnable) Google Developers Expert for Android
  2. • What’s new in Jetpack • Measuring Jank and Startup

    with Macrobenchmark セッションの範囲 • What’s new in Android development tools • What's new in Android Gradle Plugin • What's new in Android testing tools • What's new in the Design tool Jetpack Tool 2
  3. 全てを紹介することは難しいので、 各セッションで話されていたテーマを箇条書きにして、 いくつか印象に残ったところをピックアップして紹介します。 また、調べたり、試したりして、動画にはない情報🕵も紹介します。 どう紹介するか 3

  4. What’s new in Jetpack Android Jetpack 4

  5. What’s new in Jetpack JetpackのBeta定義が変わっ た ライブラリのアップデート 5 今まではBetaではAPIの変更 はしなかったが、

    変更するようになった androidx.annotation:annotati on-experimentalが追加になっ た。 CameraX AppSearch Security Crypto Hilt WorkManager Room ConstraintLayout Fragment Navigation Google Shortcuts library EmojiCompat 2 Paging Macrobenchmark
  6. What’s new in Jetpack JetpackのBeta定義が変わっ た ライブラリのアップデート 6 今まではBetaではAPIの変更 はしなかったが、

    変更するようになった androidx.annotation:annotati on-experimentalが追加になっ た。 CameraX AppSearch Security Crypto Hilt WorkManager Room ConstraintLayout Fragment Navigation Google Shortcuts library EmojiCompat 2 Paging Macrobenchmark
  7. 7 https://developer.android.com/jetpack/androidx/versions/all-c hannel 6/16のAndroid Jetpackの変更内容より Alpha、Betaの更新が たくさん行われている

  8. 8 • 開発中 • APIは追加、変更、削除される • テストされており、ほぼ機能するは ず。 Alpha •

    機能の安定化 • APIの変更はしない • criticalな問題やコミュニティのフィー ドバックに対応するときにはAPIを変 更する → ベータの柔軟性が増えた Beta しかし成熟に長く時間が必要な機能もあ る
  9. APIが実験的な状態であることをユーザーに通知し、ユーザーがオプトインできる 仕組み これによってJetpackのライブラリがもっと早くStableになるようになる Experimental Annotation androidx.annotation:annotation-experimental 9

  10. 10 アノテーションの importを忘れると KotlinのOptInになっ てビルドに失敗する🕵 (Kotlin環境下)

  11. What’s new in Jetpack JetpackのBeta定義が変わっ た ライブラリのアップデート 11 今まではBetaではAPIの変更 はしなかったが、

    変更するようになった androidx.annotation:annotati on-experimentalが追加になっ た。 CameraX AppSearch Security Crypto Hilt WorkManager Room ConstraintLayout Fragment Navigation Google Shortcuts library EmojiCompat 2 Paging Macrobenchmark
  12. AppSearch ローカルに保存されている構造化データを管理するためのデバイス上の検索ライブラリ。 検索機能を構築するのに使用する。 androidx.appsearch:appsearch 12

  13. 13 AppSearch indexやクエリでI/Oの利用が 少ないので、大きなデータセッ トでも低遅延で動く 単一のクエリで複数のデータタ イプから取り出すことができる BM25Fのような関連性ランキン グ(relevance ranking)や使用

    スコア(usage score)が利用で きる 特徴 Android Sとのインテグレー ション Android S以降で他のアプリと 安全にデータを共有できる。 nativeライブラリに依存しなくて 良いのでアプリのサイズを減ら せる (まだJetpackでは利用できな い)
  14. 14 https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:appsearch/l ocal-storage/src/main/java/androidx/appsearch/localstorage/AppSearchImpl.java;l=78;drc =5663cbd3793780f86e41740f7e03926f678080f8 AppSearch https://android.googlesource.com/platform/external/icing/+/39ba960dd 31a8667dfb3a1cd6ec3dff52f6548ea 少しだけコードを見に行ったところ C++で書かれたライブラリを使っているもよう🕵

  15. 15 AppSearch 誰もGitHubなどにサンプルを上げていなかったので動くだけの サンプルを用意してみました🕵 (AOSPのAndroid Testしか見つからなかった) https://github.com/takahirom/app-search-sample 感想 意外と気軽に使えるので便利そう 現状、日本語では検索できないみたい?(issue立ててみました)

    https://issuetracker.google.com/issues/191286849 非同期処理の仕組みがGuavaに依存していそうなので、 kotlinx-coroutines-guavaを使ってあげると楽に利用できる
  16. What’s new in Jetpack JetpackのBeta定義が変わっ た ライブラリのアップデート 16 今まではBetaではAPIの変更 はしなかったが、

    変更するようになった androidx.annotation:annotati on-experimentalが追加になっ た。 CameraX AppSearch Security Crypto Hilt WorkManager Room ConstraintLayout Fragment Navigation Google Shortcuts library EmojiCompat 2 Paging Macrobenchmark
  17. 17 FragmentとNavigation マルチバックスタックへの対応 大規模なリファクタリングによりマルチバックスタックに対応 ボトムナビゲーションがある画面で使われる 基本的にはNavigation 2.4.0-alpha01とFragment 1.4.0-alpha01以降で BottomNavigationViewやNavigationRailViewとの 連携を利用するとデフォルトで有効に。

  18. 18 FragmentとNavigation マルチバックスタックへの対応 連携の中では以下のAPIが使われており、 Fragmentのバックスタックの保存、復元ができるようになった🕵 今のバックスタックの内容を保存 → FragmentManager#saveBackStack(id) バックスタックをidによりリストア →

    FragmentManager#restoreBackStack(id) from: https://medium.com/androiddevelopers/multiple-back-stacks-b714d974f134 Multiple back stacks saveBackStack(“notifications”) restoreBackStack(“profile”) ↓
  19. Measuring Jank and Startup with Macrobenchmark Android Jetpack 19

  20. Measuring Jank and Startup with Macrobenchmark Macrobenchmarkが何を解 決するか どのように動作するか 20

    • Analyticsからのフィードバッ クはすぐには得られない • 既存のAndroid Jetpack Benchmarkはマイクロベン チマークなので、スタートアッ プの時間などは測れない • 安定したベンチマークを取る のが難しい • どのように書くか • どのようなプロセスで行われ るか androidx.tracingライブラリを 使って trace("name") {...}でトレースで きる 独自のトレースポイントを追加 する
  21. 21 Macrobenchmark どのように書くか 以下のようなオプションを指定。 metrics = アプリの起動時間を見るの か、フレームを見るのか compilationMode =

    アプリがコンパイ ルされた状態から始まるのか startupMode = アプリがプロセスから 開始なのか、Activityの起動から開始 なのか
  22. 22 Macrobenchmark どのように書くか テスト中に行うことをブロックに 記述する。 Homeボタンを押して起動を行っている

  23. 23 Macrobenchmark どのように動作するか 実際に見てみる 中央値やパーセンタイルが表 示される。 またこのリンクに なってるところをクリック するとトレースも確認できる!

  24. 24 Macrobenchmark CIでどうやって検出するのか? Fighting regressions with benchmarks in CI (Android

    Dev Summit '19) https://www.youtube.com/watch?v=ynBPcFs6OOk Fighting regressions with Benchmarks in CI https://medium.com/androiddevelopers/fighting-regressions-with-benchmarks-in-ci-6ea9a14b5c71 Macrobenchmarkを利用する と、Jsonで結果が利用できる。 これをStep-fittingというアプ ローチで、前後のいくつか結果 の平均と分散(variance)を使っ てうまく検出する🕵 (過去のAndroid Developers の動画やブログで紹介されて いる)
  25. Macrobenchmark 導入方法 • モジュールを別に作ってそこにベンチマーク の処理を書いてそこからアプリを起動する • https://github.com/android/performance -samples にサンプルがある •

    DroidKaigiの公式アプリでも 試しに入れてみたので、差分だけ見たい方 はどうぞ🕵 • https://github.com/DroidKaigi/conferenc e-app-2021/pull/476
  26. What’s new in Android development tools 26 Tools

  27. What’s new in Android development tools 各バージョンのAndroid Studioの新機能と命名規則に ついて 3つのテーマ

    27 • 4.1 • 4.2 • Android Studio Arctic Fox 2020.3.1 (バージョンの命名 の変更) • Android Gradle Plugin :7.0.0 (バージョンの命名の 変更) • 迅速なUIデザイン ◦ Composeのための機能 ◦ ... • 新しいデバイス。大きな端末も小さな端末も ◦ フォルダブル、AndroidTV、WearOSへの対応 (別にイベント があるのでスキップ) ◦ ... • 開発者の生産性の向上 ◦ WorkManager Inspector ◦ Migrate to Non-Transitive R Classes… ◦ ...
  28. What’s new in Android development tools 各バージョンのAndroid Studioの新機能と命名規則に ついて 3つのテーマ

    28 • 4.1 • 4.2 • Android Studio Arctic Fox 2020.3.1 (バージョンの 命名の変更) • Android Gradle Plugin :7.0.0 (バージョンの命名の 変更) • 迅速なUIデザイン ◦ Composeのための機能 ◦ ... • 新しいデバイス。大きな端末も小さな端末も ◦ フォルダブル、AndroidTV、WearOSへの対応 (別にイベント があるのでスキップ) ◦ ... • 開発者の生産性の向上 ◦ WorkManager Inspector ◦ Migrate to Non-Transitive R Classes… ◦ ...
  29. 新しいAndroid Studioの命名規則 29 Arctic Fox 2020.3.1 ベースとなっている IntelliJのバージョン codename。ABC順 新しいバージョンが分かる

    Android Studioの メジャーバージョン
  30. 新しいAndroid Gradle Pluginのバージョン規則 30 7.0.0 Gradle 7.xと動作することを 意図している Android Studioの命名規則から切り離されて7.0.0に。

    こちらはセマンティックバージョニングを採用している。
  31. What's new in Android development tools 各バージョンのAndroid Studioの新機能と命名規則に ついて 3つのテーマ

    31 • 4.1 • 4.2 • Android Studio Arctic Fox 2020.3.1 (バージョンの命名 の変更) • Android Gradle Plugin :7.0.0 (バージョンの命名の 変更) • 迅速なUIデザイン ◦ Composeのための機能 ◦ ... • 新しいデバイス。大きな端末も小さな端末も ◦ フォルダブル、AndroidTV、WearOSへの対応 (別にイベント があるのでスキップ) ◦ ... • 開発者の生産性の向上 ◦ WorkManager Inspector ◦ Migrate to Non-Transitive R Classes… ◦ ...
  32. What's new in Android development tools 迅速なUIデザイン 32 Jetpack Compose

    Live Literalによって 文字列などの変更がすぐに見られる Enable literal decorationsで 対応できるところを明示できる Peview Emulator Code
  33. What's new in Android development tools 迅速なUIデザイン 33 • ライトテーマやダークテーマの確認が@Preview

    を使うことでかんたんにできる • プレビューの左の歯車(Gutter icon)からかんた んに設定を変更できる。 • アニメーションのPreviewが表示でき(Animation inspector)、速度を落としてアニメーションを再生 できる。 • 他にもComposeのConstraintLayoutの プレビューができたり、プレビュー上でクリックす ると その要素に飛べたりたくさんの機能がある。
  34. What's new in Android development tools 迅速なUIデザイン 34 • ライトテーマやダークテーマの確認が@Preview

    を使うことでかんたんにできる • プレビューの左の歯車(Gutter icon)からかんた んに設定を変更できる。 • Interactive mode • アニメーションのPreviewが表示でき (Animation inspector)、速度を落としてアニ メーションを再生できる。 • 他にもComposeのConstraintLayoutの プレビューができたり、プレビュー上でクリックす ると その要素に飛べたりたくさんの機能がある。
  35. What's new in Android development tools 35 いくつかの機能はPreferences | Experimentalを開いて有効にしないといけない機能もあるので注意

    🕵 (最初見つけられなくてハマった)
  36. What's new in Android development tools 各バージョンのAndroid Studioの新機能と命名規則に ついて 3つのテーマ

    36 4.1 4.2 Android Studio Arctic Fox 2020.3.1 (バージョンの命名の 変更) Android Gradle Plugin :7.0.0 (バージョンの命名の変更) • 迅速なUIデザイン ◦ Composeのための機能 ◦ ... • 新しいデバイス。大きな端末も小さな端末も ◦ フォルダブル、AndroidTV、WearOSへの対応 (別にイベント があるのでスキップ) ◦ ... • 開発者の生産性の向上 ◦ WorkManager Inspector ◦ Migrate to Non-Transitive R Classes… ◦ ...
  37. Migrate to Non-Transitive R Classes 37 • Android StudioでNon-Transitive R

    Classesに 移行するリファクタリングが追加になった。 Non-Transitive R Classesとは? Android Studioの機能
  38. Non-Transitive R Classesとは 38 マルチモジュールでの環境では、 ライブラリのRクラスがマージされていくのでリソースの重複がおこり、 これがビルド時間などに影響する。 これをライブラリのRクラスを直接見るようにすることで、 マージしないようにできる。 大規模なアプリだとRクラスのフィールドの数が1万を超えることも。

    Transitive R Class Non Transitive R Class
  39. Migrate to Non-Transitive R Classes 39 Android Gradle Pluginには昔から android.namespacedRClassという名前であった機能🕵

    Androidでは有名なエンジニアの Jake Whartonさんも褒めていた。 (19% フィールドを少なくできたそう) Non-Transitive R Classesとは? https://twitter.com/JakeWharton/status/1032396431787794432 より https://developer.android.com/studio/releases/gradle-plugin?hl=lt&skip_cache=true#4-1-0 より
  40. Migrate to Non-Transitive R Classes 40 移行ソースコード DroidKaigiの公式アプリでも試しに入れてみたので、ど んな差分か見たい方はどうぞ🕵 移行するときには

    Rクラスが重複することになるので Kotlinだとうまくimport aliasを駆使すると良い (そこまでは移行してくれない) https://github.com/DroidKaigi/conference-app-2021/pull/508
  41. What's new in Android Gradle Plugin 41 Tools

  42. What's new in Android Gradle Plugin 新機能の紹介 Variant API 42

    • Configuration caching • Non-transitive R classへの 対応でLintが追加になった • Lintがモジュールごとに キャッシュされるように • ドキュメントが利用可能に ◦ https://developer.androi d.com/reference/tools/g radle-api 動的な動作のための androidComponents DSLが 追加され、 そこでvariantに対して、より柔 軟な設定ができるようになった Legacy Transform APIは柔軟 性に優れていたが、複雑だった パフォーマンスが高く、もっとか んたんに利用できる ASM API
  43. What's new in Android Gradle Plugin 新機能の紹介 Variant API 43

    • Configuration caching • Non-transitive R classへの 対応でLintが追加になった • Lintがモジュールごとに キャッシュされるように • ドキュメントが利用可能に ◦ https://developer.androi d.com/reference/tools/g radle-api 動的な動作のための androidComponents DSLが 追加され、 そこでvariantに対して、より柔 軟な設定ができるようになった Legacy Transform APIは柔軟 性に優れていたが、複雑だった パフォーマンスが高く、もっとか んたんに利用できる ASM API
  44. What's new in Android Gradle Plugin Configuration caching 44 Configuration

    phaseのTask Treeなどの情報を キャッシュでき、かなりビルド時間が短縮できる ./gradlew --configuration-cache <task> を走らせると、configuration cacheに問題があれば 問題があるプラグインなどをhtmlレポートで教えてくれる 🕵 org.gradle.unsafe.configuration-cache=true 上記をgradle.propertiesで宣言すると常に有効になる https://youtu.be/AZBW5StgF8o?t=40
  45. What's new in Android Gradle Plugin Configuration caching 45 DroidKaigiの公式アプリで

    ./gradlew --configuration-cache assembleDebug して表示されたレポート Kotlin NativeとLicense pluginがひっかかった模様。 License pluginのほうは対応されているみたい。 https://youtrack.jetbrains.com/issue/KT-43293
  46. What's new in Android Gradle Plugin 新機能の紹介 Variant API 46

    • Configuration caching • Non-transitive R classへの 対応でLintが追加になった • Lintがモジュールごとに キャッシュされるように • ドキュメントが利用可能に ◦ https://developer.androi d.com/reference/tools/g radle-api 動的な動作のための androidComponents DSLが 追加され、 そこでvariantに対して、より柔 軟な設定ができるようになった Legacy Transform APIは柔軟 性に優れていたが、複雑だった パフォーマンスが高く、もっとか んたんに利用できる ASM API
  47. What's new in Android Gradle Plugin Variant API 47 Variant関連のAPIを作り直してより柔軟に設定できるようになった。

    onVariant() {}ではGradleのProvider/Propertyを使うAPIが追加されている そもそもGradleのProvider/Propertyとはなにか? From: https://youtu.be/AZBW5StgF8o?t=340
  48. What's new in Android Gradle Plugin GradleのProvider/Propertyとはなにか? 今までのやり方が何が問題だったのか🕵 48 •

    Gradleのビルドの中のプロパティの値がいつ利用できるようになるのかよく分からない。 ◦ 例: とりあえずproject.afterEvaluate{} 呼んだり、タスクに依存してみたりしている。 • タスクの依存関係を設定しつつ、outputFileとinputFileなどをつなげる必要がある。 ◦ 例: 設定がうまくいかず、うまく取得できなかったりする。 • Configuration phaseでファイルを読み込んだりして、タスクに設定するとConfiguration phaseが重たく なる。 ◦ 例: Version nameに設定するためにgitコマンドからバージョンとったり。。 でもcleanのときには必要ないタスクもある。 これをLazy Configuration = Provider/Propertyで解決できる。 https://docs.gradle.org/current/userguide/lazy_config uration.html#lazy_properties より
  49. What's new in Android Gradle Plugin 今までのやり方 49 タスク同士がdependsOnで繋げる方法 From

    Gradle properties to AGP APIs (Android Dev Summit '19) https://youtu.be/OTANozHzgPc?t=328 これからのやり方 GradleのProvider、Propertyというのをタス クに宣言しておき、それでつなげることで Lazy Configurationが使える!
  50. What's new in Android Gradle Plugin Variant API 50 右の例ではVariant

    APIの onVariants{} を利用して、 ファイルに文字列を書き出し、 それを利用して applicationIdを設定している What’s new in Android Gradle plugin https://youtu.be/AZBW5StgF8o?t=379
  51. What's new in Android Gradle Plugin ASM API 51 コード変換を行うAPI

    Transform APIは柔軟性に優れていたが、複雑だった AGP 4.2にバイトコード変換専用の新しいAPIが追加された コードを少なくでき、ビルド速度も速くなる。 https://github.com/android/gradle-recipes で サンプルコードが利用できる Android Code Searchで検索したところすでにDagger Hiltの コード生成で利用されているようだった🕵 https://cs.android.com/search?q=AsmClassVisitorFactory What’s new in Android Gradle plugin https://youtu.be/AZBW5StgF8o?t=562
  52. What's new in Android testing tools Tools 52

  53. What's new in Android testing tools GradleとAndroid Studioのテ ストランナーの統合 Unified

    Test Platform (UTP) 53 同じテスト環境で実行されるよ うになった テストを大規模に実施するための拡張可能な テスト実行のための仕組み テストで失敗した時のEmulator のスナップショットが利用できる Test retention Gradle Managed Devices Gradleでエミュレーター を管理できる Test Matrix 複数の端末でテストを 並行に実行できる
  54. What's new in Android testing tools GradleとAndroid Studioのテ ストランナーの統合 Unified

    Test Platform (UTP) 54 同じテスト環境で実行されるよ うになった テストを大規模に実施するための拡張可能な テスト実行のための仕組み テストで失敗した時のEmulator のスナップショットが利用できる Test retention Gradle Managed Devices Gradleでエミュレーター を管理できる Test Matrix 複数の端末でテストを 並行に実行できる
  55. What's new in Android testing tools GradleとAndroid Studioのテストランナーを統合 55 今までAndroid

    Studio上で実行したときとGradle上で実行したとき で結果が異なる場合があった From: https://developer.android.com/studio/preview/features#automated-test-snapshots 同じGradle Test Runnerで実行するように Android Studio Arctic Fox : Unit Testでの統合 Android Studio Bumblebee : Instrumentation Testでの統合 (Android Studio上で設定が必要) Android Studio上で結果が確認できる。
  56. What's new in Android testing tools GradleとAndroid Studioのテ ストランナーの統合 Unified

    Test Platform (UTP) 56 同じテスト環境で実行されるよ うになった テストを大規模に実施するための拡張可能な テスト実行のための仕組み テストで失敗した時のEmulator のスナップショットが利用できる Test retention Gradle Managed Devices Gradleでエミュレーター を管理できる Test Matrix 複数の端末でテストを 並行に実行できる
  57. What's new in Android testing tools Unified Test Platform (UTP)

    57 旧称 Nitrogen テストを大規模に実施するための拡張可能な テスト実行のための仕組み プラグインのモジュールによって 拡張が可能になっている。
  58. What's new in Android testing tools GradleとAndroid Studioのテ ストランナーの統合 Unified

    Test Platform (UTP) 58 同じテスト環境で実行されるよ うになった テストを大規模に実施するための拡張可能な テスト実行のための仕組み テストで失敗した時のEmulator のスナップショットが利用できる Test retention Gradle Managed Devices Gradleでエミュレーター を管理できる Test Matrix 複数の端末でテストを 並行に実行できる
  59. What's new in Android testing tools 59 GradleのDSLで管理する テスト中に仮想デバイスのイ メージのダウンロード、デバイ

    スの作成シャットダウン、 キャッシュまでGradleが管理 する testOptionsに右のように 記述 Gradle Managed Devices ./gradlew -Pandroid.experimental.androidTest.useUnifiedTestPlatform=true pixel2api29DebugAndroidTest
  60. What's new in Android testing tools GradleとAndroid Studioのテ ストランナーの統合 Unified

    Test Platform (UTP) 60 同じテスト環境で実行されるよ うになった テストを大規模に実施するための拡張可能な テスト実行のための仕組み テストで失敗した時の Emulatorのスナップショットが 利用できる Test retention Gradle Managed Devices Gradleでエミュレーター を管理できる Test Matrix 複数の端末でテストを 並行に実行できる
  61. What's new in Android testing tools 61 UTPによる機能。 テストで失敗した時のEmulatorのスナップショットが利用できる Test

    retention
  62. None
  63. None
  64. テスト結果のフォルダに 大きいスナップショットファイルが保存される

  65. テスト結果のフォルダにあったtest-result.pbのprotobufファイルをインポートできる

  66. None
  67. None
  68. What's new in Android testing tools UTPがどう拡張可能になっているのか プラグインの仕組みを少しだけ見てみる🕵 68 https://cs.android.com/android-studio/platform/tools/base/+/mirror-goog-studio-main:build-system/gradle-core/src/main/java/com/android/build/gradle/internal/testing/utp/UtpConfigFactory.kt;l=310-333;drc=2d2dacf249752a1e382b9b1ea47940ef1c10bea1

    どうやらHostPluginというinterfaceがあり、 それを実装することによってプラグインを作ること ができるようで、 それによってTest retention (コード上はIcebox)な どさまざまな実装がされており、拡張可能になって いそうでした。
  69. What's new in design tools Design & Tools 69

  70. What's new in the Design tool ツール系新機能 ConstraintLayout & MotionLayout

    70 • Accessibility integration • Layout Validation • Motion Editor • Layout Inspector • AVD Preview ConstraintLayout 2.0 • Flow virtual layoutで複雑な画面が 作れるように • Companion Motion Editor ConstraintLayout 2.1 • Baseline constraintの指定方法や マイナスのmargin指定などの新し い機能の追加 • Carousel • MotionEffect • など ConstraintLayout in Compose • ConstraintSetを抜き出すことがで きる。 MotionLayout Light ComposeでMotionLayoutができるも の(未完成) Composeのプレビューの機能 Compose ConstraintLayout
  71. What's new in the Design tool ツール系新機能 ConstraintLayout & MotionLayout

    71 • Accessibility integration • Layout Validation • Motion Editor • Layout Inspector • AVD Preview • ConstraintLayout 2.0 • Flow virtual layoutで複雑な画面が 作れるように • Companion Motion Editor ConstraintLayout 2.1 • Baseline constraintの指定方法や マイナスのmargin指定などの新し い機能の追加 • Carousel • MotionEffect • など ConstraintLayout in Compose • ConstraintSetを抜き出すことがで きる。 MotionLayout Light ComposeでMotionLayoutができるも の(未完成) Composeのプレビューの機能 Compose ConstraintLayout
  72. What's new in the Design tool ヘルパーオブジェクトの追加 72 Carousel 非常に複雑な外観を持つインパクトが大きい美しい

    アニメーションをかんたんに作成できる ほとんどプログラミングする必要がない
  73. What's new in the Design tool ヘルパーオブジェクトの追加 73 MotionEffect MotionLayoutで利用できるヘルパー

    オブジェクト アニメーションの動く 方向を単方向に制限することで 快適なイメーションを作れる MotionEffectなし MotionEffectあり
  74. What's new in the Design tool ツール系新機能 ConstraintLayout & MotionLayout

    74 • Accessibility integration • Layout Validation • Motion Editor • Layout Inspector • AVD Preview • ConstraintLayout 2.0 • Flow virtual layoutで複雑な画面が 作れるように • Companion Motion Editor ConstraintLayout 2.1 • Baseline constraintの指定方法や マイナスのmargin指定などの新し い機能の追加 • Carousel • MotionEffect • など ConstraintLayout in Compose • ConstraintSetを抜き出すことがで きる。 MotionLayout Light ComposeでMotionLayoutができるも の(未完成) Composeのプレビューの機能 Compose ConstraintLayout
  75. What's new in the Design tool ConstraintLayout in Compose 75

    Composeの ConstraintLayoutに機能が増 えているので、 ちょっと基本的なところから見 ていきます。
  76. ConstraintLayout in Compose 76 constrainAsで制約を書くこと で 画像のようにレイアウトを書くこ とができる

  77. ConstraintLayout in Compose 77 レイアウトの制約(ConstraintSet)をレ イアウトと 分離して書くことができる

  78. ConstraintLayout in Compose 78 このConstraintSet(レイアウト の制約)はjsonから作ることが できる。 (サーバーから取得した値とか も使えるかも??)

  79. MotionLayout Lite🕵 79 Composeで、 MotionLayoutを使って ConstraintSetを2つ作って progressを渡すことで、 間をアニメーションさせることが できる。 (このスライドを書いている時ま

    だ未リリース) GitHubのコードにはマージ済 み
  80. What's new in the Design tool 80 ConstraintLayoutのリポジトリに CarouselやMotionEffectや MotionLayout

    Liteなどを 試せるプロジェクトが置いてある🕵 https://github.com/androidx/constraintlay out ConstraintLayoutのリポジトリにい ろんなサンプルが🕵
  81. Summary 81 What’s new in Jetpack Measuring Jank and Startup

    with Macrobenchmark What’s new in Android development tools What's new in Android Gradle Plugin What's new in Android testing tools What's new in the Design tool Jetpack Tool 下記のJetpackとToolについてと、 試してみて発見したことなどを見ていき ました🕵
  82. 82 And so much more...

  83. Thank you! 83 takahirom(@new_runnable) Takahiro Menju Google Developers Expert for

    Android CyberAgent, Inc. ABEMA DroidKaigi App Owner