Slide 1

Slide 1 text

What's new in 
 Android development tools Hyeonseok Noh, Google Developer Experts for Android KakaoBank

Slide 2

Slide 2 text

Android Studio

Slide 3

Slide 3 text

History

Slide 4

Slide 4 text

Flamingo 2022.2.1.20 Year of IntelliJ version IntelliJ major version Studio major version IntelliJ Platform version Studio 
 minor/patch 
 version New version rule Arctic Fox+

Slide 5

Slide 5 text

Hedgehog 2023.1.1 Canary 12 Giraffe 2022.3.1 RC 01 Flamingo 2022.2.1 Patch 2 Agenda Last checked : 2023.07.12

Slide 6

Slide 6 text

Android Studio Flamingo 2022.2.1 Patch 2

Slide 7

Slide 7 text

Live Edit 
 for Compose IntelliJ IDEA 2022.2 Device mirroring Theme 
 Dynamic color Network Inspector Flamingo Compose Tracing Updates to project templates Build Analyzer task JDK 17 bundled App Quality Insights New 
 settings plugin

Slide 8

Slide 8 text

• ӝࠄ Material Design 3ਸ ੸ਊ • Compose Projectо ݢ੷ ߓ஖ Project templates

Slide 9

Slide 9 text

<!-- Customize your light theme here. --> <!-- <item name="colorPrimary">@color/my_light_primary</item> --> </resources> ӝࠄ ప݃ ੿ࠁ

Slide 10

Slide 10 text

<!-- Customize your light theme here. --> <!-- <item name="colorPrimary">@color/my_light_primary</item> --> </resources> ӝࠄ ప݃ ੿ࠁ

Slide 11

Slide 11 text

Breaking change ~ namespace AGP 8.0+ // build.gradle.kts android { namespace = "com.example.myapp" testNamespace = "com.example.mytestapp" ... } Configure the app module : https://developer.android.com/build/configure-app-module

Slide 12

Slide 12 text

Package manifest tag Breaking change ~ namespace R classes, BuildConfig R classes, BuildConfig R classes, BuildConfig applicationId = “com.example.app2” ? ?

Slide 13

Slide 13 text

Namespace property Breaking change ~ namespace namespace applicationId R classes, BuildConfig R classes, BuildConfig R classes, BuildConfig Merged to manifest

Slide 14

Slide 14 text

Breaking change ~ build option default values AGP 8.0+ Flag New 
 default value Previous 
 default value android.defaults. 
 buildfeatures.buildconfig FALSE TRUE android.defaults. 
 buildfeatures.aidl FALSE TRUE android.defaults. 
 buildfeatures.renderscript FALSE TRUE android.nonFinalResIds TRUE FALSE android.nonTransitiveRClass TRUE FALSE android.enableR8.fullMode TRUE FALSE Breaking changes: build option default values : https://developer.android.com/build/releases/gradle-plugin#default-changes

Slide 15

Slide 15 text

Placeholder text. Please replace. A class is like a blueprint, which contains instructions for how to create something. 
 An object instance is an actual Dice that’s created from the blueprint. - ੹୓ ఋ੐ۄੋী ؀ೠ ݽٚ ౟ې೗ ؘ੉ఠܳ ಴द - ߧਤܳ ࢶఖೞৈ ೧׼ ߧਤ੄ ౟ې೗݅ ࠁӝ Network Inspector Inspect network traffic with the Network Inspector : https://developer.android.com/studio/debug/network-profiler

Slide 16

Slide 16 text

Placeholder text. Please replace. A class is like a blueprint, which contains instructions for how to create something. 
 An object instance is an actual Dice that’s created from the blueprint. - ਽׹ ੿ࠁܳ о۽଻য ׮ܲ ਽׹ਵ۽ ߈ജೞח Rule ࢸ੿ оמ - Status Code/Header/Body ١ ૑ਗ Network Inspector 
 traffic interception

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

Themed app icons ޷ܻ ࠁӝ ૑ਗ

Slide 19

Slide 19 text

Dynamic color ޷ܻࠁӝ ૑ਗ

