Android 11 Meetups - What’s new in Android Studio

Android 11 Meetups - What’s new in Android Studio

Android 11 Meetups 에서 발표한 자료입니다.

354271902cd8ba2762d05b251dfa0f84?s=128

pluulove (노현석)

July 30, 2020
Tweet

Transcript

  1. GDG Incheon What’s new in Android Studio in 4.0, 4.1,

    4.2 HyeonSeok Noh Google Developer Experts for Android
  2. GDG Incheon Roadmap 2019 2020 v3.5 Project Marble v3.6 v4.0

    View Binding Emulator - Google Maps UI Leak Detection Design Tool Updates Motion Editor “Live” Layout Inspector Build Analyzer CPU Profiler update v4.1 v4.2
  3. GDG Incheon New Logo?!

  4. 4.2 Support for Compose Improved instrumentation testing 4.1 Material Design

    Project IDE configuration Dagger navigation Emulator directly Database Inspector Custom View Preview 4.0 Java8 library desugaring Build Analyzer CPU Profiler upgrades New Motion Editor Live Layout Inspector Kotlin Android live templates Updated proguard rules android studio
  5. GDG Incheon Stable Android Studio 4.0 • Java8 library desugaring

    • Build Analyzer • CPU Profiler upgrades • New Motion Editor • Live Layout Inspector • Kotlin Android live templates • Updated proguard rules
  6. GDG Incheon Lambda Expressions Default interface method try with resource

    … Android Studioীࢲ Java8੉ۆ? 2013 2014 2015 2016 2017 2018 2019 2020 Google I/O 2013 Android Studio ߊ಴ 3.0 ߊ಴ Java 8 ૑ਗ द੘ (D8)
  7. GDG Incheon Android Gradle Plugin 3.0.0+ https://developer.android.com/studio/write/java8-support

  8. GDG Incheon Android Gradle Plugin 3.0.0+ https://developer.android.com/studio/write/java8-support

  9. GDG Incheon Sample, Required APIs Using time/stream

  10. Default

  11. java.time.LocalDate ࢎਊ઺ Default

  12. java.time.LocalDate ࢎਊ઺ Default java.util.stream.Stream ࢎਊ઺

  13. GDG Incheon Lambda Expressions Default interface method try with resource

    … Android Studio 4.0+ 2013 2014 2015 2016 2017 2018 2019 2020 3.0 ߊ಴ Java 8 ૑ਗ द੘ (D8) 4.0 ߊ಴ Support Java API Desugar (D8) min APIী ৔ೱਸ ߉૑ঋҊ Java ঱য੄ APIܳ ࢎਊоמ Google I/O 2013 Android Studio ߊ಴
  14. GDG Incheon coreLibraryDesugaringEnabled android { compileOptions { // ࢜۽਍ ঱য

    APIܳ ૑ਗೞӝ ਤೠ Flag coreLibraryDesugaringEnabled true // Java compatibility ࢸ੿ী Java 8 ੸ਊ sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } } dependencies { coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.0.9' } android { defaultConfig { // minSdkVersion 20 ੉ೞੋ ҃਋ ೙ࣻ multiDexEnabled true } }
  15. GDG Incheon coreLibraryDesugaringEnabled ੸ਊ റ Clear Required API

  16. Java 8 API ࢎਊਸ ਤೠ ഐജࢿ ӝ߈੄ ੿ࠁо ୶оؽ ੸ਊ

    ੹ࠁ׮ ਊ۝ ૐо Desugar
  17. Desugar j$.time.LocalDate ࢎਊ઺ LocalDate.now()

  18. Desugar j$.time.LocalDate ࢎਊ઺ j$.util.stream.Stream ࢎਊ઺ LocalDate.now() stream()

  19. GDG Incheon Supported APIs Android Gradle plugin 4.0.0 or higher

    • java.util.stream • java.time • java.util.function • java.util.{Map,Collection,Comparator} • java.util.Optional, java.util.OptionalInt, java.util.OptionalDouble • java.util.concurrent.atomic (new methods on AtomicInteger, AtomicLong, AtomicReference) • ConcurrentHashMap (with bug fixes for Android 5.0) https://developer.android.com/studio/write/java8-support#library-desugaring
  20. GDG Incheon Summary .java .javac .class 3rd party libs D8/R8

    App .dex(s) j$ .dex Library desugaring j$.util.stream j$.time … {
  21. // build.gradle (Default) android { buildFeatures { buildConfig = true

    viewBinding = false dataBinding = false aidl = true renderScript = true resValues = true shaders = true } } New options to enable or disable build features GDG Incheon • ਗೞח ӝמ ױਤ ഝࢿച оמ • Module ױਤ build Configuration ࢸ੿ Deprecated android { dataBinding.enabled = false viewBinding.enabled = false }
  22. Project-wide default settings GDG Incheon // project gradle.properties android.defaults.buildfeatures.viewbinding=true android.defaults.buildfeatures.databinding=true

    android.defaults.buildfeatures.aidl=true android.defaults.buildfeatures.buildconfig=true android.defaults.buildfeatures.renderscript=true android.defaults.buildfeatures.resvalues=true android.defaults.buildfeatures.shaders=true • Project ੹୓ ӝࠄ ࢸ੿ ୊ܻ
  23. GDG Incheon on AGP 4.0+ on Android Studio 4.0+ Analyze

    the project's build performance Build… ing… ing…
  24. GDG Incheon Build Analyzer • ࠽٘ दрਸ Ѿ੿ೞח ೦ݾٜਸ ࠙ࢳ

    • Task ѐࢶਵ۽ ੹୓ ࠽٘ दрਸ ઴ੌ ࣻ ੓ח ನੋ౟ https://developer.android.com/studio/build/build-analyzer
  25. GDG Incheon Build Analyzer ~ Example

  26. GDG Incheon Build Analyzer Pluginsਵ۽ ߊࢤೞח दр ഛੋ OSS ۄ੉ࣃझ

    јन਷ ݒ ࠽٘दী јनೡ ೙ਃח হ׮ (੹୓ ઺ 313s / 68.2%)
  27. GDG Incheon Build Analyzer ~ Tasks • Critical Path Task੄

    दрਸ ഛੋ • ࠽٘ दрਸ Ѿ੿ೞח ઱ਃ Taskܳ ഛੋ
  28. GDG Incheon Build Analyzer ~ Tasks Critical Path Task

  29. GDG Incheon Build Analyzer ~ Tasks Critical Path Task

  30. GDG Incheon Build Analyzer ~ Warnings ೦࢚ ز੘ೞח Taskо ੓ח

    ҃਋, 1. Task ࣻ੿ 2. Library Issue ١۾
  31. GDG Incheon Advanced Tips ~ Build Scan ./gradlew assembleDebug --scan

    https://guides.gradle.org/creating-build-scans/
  32. GDG Incheon Upgrade CPU Profiler Inspect system traces : https://developer.android.com/studio/profile/cpu-profiler#inspect-traces

    • CPU Profiler UI ѐࢶ • ೠ ߣী ݽٚ झۨ٘ܳ ഛੋ (Redner, App-Main, Others Thread) • ؊਌ ૒ҙ੸ਵ۽ ఐ࢝ • ࠙ࢳ ಁօ ѐࢶ
  33. GDG Incheon CPU Profiler GDG Incheon

  34. GDG Incheon CPU Profiler GDG Incheon Timeline Analysis

  35. GDG Incheon CPU Profiler GDG Incheon

  36. GDG Incheon Inspect system traces • ఋ੐ ۄੋীࢲ੄ п झۨ٘ীࢲ

    ߊࢤೞח ੉߮౟ • ݽٚ CPU ௏যীࢲ झۨ٘ ഝز • UI झۨ٘ ߂ ೐ۨ੐ ࣘب ੷ೞܳ ਬߊೞח ߽ݾ അ࢚ ഛੋ GDG Incheon
  37. GDG Incheon Design tools

  38. GDG Incheon Design Tools Timeline 2.2 3.0 3.3 3.4 3.5

    3.6 4.0 Layout Editor Alpha Layout Editor Navigation Editor Resource Manager Project Marble Constraint Layout Motion Layout Motion Editor
  39. GDG Incheon Split View update UX • Code/Split/Design View ੹ജ

    ѐࢶ • ఫझ౟ о੉٘ ୶о
  40. GDG Incheon Material Icons Filled Outlined Rounded Sharp Two Tone

    • 1,000+ icons • 5 ઙܨ੄ ప݃ File > New > Image Assert / Vector Assert
  41. GDG Incheon Motion Editor • Required ConstraintLayout 2.0.0-beta3

  42. Demo

  43. GDG Incheon Live Layout Inspector • 3D View (Rotate View)

    • Live Updates • Modify Layer Spacing • Required API Level 29+ on Devices
  44. Layout Inspector Example

  45. Issues https://issuetracker.google.com/issues/157714512 GDG Incheon

  46. GDG Incheon Property value resolution stack • ܻࣗझ ч੉ द੘غח

    ਤ஖ܳ ઑࢎ • Override غח ܻࣗझ ഛੋ https://developer.android.com/studio/releases#4-0-0-live-layout-inspector
  47. Property value resolution stack

  48. GDG Incheon Layout Validation ۨ੉ইਓ੄ ਬബࢿ Ѩࢎ (Multi Devices, Color,

    Font Size)
  49. Layout Validation

  50. Color Blind

  51. Font Sizes

  52. Custom Validation ୶о ജ҃ ࢸ੿ਵ۽ Preview ഛੋ

  53. GDG Incheon Kotlin Android live templates Preferences | Editor |

    Live Templates
  54. GDG Incheon Smart editor for code shrinker rules • R8

    ௏٘ ୷ࣗ ӏ஗ ౵ੌ(proguard-rules.pro)ਸ ৌ ٸ झ݃౟ ಞ૘ӝ ӝמ • Class, Method, Field ী ؀ೠ ࡅܲ ఐ࢝җ Rename ૑ਗ
  55. GDG Incheon Smart editor for code shrinker rules

  56. GDG Incheon Beta 5 Android Studio 4.1 • Material Design

    Project • IDE configuration • Dagger navigation • Emulator directly • Database Inspector • Custom View Preview
  57. Material Design Components : Updated themes and styles Android Studio

    4.1 ࠗఠ ݠ౭ܻ঴ ٣੗ੋ੉ ӝࠄ ੸ਊ
  58. Material Design Components

  59. Material Design Components ~4.0 : colorPrimary 4.1+ : purple_500 ex)

  60. Material Design Components

  61. Material Design Components Support Dark Theme

  62. GDG Incheon Configuration directory changes Window macOS Linux Syntax: %APPDATA%\Google\<product><version>

    Example: C:\Users\YourUserName\AppData\Roaming\Google\AndroidStudioPreview4.1 Syntax: ~/Library/Application Support/Google/<product><version> Example: ~/Library/Application Support/Google/AndroidStudioPreview4.1 Syntax: ~/.config/Google/<product><version> Example: ~/.config/Google/AndroidStudioPreview4.1 IntelliJ IDEA 2020.1 | Default IDE directories
  63. GDG Location Dagger navigation support GDG Incheon New gutter actions

    Dagger ҙ۲ ௏٘ܳ औѱ ఐ࢝ ੄ઓࢿ ҕә੗(Provider) ఐ࢝ ੄ઓࢿ ࢎਊ੗(Related) ఐ࢝
  64. Dagger navigation Example GDG Incheon

  65. Emulator directly ীޯۨ੉ఠܳ built-in प೯ GDG Incheon

  66. GDG Incheon Emulator directly

  67. GDG Incheon Emulator directly ୶о ஶ౟܀ ӝמ • Show Zoom

    Controls
  68. GDG Incheon Emulator directly ୶о ஶ౟܀ ӝמ • Show Zoom

    Controls • Crop Device Frame
  69. Launch in a tools window AS 4.1 or Higher Preferences

    | Tools | Emulator Emulator੄ प೯ ਤ஖ܳ ߸҃ • On : IDEী ࠽౟ੋػ ഋక • Off : ӝઓ ߑध
  70. GDG Incheon Database Inspector A live database tool (AS 4.1

    Canary 6+) • Query database • Table ؘ੉ఠ ୓௼ ߂ ࣻ੿ • Room/Sqlite ૑ਗ image caption : https://medium.com/androiddevelopers/database-inspector-9e91aa265316 • Live Updates • Run Query Action
  71. GDG Incheon Navigate Menu • View - Tools Windows -

    Database Inspector • ೞױ Tool ݫ׏ - Database Inspector GDG Incheon
  72. Database Inspector Required min API Level 26 (Oreo) GDG Incheon

  73. Database Inspector Inspection App ࢶఖ GDG Incheon

  74. Database Inspector DB / Table ഛੋ @Query ۽ ੿੄ػ Action

    प೯ (Database Inspectionदী݅ ഝࢿച) GDG Incheon
  75. GDG Incheon GDG Location Sqlite statement Example

  76. GDG Incheon Update table Example GDG Incheon

  77. GDG Incheon Live updates Example GDG Incheon

  78. GDG Incheon Custom View Preview

  79. GDG Incheon android studio 4.0

  80. GDG Incheon android studio 4.0

  81. Custom View (code) GDG Incheon android studio 4.1

  82. GDG Incheon Updated CPU Profiler https://developer.android.com/studio/preview/features#4.1-ui-upgrades • Box selection •

    Summary tab • Add SurfaceFlinger and VSYNC on Display Data
  83. CPU Profiler on AS 4.1 GDG Incheon

  84. GDG Incheon Recurring trace event • ӝࠄ trace (Count, Average,

    Max, Min …) • о੢ ӟ प೯ ୊ܻ ഛੋ
  85. GDG Incheon Canary 5 Android Studio 4.2 • Support for

    Jetpack Compose • Improved instrumentation testing
  86. GDG Incheon Jetpack Compose

  87. GDG Incheon Jetpack Compose Android ୭न UI toolkit • ࢶ঱੸ੋ

    UI Patterns • ੸਷ ࣻ੄ ௏٘ • ૒ҙ੸ • ࡅܲ ѐߊ җ੿ • ъ۱ೠ ࢿמ • Unbundled UI ஹನք౟ • Kotlin API ࢎਊ • അ੤ח Developer Preview Jetpack Compose : https://developer.android.com/jetpack/compose GDG Incheon
  88. GDG Incheon 2020.07 0.1.0-dev15 2019.10 0.1.0-dev01 2010.01 0.1.0-dev04 2019.05

  89. GDG Incheon New Jetpack Composetooling • Compose preview • Interactive

    preview • Deploy to device GDG Incheon
  90. GDG Incheon Compose preview GDG Incheon

  91. GDG Incheon PreviewParameter

  92. GDG Incheon • Tools Attribute੄ Sample Data৬ ਬࢎ • ױੌ

    ۨ੉ইਓਸ ࠂࣻ ؘ੉ఠ۽ ഛੋೞҊ र ਷ ҃਋ী ਬਊೣ • PreviewParameterProvider • Data ઁҕਸ ҳഅೞח ੋఠಕ੉झ • PreviewParameter • Data ࣻन੗ܳ ૑੿ೞח Annotation PreviewParameter GDG Incheon
  93. GDG Incheon Interactive preview • Composable ױਤ۽ Preview प೯ •

    पઁ৬ زੌೞѱ ز੘
  94. GDG Incheon Interactive preview

  95. Deploy Preview

  96. Deploy Preview

  97. GDG Incheon Improved instrumentation testing

  98. GDG Incheon Improved instrumentation testing

  99. GDG Incheon Improved instrumentation testing

  100. GDG Incheon Emulators

  101. Foldables • Foldable ױ݈੄ Hinge ૑ਗ • Emulator Extended controls

    > Virtual sensors ীࢲ ߸҃ • അ੤ח ࣻزਵ۽ config.ini ী Hinge ੑ۱ਵ۽ ഝࢿച https://androidstudio.googleblog.com/2020/06/emulator-30017-canary.html
  102. GDG Incheon Hinge angle sensor hw.sensor.hinge = yes hw.sensor.hinge.count =

    2 hw.sensor.hinge.ranges = 0-360,0-360 hw.sensor.hinge.defaults = 180,180 hw.sensor.hinge.areas = 0-987-1440-0, 0-1974-1440-0 hw.sensor.posture_list = 1, 2, 3, 4 hw.sensor.hinge_angles_posture_definitions = 0-30 & 0-30, 30-150 & 30-150, 150-210 & 150-210, 210-360 & 210-360 https://cs.android.com/android/platform/superproject/+/master:prebuilts/ android-emulator/linux-x86_64/lib/hardware-properties.ini;l=535 Add lines to ~/.android/avd/avdName.avd/config.ini
  103. GDG Incheon Create AVD • Open AVD (on 4.1 or

    Higher) • Category > Tablet • Create 13.5” Freeform
  104. GDG Incheon

  105. v4.0 Motion Editor “Live” Layout Inspector Layout Validation Custom View

    Preview CPU Profiler Update R8 Rules Editing Build Analyzer Dynamic Feature Dependency Intellij 2019.3 android studio Database Inspector Dependency Injection tools Faster Apply Changes Gradle Config Caching Android Emulator in IDE Instrumentation Testing Profiler UI Updates Native Memory Profiling New Gradle API MLKit & TFLite Model Import Intellij 2020.1 Wireless ADB Debugging Compose Interactive Preview Compose Animation Visualization ConstraintLayout Visualization Compose Theme Preview Compose Deploy to Device Sample Data API for Compose Compose Editing Support Test Failure Retention Intellij 2020.2 v4.1 v4.2
  106. GDG Incheon Reference Android Studio Release • https://developer.android.com/studio/releases#4-0-0 • https://developer.android.com/studio/preview/features#4.1

    • https://developer.android.com/studio/preview/features#4.2 • https://android-developers.googleblog.com/2020/05/android-studio-4.html Medium • https://medium.com/androiddevelopers/layout-inspector-1f8d446d048 • https://medium.com/androiddevelopers/database-inspector-9e91aa265316 • https://medium.com/androiddevelopers/whats-new-in-android-studio-system-trace-5841465c5935 • https://medium.com/androiddevelopers/support-for-newer-java-language-apis-bca79fc8ef65 • https://medium.com/androiddevelopers/dagger-navigation-support-in-android-studio-49aa5d149ec9 • https://medium.com/androiddevelopers/android-at-large-how-to-bring-optimized-experiences-to-the-big-screen- a50a6784e59d
  107. GDG Incheon Thanks!! http://pluu.github.io @pluulove