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

DroidKaigi 2023 Unleashing the Power of Android Studio

mhidaka
September 14, 2023

DroidKaigi 2023 Unleashing the Power of Android Studio

知っていると役に立つ、アプリ開発の問題を解決する、あなたの知らないAndroid Studioの真の力を解き放ちましょう!

現在のアプリ開発はJetpack Composeの登場により新しい変化を迎えつつあります。一方で、たくさんの技術を組み合わせて動くことから、
効率的な開発や変化への追従が難しいと感じる方も多いのではないでしょうか。
セッションではAndroid Studioの最新機能を使ったデバッグ手法や生産性向上テクニックを紹介します。
開発者個人の生産性向上やチーム開発を加速する機能や手法についても触れるため初学者から業務利用者まで幅広い開発者を対象とします。

- プログラミングの生産性を向上するAndroid Studioの最新機能紹介
- 不具合につまずかないアプリ開発のためのデバッグ手法
- パフォーマンスと品質を両立するツール活用
- チーム開発をスムーズにするプロジェクト、IDE運用術

セッションは発表時点での最新バージョンのAndroid Studioを利用します(セッション応募時はAndroid Studio Hedgehogですが、これより新しいバージョンを利用する場合があります)

mhidaka

September 14, 2023
Tweet

More Decks by mhidaka

Other Decks in Technology