Slide 20

Slide 20 text

Dynamic color ޷ܻࠁӝ ૑ਗ

Slide 21

Slide 21 text

- File > Settings > Tools 
 > Device Mirroring Device mirroring

Slide 22

Slide 22 text

Device mirroring

Slide 23

Slide 23 text

Layout Inspector

Slide 24

Slide 24 text

Live Edit for Compose

Slide 25

Slide 25 text

Live Editо ز੘ೞח ӝળ ୶о • Push Edits Manually • Push Edits Automatically Live Edit Mode ૑ਗ Iterative code development : https://developer.android.com/jetpack/compose/tooling/iterative-development#live-edit

Slide 26

Slide 26 text

Compose Tracing

Slide 27

Slide 27 text

Compose Tracing

Slide 28

Slide 28 text

No content

Slide 29

Slide 29 text

• ਋ࢶ ࣽਤо ֫਷ ޙઁܳ ਤೠ 
 ࢜۽਍ জ ಿ૕ ੋࢎ੉౟ ӝמ੉ بੑ • Crashlyticsী ࠁҊػ ޙઁܳ IDEীࢲ ഛੋ оמ • Close issues / Add Note ૑ਗ App Quality Insights

Slide 30

Slide 30 text

No content

Slide 31

Slide 31 text

• ࠽٘ दрী ৔ೱਸ ޷஖ח ੘সী ؀ೠ ࢜܂ѱ ಴द • Taskܳ ஠పҊܻ߹۽ Ӓܛച • AGP 8.0 ੉࢚ ૑ਗ Build Analyzer task

Slide 32

Slide 32 text

New settings plugin : https://developer.android.com/build/releases/gradle-plugin#settings-plugin SettingsExtension : https://developer.android.com/reference/tools/gradle-api/8.0/com/android/build/api/dsl/SettingsExtension apply plugin 'com.android.se tt ings' android { compileSdk 33 minSdk 28 ... } • ೐۽ં౟ ੹୓ী زੌೠ Android ࢸ੿੉ ҳࢿ оמ೧૗ • settings.gradle ౵ੌী ੓ח android blockਸ ࢎਊೞৈ ੿੄ • ૑ਗ оמೠ ೦ݾ਷ SettingsExtension ী ੿੄ New settings plugin

Slide 33

Slide 33 text

app/build.gradle settings.gradle AndroidManifest.xml

Slide 34

Slide 34 text

Android Studio Giraffe 2022.3.1 RC 01

Slide 35

Slide 35 text

Kotlin DSL Device Explorer New Android SDK 
 Upgrade Assistant Giraffe New UI Animation Preview Jetpack Compose Lint contains bytecode targeting JVM 17 Make selected modules Gradle Version Catalog Download Import in Build Analyzer Support for Grammatical Inflection API Per-app language preferences support

Slide 36

Slide 36 text

• IntelliJ੄ ࢜۽਍ UI ప݃ • IDE ೙ࣻ ӝמী ૘઺ • Settings > Appearance & Behavior > New UI • Giraffe Canary 2 ੉࢚ࠗఠ ૑ਗ New UI preview New UI : https://www.jetbrains.com/help/idea/new-ui.html

Slide 37

Slide 37 text

Light Dark High contrast IntelliJ Light Darcula Theme

Slide 38

Slide 38 text

• Emulator ߂ पઁ ױ݈ী Composableਸ पदрਵ۽ সؘ੉౟ • জਸ ׮द ߓನೞ૑ ঋҊب Composableਸ ಞ૘ೞҊ प೯ ઺ੋ ٣߄੉झীࢲ UI ߸҃ ࢎ ೦ਸ ഛੋ оמ Update Live Edit पदр সؘ੉౟

Slide 39

Slide 39 text

पदр Composable Update

Slide 40

Slide 40 text

؊ ա਷ 
 Compose Animation Preview • updateTransition ߂ AnimatedVisibility ૑ਗ • ୶о۽ animate*AsState, CrossFade, rememberInfiniteTransition ߂ AnimatedContent ૑ਗ • ࢚కܳ ࢸ੿ೞৈ গפݫ੉࣌ ٣ߡӦ оמ

