Lock in $30 Savings on PRO—Offer Ends Soon! ⏳

What's new in 
Android development tools

What's new in 
Android development tools

"인공지능위크 2023"에서 발표한 "Android 개발도구 최신 기능 업데이트" 발표 자료입니다.

pluulove (노현석)

July 14, 2023
Tweet

More Decks by pluulove (노현석)

Other Decks in Programming

Transcript

  1. 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+
  2. 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
  3. <!-- themes.xml --> <resources xmlns:tools="h tt p://schemas.android.com/tools"> <style name="Base.Theme.MyApplication" parent="Theme.Material3.DayNight.NoActionBar">

    <!-- Customize your light theme here. --> <!-- <item name="colorPrimary">@color/my_light_primary</item> --> </style> <style name="Theme.MyApplication" parent="Base.Theme.MyApplication" /> </resources> ӝࠄ ప݃ ੿ࠁ
  4. <!-- themes.xml --> <resources xmlns:tools="h tt p://schemas.android.com/tools"> <style name="Base.Theme.MyApplication" parent="Theme.Material3.DayNight.NoActionBar">

    <!-- Customize your light theme here. --> <!-- <item name="colorPrimary">@color/my_light_primary</item> --> </style> <style name="Theme.MyApplication" parent="Base.Theme.MyApplication" /> </resources> ӝࠄ ప݃ ੿ࠁ
  5. 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
  6. Package manifest tag Breaking change ~ namespace <manifest … package

    = “com.example.app”> R classes, BuildConfig R classes, BuildConfig R classes, BuildConfig applicationId = “com.example.app2” ? ?
  7. Namespace property Breaking change ~ namespace <manifest … package =

    “com.example.app”> namespace applicationId R classes, BuildConfig R classes, BuildConfig R classes, BuildConfig Merged to manifest
  8. 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
  9. 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
  10. 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
  11. 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
  12. • ਋ࢶ ࣽਤо ֫਷ ޙઁܳ ਤೠ 
 ࢜۽਍ জ ಿ૕

    ੋࢎ੉౟ ӝמ੉ بੑ • Crashlyticsী ࠁҊػ ޙઁܳ IDEীࢲ ഛੋ оמ • Close issues / Add Note ૑ਗ App Quality Insights
  13. • ࠽٘ दрী ৔ೱਸ ޷஖ח ੘সী ؀ೠ ࢜܂ѱ ಴द •

    Taskܳ ஠పҊܻ߹۽ Ӓܛച • AGP 8.0 ੉࢚ ૑ਗ Build Analyzer task
  14. 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
  15. 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
  16. • 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
  17. • Emulator ߂ पઁ ױ݈ী Composableਸ पदрਵ۽ সؘ੉౟ • জਸ

    ׮द ߓನೞ૑ ঋҊب Composableਸ ಞ૘ೞҊ प೯ ઺ੋ ٣߄੉झীࢲ UI ߸҃ ࢎ ೦ਸ ഛੋ оמ Update Live Edit पदр সؘ੉౟
  18. ؊ ա਷ 
 Compose Animation Preview • updateTransition ߂ AnimatedVisibility

    ૑ਗ • ୶о۽ animate*AsState, CrossFade, rememberInfiniteTransition ߂ AnimatedContent ૑ਗ • ࢚కܳ ࢸ੿ೞৈ গפݫ੉࣌ ٣ߡӦ оמ
  19. Android SDK Upgrade Assistant • IDEীࢲ targetSdkVersion ژח API Level

    সӒۨ੉٘ী ೙ਃೠ ױ҅ܳ ഛੋ оמ • ޙࢲܳ IDEী ૒੽ оઉয়޲۽ ࠳ۄ਋੷৬ IDEр੄ ੹ജ੉ 
 ઴যٞ • Tools > Android SDK Upgrade Assistant
  20. Default Kotlin DSL ࠽٘ ҳࢿ • ࢜ ೐۽ં౟ח ࠽٘ ҳࢿী

    ӝࠄ੸ਵ۽ 
 Kotlin DSL(build.gradle.kts)ਸ ࢎਊ • ӝઓࠁ׮ ա਷ ҳޙ ъઑ ಴द, ௏٘ ৮ࢿ ߂ 
 ࢶ঱ ఐ࢝ migration : https://developer.android.com/build/migrate-to-kotlin-dsl
  21. Support Gradle Version Catalogs • TOML ӝ߈ Gradle Version Catalogs

    
 ૑ਗ بੑ • Dependency/Pluginਸ ؊ औѱ ҙܻ оמ • ׮নೠ ݽٕীࢲ Dependencyܳ 
 type-safeೞѱ ଵઑ migration : https://developer.android.com/build/migrate-to-catalogs
  22. [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
  23. target API level݅ ࠽٘ೞח ୭੸ച ࠺ഝࢿച • (ӝࠄ) ੹୓ ࠽٘

    दрਸ ઴੉ӝ ਤ೧ ߓನೞ۰ ח ٣߄੉झ੄ API levelী ݏѱ dexing processܳ ઑ੿ • File > Settings > Experimental (Android Studio > Settings > Experimental on macOS)ীࢲ “Optimize build for target device API level only” ୓௼೧ઁ
  24. 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
  25. JDK ҃۽ܳ ૑੿ೞח ࢜۽਍ ݒ௼۽ • Gradle ؘހ प೯ী ࢎਊغח

    Java Home Path (=GRADLE_LOCAL_JAVA_HOME) • नӏ ೐۽ં౟ח ӝࠄ੸ਵ۽ GRADLE_LOCAL_JAVA_HOMEਸ ࢎਊ • Preferences | Build, Execution, Deployment | Build Tools | Gradle ীࢲ 
 ࢸ੿ оמ
  26. Studio Bot • Android Studio IDEী ా೤ػ ୁࠈ ഋక •

    LLM(؀ӏݽ ঱য ݽ؛)۽ ೟णػ ؘ੉ఠ ӝ߈ ز੘ • ௏٘ܳ ࢤࢿೞҊ, ҙ۲ ܻࣗझܳ ଺Ҋ, ݽߧ ࢎ۹ܳ ߓ਋Ҋ, दрਸ ੺ডೞח ؘ ب਑ਸ ષ • അ੤ प೷ ߡ੹. ޷Ҵ ೠ੿ਵ۽ ࢎਊ оמ
  27. 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
  28. Debuggerীࢲ Compose state information • Composaਸ ੌद ઺૑ೞݶ ٣ߡѢীࢲ 


    ౵ۄ޷ఠ੄ ߸҃ ৈࠗܳ ഛੋ оמ • ੤ҳࢿ੄ ਗੋਸ ࠁ׮ ബਯ੸ਵ۽ ઑࢎ оמ
  29. # gradle.prope rt ies android.enableVcsInfo=true Version control system integration in

    App Quality Insights • VCSܳ ࢎਊೞ۰ݶ gradle.properties ౵ੌীࢲ android.enableVcsInfo ೒ېӒܳ ഝࢿച ೙ਃ
  30. 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
  31. Gradle Managed Devices 
 Firebase Test Lab devices fi rebaseTestLab

    { managedDevices { create("GalaxyS23Ultra") { ... } create("GalaxyZFlip3") { ... } create("GalaxyZFold3") { ... } create("GalaxyTabS2") { ... } } }
  32. $ ./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
  33. 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