Transcript

  1. A Brief History of Android Studio Android Studio Electric Eel

    | 2022.1.1 Android Studio Flamingo | 2022.2.1 Android Studio Giraffe | 2022.3.1 Android Studio Hedgehog | 2023.1.1 Android Studio Iguana | 2023.2.1 E F G H I
  2. Android Studio - Stable Release Timeline Electric Eel 2023.1 Giraffe🦒

    2023.7 Flamingo🦩 ※Stable リリース日を基準として(筆者調べ) 2023.4
  3. 2023 . 2 . 1 バージョンの読み方 Android Studio Iguana IntelliJ

    年次とmajorバージョン Studio mejorバージョン <Year of IntelliJ Version>.<IntelliJ major version>.<Studio major version>
  4. Android Studioを構成する主要機能 Android Studioの新機能をカテゴライズして理解することで活用を促進 • IntelliJ : 統合開発環境として使いやすく。 • UI

    Tools : コードを素早く、生産性を向上。 • Build : ビルドを効率的に、無駄を排除。 • Inspect : 不具合を減らし、高品位に。 6
  5. 診断ツールとバグレポート 新しいバグ報告ツールの登場 Help > Collect Logs and Diagnostic Data ログやシステム情報が

    添付された状態での 報告が可能 Android Studio(IDE)の 改善スピード向上が目的 9 Giraffe
  6. Android StudioにJDK 17がバンドル Flamingo Canary 3以降、Android Studio IDEにバンドルされるJDKが17に変更 • FlamingoでのビルドがAndroid

    Gradle Plugin 8.0へ更新されたことに起因 ◦ Electric EelまではAndroid Gradle Plugin 7.4でJDK11を利用 • Android StudioにバンドルされたJDKを使うプロジェクトの場合、移行でビルドが 壊れる ◦ Flamingo以上で動くようにプロジェクトを修正するべきだが、旧来の AGP 7.4(Gradle 7.4)もサ ポートしようと思ったら JVM指定に変更が必要。いわゆる「最新の Android Studioでしかビルドで きません」状態。 10 Flamingo
  7. macOSのMetal APIに対応 Android Studio Flamingo以降ではmacOSのMetal APIに対応。レンダリング パ フォーマンスが向上しています。 • IntelliJ

    2022.2プラットフォームでの更新内容を取り込み。定期的な追従を可能に している。 • その他にも ◦ Android Gradle Plugin 8.0(Gradle 8.0)に移行 ◦ Kotlinでコード ハイライト、補完、使用箇所の検索などのパフォーマンス向上 11 Flamingo
  8. Note. Android Studio Versionと AGPの関係性 利用可能な最新に合わせると良いことが多い 12 AS version Recommend

    AGP (Gradle version) Iguana 8.3 (3.2-8.3)? Hedgehog 8.2 (3.2-8.2) Giraffe 8.1 (3.2-8.1) Flamingo 8.0 (3.2-8.0) Electric Eel 7.4 (3.2-7.4) https://developer.android.com/studio/releases より(筆者作図)
  9. Live EditがComposableに対応 Live Editがコンポーザブルの リアルタイム更新に対応 • Live Editはアプリの再デプロイ をしなくても変更内容を反映で きる機能

    • コンポーザブルの変更にも対応 し、実行中のデバイス上で UIを すぐに確認できる 14 Giraffe https://android-developers.googleblog.com/2023/07/android-studio-giraffe-is-stable.html Android Gradle Plugin (AGP) 8.1 or higher and Jetpack Compose Runtime 1.3.0 or higher.
  10. Live Editの利用方法 Settings > Editor > Live Edit > enable

    15 Giraffe (Stable) Flamingo (Experimental) https://developer.android.com/jetpack/compose/tooling/iterative-development#limitations
  11. デバイス・ミラーリング HedgehogからはRunning Devices windowに統合表示 • 実機に触れずに IDEから操作できて便利 • あまり知られてないが ファイルのドラッグ&ドロップが可能。

    ファイルがAPKの場合はインストール。 その他の場合デバイスのダウンロード フォルダにコピーされる仕様。 16 Hedgehog Electric Eel (Experimental) https://developer.android.com/studio/preview/features#device-mirroring
  12. Dynamic color Preview Material 3のLook & Feelを 確認できるプレビュー機能 18 Flamingo

    https://android-developers.googleblog.com/2023/04/android-studio-flamingo-is-stable.html Themed app icon Preview
  13. Compose Animation Previewでの新しいAPIサポート Animatiion PreviewがExtend animationに対応 • animate*AsState • CrossFade

    • rememberInfiniteTransition • AnimatedContent (updateTransitionとAnimatedVisibility含) 多くのCompose API をサポート。Composeアニメーション をデバッグできる新しいピッカーも追加 19 https://android-developers.googleblog.com/2023/07/android-studio-giraffe-is-stable.html Giraffe
  14. Firebase Test Lab devices with Gradle Managed Devices Gradle Managed

    DevicesでFirebase Test Labのデバイスを使った自動インスト ルメント化テストが実行できるように。AGP 8.2.0-alpha03以降が必要。 大規模なテスト自動化、ビルドシステムとの統合による安定化、管理の完全性というメ リットを訴求。 20 Hedgehog https://developer.android.com/studio/preview/features#ftl-gmd Read more : Android Developers Scale your tests with Gradle Managed Devices
  15. Build ビルドタイムをもっと短く • Improved Sync • Build Analyzer • SDK

    Upgrade Assistant • Kotlin DSL Gradle Script • Version Catalog • and more 21
  16. Note. Android Studioは ”統合”開発環境 Android Studio Giraffeに対応したプロジェク トと言った時、2種類に分類できる。 • Giraffeで起動可能なプロジェクト

    • Giraffeで扱える最新ビルド環境に更新し たプロジェクト GifaffeならGradle 8.1やAGP 8.1、Compose Runtimeライブラリなどのバージョン要件を満た すことで最大の効果を発揮 23 https://developer.android.com/studio/releases より(筆者作図)
  17. ビルド時間を計測するBuild Analyzer Build Analyzerはビルドが遅い問題を解決するためのツール • Electric Eel: ダウンロードの影響度合いを可視化 • Flamingo:

    ビルドプロセスのカテゴリ表示 • Giraffe: Gradle Sync中の予期しない依存関係ダウンロードの可視化 24 Electric Eel Flamingo Giraffe https://android-developers.googleblog.com/2023/01/android-studio-electric-eel.html https://android-developers.googleblog.com/2023/04/android-studio-flamingo-is-stable.html https://android-developers.googleblog.com/2023/07/android-studio-giraffe-is-stable.html
  18. Android SDK Upgrade Assistant targetSdkVersionのアップグレードに必要な手順 を IDE の中で確認できる機能。アプリのメンテナンス の手間を省力化 •

    Tools > Android SDK Upgrade Assistant • アップグレード対応のドキュメント参照、破壊的 変更と対応方法などツールウインドウ内での確 認が可能に 28 Giraffe https://android-developers.googleblog.com/2023/07/android-studio-giraffe-is-stable.html
  19. Gradle Build ScriptのKotlin DSL対応 Android Studio GiraffeからKotlin DSLがビルドスクリプトのデフォルトに変更 • build.gradleがbuild.gradle.ktsに変更

    ◦ ビルドツールのGradle 8.2でのデフォルトはKotlin DSLに置き換え済み ※GiraffeはGradle 8.1なので時差があるものの方向性は一致 • 可読性やコンパイル時チェック、Lintサポートなどがメリット ◦ アプリと周辺環境の両方が Kotlinだけを覚えることで整う状況が望ましい(初学者やアプリ開発者 の習熟曲線がよい) 29 Giraffe https://android-developers.googleblog.com/2023/07/android-studio-giraffe-is-stable.html https://blog.gradle.org/kotlin-dsl-is-now-the-default-for-new-gradle-builds
  20. Gradle Version Catalog対応 依存関係を 1 か所で管理し、マルチモジュールやプロジェクト間で依存関係を共有でき る機能。ウィザードでのデフォルトに。 • HedgehogではTOMLファイルのVersion Catalog内でもコード補完(⌘+Space)および依

    存関係の参照(⌘+B)が有効化 • build.gradleファイルからもVersion Catalog内の宣言位置にジャンプ可能 30 Giraffe (Experimental) Hedgehog (Stable) https://android-developers.googleblog.com/2023/07/android-studio-giraffe-is-stable.html https://developer.android.com/studio/preview/features#gradle-version-catalogs Read more : Android Developers Migrate your build to version catalogs
  21. Baseline Profilesモジュールのウィザード File > New > New Module > Baseline

    Profile Generator モジュール ウィザードがベースラインプロ ファイルに対応。 アプリ起動を早くするためのプロファイル作 成が楽に(雛形の提供)。 32 Iguana https://developer.android.com/studio/preview/features#baseline-profiles-module-wizard
  22. Network Inspector traffic interception 35 Flamingo https://android-developers.googleblog.com/2023/04/android-studio-flamingo-is-stable.html Network Inspectorがすべてのト ラフィックを表示できるように。

    ステータス コード、応答ヘッダー や本文など通信内容がわかる ほか、監視したい独自ルールを 用意してアプリへの応答を書き 換え可能
  23. App Quality Insightsを使った品質検査 IDEから直接、Firebase Crashlyticsレポートを確認できる機能。 スタックトレースからのジャンプやコードハイライト等 36 Electric Eel Flamingo

    https://android-developers.googleblog.com/2023/04/android-studio-flamingo-is-stable.html FlamingoではAndroid Studio内でNotesも追加できるアップデートを実施
  24. Android vitals対応App Quality Insights 発生頻度や時期、デバイス やバージョンなどの条件でク ラッシュログの絞り込みに対 応 開発者はAndroid Studio

    上での作業に集中でき、品 質向上に寄与 37 Hedgehog https://android-developers.googleblog.com/2023/04/android-studio-flamingo-is-stable.html
  25. Composeのトレース対応 Android StudioプロファイラでのSystem TraceがComposeに対応 実際にrecomposeされているCompose 関数を把握できるメリット - Compose UI: 1.3.0-beta01以上

    - Compose Compiler: 1.3.0以上 39 Flamingo (experimental) https://developer.android.com/studio/releases/past-releases/as-flamingo-release-notes?hl=ja#compose-tracing
  26. デバッグ中のCompose state情報表示 40 recompose調査に便利な機能 • コンポーザブル関数にブレークポイン トを設定すると、デバッガでコンポー ザブルのパラメータとその状態を表 示できるように •

    デバッガで止めることで、どの変更が 原因でrecomposeしたか、パラメー タの変更を特定可能 Hedgehog https://developer.android.com/studio/preview/features#compose-state-in-debugger
  27. Test against configuration changes with the Espresso Device API •

    Android Studio Iguanaではconfiguration changeに対するテスト機能を追加 • Espresso Device API を使用してデバイスに回転 や画面の展開などの構成変更を再現 ◦ 仮想デバイス上で構成変更をシミュレートしてテストするこ とから(実機ではないので)UIアクションごとに検証可能と なり信頼性が高まるとしている 41 Iguana https://developer.android.com/studio/preview/features#espresso-device-api
  28. Current Status of Android Studio 安定版、ベータ、プレビューの状況(2023/9/14現在) Android Studio Giraffe |

    2022.3.1 Patch 1 Android Studio Hedgehog | 2023.1.1 Beta 4 Android Studio Iguana | 2023.2.1 Canary 3 Android Studio Iguana | 2023.2.1 Nightly 2023-9-11 Channel Stable Preview -Beta Preview - Canary Nightly https://androidstudio.googleblog.com/ Release Updatesより