Slide 41

Slide 41 text

Android SDK Upgrade Assistant • IDEীࢲ targetSdkVersion ژח API Level সӒۨ੉٘ী ೙ਃೠ ױ҅ܳ ഛੋ оמ • ޙࢲܳ IDEী ૒੽ оઉয়޲۽ ࠳ۄ਋੷৬ IDEр੄ ੹ജ੉ 
 ઴যٞ • Tools > Android SDK Upgrade Assistant

Slide 42

Slide 42 text

No content

Slide 43

Slide 43 text

Default Kotlin DSL ࠽٘ ҳࢿ • ࢜ ೐۽ં౟ח ࠽٘ ҳࢿী ӝࠄ੸ਵ۽ 
 Kotlin DSL(build.gradle.kts)ਸ ࢎਊ • ӝઓࠁ׮ ա਷ ҳޙ ъઑ ಴द, ௏٘ ৮ࢿ ߂ 
 ࢶ঱ ఐ࢝ migration : https://developer.android.com/build/migrate-to-kotlin-dsl

Slide 44

Slide 44 text

Support Gradle Version Catalogs • TOML ӝ߈ Gradle Version Catalogs 
 ૑ਗ بੑ • Dependency/Pluginਸ ؊ औѱ ҙܻ оמ • ׮নೠ ݽٕীࢲ Dependencyܳ 
 type-safeೞѱ ଵઑ migration : https://developer.android.com/build/migrate-to-catalogs

Slide 45

Slide 45 text

[versions] androidGradlePlugin = "8.1.0-rc01" androidxActivity = "1.7.0" androidxAppCompat = "1.5.1" [libraries] androidx-activity-compose = { group = "androidx.activity", name = "activity-compose", version.ref = "androidxActivity" } androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "androidxAppCompat" } [bundles] androidX-compose = [ "androidx-activity-compose", "…" ] [plugins] android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" } Gradle Version Catalogs Sharing catalogs : https://docs.gradle.org/current/userguide/platforms.html#sec:sharing-catalogs

Slide 46

Slide 46 text

Code completion and navigation

Slide 47

Slide 47 text

Download info during sync

Slide 48

Slide 48 text

target API level݅ ࠽٘ೞח ୭੸ച ࠺ഝࢿച • (ӝࠄ) ੹୓ ࠽٘ दрਸ ઴੉ӝ ਤ೧ ߓನೞ۰ ח ٣߄੉झ੄ API levelী ݏѱ dexing processܳ ઑ੿ • File > Settings > Experimental (Android Studio > Settings > Experimental on macOS)ীࢲ “Optimize build for target device API level only” ୓௼೧ઁ

Slide 49

Slide 49 text

Android Studio Hedgehog 2023.1.1 Canary 12

Slide 50

Slide 50 text

Hedgehog Espresso Device API Studio Bot Safe Mode 
 Android Studio Baseline Profiles module wizard Compose state information 
 in debugger App Quality Insights Analyze 
 Android vitals Version control system integration Embedded Layout Inspector New macro to specify JDK path Gradle Managed Devices with Firebase Test Lab

Slide 51

Slide 51 text

JDK ҃۽ܳ ૑੿ೞח ࢜۽਍ ݒ௼۽ • Gradle ؘހ प೯ী ࢎਊغח Java Home Path (=GRADLE_LOCAL_JAVA_HOME) • नӏ ೐۽ં౟ח ӝࠄ੸ਵ۽ GRADLE_LOCAL_JAVA_HOMEਸ ࢎਊ • Preferences | Build, Execution, Deployment | Build Tools | Gradle ীࢲ 
 ࢸ੿ оמ

Slide 52

Slide 52 text

No content

Slide 53

Slide 53 text

Studio Bot • Android Studio IDEী ా೤ػ ୁࠈ ഋక • LLM(؀ӏݽ ঱য ݽ؛)۽ ೟णػ ؘ੉ఠ ӝ߈ ز੘ • ௏٘ܳ ࢤࢿೞҊ, ҙ۲ ܻࣗझܳ ଺Ҋ, ݽߧ ࢎ۹ܳ ߓ਋Ҋ, दрਸ ੺ডೞח ؘ ب਑ਸ ષ • അ੤ प೷ ߡ੹. ޷Ҵ ೠ੿ਵ۽ ࢎਊ оמ

Slide 54

Slide 54 text

Sample

Slide 55

Slide 55 text

Sample

Slide 56

Slide 56 text

Studio Bot਷ ୡӝ प೷ ױ҅ ೐۽ં౟ী Hilt ୶о

Slide 57

Slide 57 text

Embedded Layout Inspector • Running Devicesীࢲ 
 Layout Inspector प೯ оמ • Preferences > Experimental > Layout Inspectorীࢲ Embedded Layout Inspector 
 ഝࢿച оמ • Hedgehog Canary 2 ੉࢚ ૑ਗ Embedded Layout Inspector : https://developer.android.com/studio/preview/features?utm_source=android-studio#embedded-layout-inspector

Slide 58

Slide 58 text

Embedded Layout Inspector

Slide 59

Slide 59 text

Debuggerীࢲ Compose state information • Composaਸ ੌद ઺૑ೞݶ ٣ߡѢীࢲ 
 ౵ۄ޷ఠ੄ ߸҃ ৈࠗܳ ഛੋ оמ • ੤ҳࢿ੄ ਗੋਸ ࠁ׮ ബਯ੸ਵ۽ ઑࢎ оמ

Slide 60

Slide 60 text

No content

Slide 61

Slide 61 text

Baseline Profiles module wizard File > New > New Module

Slide 62

Slide 62 text

Baseline Profiles module wizard

Slide 63

Slide 63 text

No content

Slide 64

Slide 64 text

No content

Slide 65

Slide 65 text

No content

Slide 66

Slide 66 text

App Quality Insights + Android Visuals

Slide 67

Slide 67 text

No content

Slide 68

Slide 68 text

No content

Slide 69

Slide 69 text

# gradle.prope rt ies android.enableVcsInfo=true Version control system integration in App Quality Insights • VCSܳ ࢎਊೞ۰ݶ gradle.properties ౵ੌীࢲ android.enableVcsInfo ೒ېӒܳ ഝࢿച ೙ਃ

Slide 70

Slide 70 text

Firebase Test Lab Firebase Test Lab : https://firebase.google.com/docs/test-lab

Slide 71

Slide 71 text

plugins { ... id "com.google. fi rebase.testlab" } // Gradle੉ জ పझ౟ী ࢎਊೡ Firebase Test Lab ӝӝܳ ૑੿ fi rebaseTestLab { managedDevices { create(" ft lDevice") { device = "Pixel3" apiLevel = 30 } } ... } Gradle Managed Devices 
 Firebase Test Lab devices

Slide 72

Slide 72 text

Gradle Managed Devices 
 Firebase Test Lab devices fi rebaseTestLab { managedDevices { create("GalaxyS23Ultra") { ... } create("GalaxyZFlip3") { ... } create("GalaxyZFold3") { ... } create("GalaxyTabS2") { ... } } }

Slide 73

Slide 73 text

$ ./gradlew group-nameGroupBuildVariantAndroidTest fi rebaseTestLab { managedDevices { groups { samsungGalaxy { targetDevices.add(devices.GalaxyS23Ultra) targetDevices.add(devices.GalaxyZFlip3) targetDevices.add(devices.GalaxyZFold3) targetDevices.add(devices.GalaxyTabS3) } } } } Gradle Managed Devices 
 Firebase Test Lab devices

Slide 74

Slide 74 text

Device Explorer New UI (Opt-in) Kotlin DSL & Version Catalog Build Per-app language preferences support Live Edit for Jetpack Compose Download Import in Build Analyzer Jetpack Compose Animation Preview Giraffe Studio Bot App Quality Insights + Android Visuals Embedded Layout Inspector Compose state information New macro to specify JDK path Hedgehog+ g.co/androidstudio/preview

Slide 75

Slide 75 text

Thank you