Skip to content

Latest commit

ย 

History

History
222 lines (184 loc) ยท 8.46 KB

1221_Android_DevSummitExt.md

File metadata and controls

222 lines (184 loc) ยท 8.46 KB

ANDROID DEV SUMMIT 2019 EXNTENDED SEOUL

ANDROID DEV SUMMIT 2019 EXNTENDED SEOUL

  • โฐ ์ผ์‹œ : 2019. 12. 21 (ํ† )
  • ๐Ÿ’ ์ฃผ์ตœ : GDG Korea Android
  • โ›ณ ์žฅ์†Œ : Google Campus for Startups
  • ๐Ÿ”— ๋งํฌ : https://festa.io/events/744

๐Ÿ‘ ์ดํ‰

  • ์ตœ๊ทผ์— ๊ณ ๋ฏผํ•˜๋˜ ํ…Œํฌ๋‹ˆ์ปฌํ•œ ๋ฌธ์ œ๋“ค์— ๋Œ€ํ•œ ํ•ด๋‹ต์„ ๋“ค์„ ์ˆ˜ ์žˆ๋Š” ๋‹จ๋น„๊ฐ™์€ ํ–‰์‚ฌ์˜€๋‹ค.
  • ๊ฐœ์ธ์ ์œผ๋กœ ์ปจ๋””์…˜์ด ๋‚˜์œ ์ƒํƒœ์˜€๋Š”๋ฐ ์•ˆ์™”์œผ๋ฉด ํ›„ํšŒํ•  ๋ป” ํ–ˆ๋‹ค.

๐Ÿ“ธ ์ธ์ฆ์ƒท

์ธ์ฆ์ƒท

1. Android Security

  • ๐ŸŽค ๋ฐœํ‘œ์ž : ๊ถŒํƒœํ™˜ ์นด์นด์˜คํŽ˜์ด
  • ๐Ÿ“Ž ๋ฐœํ‘œ์ž๋ฃŒ : ๋‹ค์šด๋กœ๋“œ
  • โœ๏ธ ์š”์•ฝ
    • AndroidX Security Library ์†Œ๊ฐœ
    • ๋‹น์žฅ ์–ด์ œ ์ด๊ฑฐ ์“ฐ๋‹ค ์™”๋Š”๋ฐ.. ๋ฐ˜๊ฐ‘๊ธฐ๋„ ํ•˜๊ณ  ๋ฌ˜ํ•˜๊ธฐ๋„ ํ•˜๊ณ ..

๋ฉ”๋ชจ

  • Android Security Library ๊ฐœ์š”

    • MinSDK 23
    • alpha2
    • ์•”ํ˜ธํ™” ๊ด€๋ จ(ํŒŒ์ผ ๊ด€๋ จ, KeyAlias ์ƒ์„ฑ)
    • ๋„คํŠธ์›Œํฌ๋‚˜ DB๋Š” ์ง€์›ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์—†๋‹ค.
  • Google Tink๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค.

    • ์šฐ๋ฆฌ๊ฐ€ ์•”ํ˜ธํ™” ๊ฒ€์ƒ‰ํ•˜๋ฉด ๋‚˜์˜ค๋Š” '๊ทธ ์ฝ”๋“œ'๊ฐ€ ๋“ค์–ด์žˆ๋‹ค.
  • EncryptedSharedPreferences

    • ์ƒ์„ฑ๋งŒ ๋‹ฌ๋ผ์ง€๊ณ  ๋‚˜๋จธ์ง€ ์ฝ๊ณ  ์“ฐ๋Š” ์ฝ”๋“œ๋Š” ๋™์ผํ•˜๋‹ค.
    • KeyAlias ๋งŒ ์ฃผ์˜ํ•˜๋ฉด ๋œ๋‹ค. (๋ฐ”๋€Œ๋ฉด ๋ชป ๋ณตํ˜ธํ™”๋ฅผ ๋ชปํ•˜๋‹ˆ๊นŒ)
  • EncryptedFile

    • ์ƒ์„ฌ๋งŒ ๋‹ฌ๋ผ์ง€๊ณ  bufferRead, bufferWrite ๊ทธ๋Œ€๋กœ ์“ด๋‹ค.
  • ์ฃผ์˜์‚ฌํ•ญ

    • masterKeyAlias๋Š” String ๋ณ€์ˆ˜์ด๋‹ค.
    • ๋ณ€๊ฒฝ๊ฐ€๋Šฅํ•˜๊ณ  ๋™์ž‘์— ๋ฌธ์ œ๋Š” ์—†์ง€๋งŒ, MasterKeys ์‚ฌ์šฉ์„ ๊ถŒ์žฅ.
  • EncryptedFile ์€ ๋™์ผํ•œ ์ด๋ฆ„์˜ ํŒŒ์ผ์— ๋ฎ์–ด์”Œ์šธ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์ฃผ์˜ํ•œ๋‹ค.

  • Biometric Authentication

    • ์ง€๋ฌธ์ธ์‹, ์–ผ๊ตด์ธ์‹ ๋“ฑ ์ƒ์ฒด์ธ์‹
    • MinSdk 23
    • ํŒ์—…์ด ๋œฌ๋‹ค.
    • ์–ผ๊ตด์ธ์‹์€ ์ตœ์ข… ์ปจํŽŒ์„ ๋ฐ›๋Š”๋‹ค.(ํ”ฝ์…€ ๋ฒ„๊ทธ๋•Œ๋ฌธ์ธ๊ฐ€?)
    • ์ง€๋ฌธ์ธ์‹๋งŒ ์“ธ ์ˆ˜ ์—†๋‹ค. (๊ฐœ๋ฐœ์ž๊ฐ€ ์ง€์ •ํ•˜์ง€ ๋ชปํ•˜๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ ์„ค์ •ํ•œ ์ƒ์ฒด์ธ์‹ ๋ฐฉ์‹์ด ๋œฌ๋‹ค.)
  • ๋ณด์•ˆ ์ž์ฒด์— ๋Œ€ํ•œ ๋‚ด์šฉ์€ ๋ณ„๋„์˜ ํ•™์Šต์ด ํ•„์š”ํ•  ์ˆ˜๋„ ์žˆ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ ๋‹ค.

์งˆ์˜์‘๋‹ต

  • Q. KeyAlias ๋Š” ๋””๋ฐ”์ด์Šค ์ˆ˜์ค€์ธ์ง€? ์„ค์น˜ ์ˆ˜์ค€์ธ์ง€?
  • A. ์„ค์น˜์ˆ˜์ค€

2. New in Android Studio

  • ๐ŸŽค ๋ฐœํ‘œ์ž : ๋…ธํ˜„์„ ๋„ค์ด๋ฒ„
  • ๐Ÿ“Ž ๋ฐœํ‘œ์ž๋ฃŒ : ๋‹ค์šด๋กœ๋“œ
  • โœ๏ธ ์š”์•ฝ
    • ์•ˆ๋“œ๋กœ์ด๋“œ ์ŠคํŠœ๋””์˜ค v3.6 ๋ฐ v4.0 ์˜ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์†Œ๊ฐœ
    • ์–ธ์ œ๋‚˜์ฒ˜๋Ÿผ ๋น ๋ฅด๊ณ  ์•Œ์ฐฌ ๋‚ด์šฉ๋“ค์ด์—ˆ๋‹ค. ๋‚˜์ค‘์— ๋”ฐ๋กœ ๋ฐœํ‘œ์ž๋ฃŒ ๋ณด๋ฉด์„œ ๋ณต์Šตํ•ด์•ผ์ง€...

๋ฉ”๋ชจ

  • 4.0 ์—์„œ build.gradle
    • ๋””ํŽœ๋˜์‹œ ์ƒˆ๋กœ์šด ๋ฒ„์ „ ์ฐพ๋Š” ๊ธฐ๋Šฅ ๊ฐœ์„ 
  • BuildSpeed
    • ์–ด๋””์„œ ๋นŒ๋“œ ์‹œ๊ฐ„์„ ์žก์•„๋จน๋Š”์ง€ ์‹œ๊ฐ์ ์œผ๋กœ ํ™•์ธ ๊ฐ€๋Šฅ
    • ๋นŒ๋“œ์†๋„ ๊ฐœ์„  ๋ฐ ํ™•์ธ ๊ฐ€๋Šฅ
  • Multi Preview
    • ๋ฉ€ํ‹ฐ ๋””๋ฐ”์ด์Šค, ๋ฉ€ํ‹ฐ Locale, Color Blind Mode ๋“ฑ
    • Split View ๋ฒ„ํŠผ์œ„์น˜๊ฐ€ ์ขŒํ•˜๋‹จ์—์„œ ์šฐ์ธก์ƒ๋‹จ์œผ๋กœ ๋ณ€๊ฒฝ
  • Desugraring
    • ์ตœ์†Œ API Level์„ ์š”๊ตฌํ•˜์ง€ ์•Š๊ณ  Java 8 API ์‚ฌ์šฉ๊ฐ€๋Šฅ
    • ๋ณ„๋„์˜ Library ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์“ฐ๊ฒŒ ๋œ๋‹ค.
    • build.gradle ์—์„œ ์„ค์ • coreLibraryDesugaringEnabled ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์“ธ ์ˆ˜ ์žˆ๋‹ค.
  • View Binding
    • findViewById ๋Œ€์ฒด ๊ฐ€๋Šฅ
      • ์ž˜๋ชป๋œ ID๋กœ ์ธํ•œ NPE ๋ฐœ์ƒ ์šฐ๋ ค๊ฐ€ ์—†๋‹ค.
    • ๋ฐ์ดํ„ฐ๋ฐ”์ธ๋”ฉ ๋งˆ๋ƒฅ xml์„ ๊ฐ€์ง€๊ณ  ๋ทฐ์— ๋Œ€ํ•œ ์ฝ”๋“œ๊ฐ€ ์ƒ์„ฑ๋˜์–ด ์ฐธ์กฐ ๊ฐ€๋Šฅ.
    • ๋ฐ์ดํ„ฐ๋ฐ”์ธ๋”ฉ๊ณผ ์‚ฌ์šฉ๋ฐฉ๋ฒ•๋„ ๋น„์Šท
    • ๋ฐ์ดํ„ฐ๋ฐ”์ธ๋”ฉ ์ฒ˜๋Ÿผ ์ˆ˜์‹์€ ๋ถˆ๊ฐ€๋Šฅ.
  • Android Jetpack Compose
    • Declaritive UI
    • Preview๋„ ์ง€์›
      • ๋‹คํฌ๋ชจ๋“œ, ์ƒํƒœ์— ๋”ฐ๋ฅธ ๋ณ€ํ™”๋„ ์ „๋ถ€ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
    • pre alpha ์ด๋ฏ€๋กœ
  • Debugging
    • ๋””๋ฒ„๊น… ์ค‘ ๋ธŒ๋ ˆ์ดํฌํฌ์ธํŠธ ๋ผ์ธ์„ ์ง€๋‚˜์ณค์„ ๋•Œ?
    • ApplyChange ๋ฅผ ์ด์šฉํ•˜๋ฉด ๋””๋ฒ„๊น… ์ค‘์— ์ฝ”๋“œ ์ˆ˜์ • ๊ฐ€๋Šฅ
  • Layout Inspector
    • MotionLayout ๋“ฑ ๋ ˆ์ด์•„์›ƒ์„ 3D๋ทฐ๋กœ ๋ณผ ์ˆ˜๋„ ์žˆ๋‹ค.
  • Motion Editor
    • ConstaintLayout์„ MotionLayout์œผ๋กœ ์ปจ๋ฒ„ํŠธ ๊ฐ€๋Šฅ.

3. Developing Themes with Style

  • ๐ŸŽค ๋ฐœํ‘œ์ž : ์•ˆ๋ช…์šฑ ์นด์นด์˜ค
  • โœ๏ธ ์š”์•ฝ
    • ๋จธํ…Œ๋ฆฌ์–ผ ๋””์ž์ธ์„ ์ ์šฉ์„ ์œ„ํ•œ ํ…Œ๋งˆ์‚ฌ์šฉ๋ฒ•

๋ฉ”๋ชจ

  • ์žฌ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•œ

  • ํ…Œ๋งˆ VS ์Šคํƒ€์ผ

    • ์Šคํƒ€์ผ์€ ๋ทฐ์˜ ์†์„ฑ๋“ค์„ ๊ฐ๊ฐ ๋ทฐ๋งˆ๋‹ค ์„ค์ •
    • ํ…Œ๋งˆ๋Š” ๋ทฐ์†์„ฑ์ด ์•„๋‹Œ ํ…Œ๋งˆ์†์„ฑ์„ ํ‚ค๋กœ ์‚ฌ์šฉํ•œ๋‹ค.
    • ํ…Œ๋งˆ๋ฅผ ์ฐธ์กฐํ•  ๋•Œ๋Š” ?attr/ ๋กœ ์‚ฌ์šฉ (?๋Š” ํ˜„์žฌ ํ…Œ๋งˆ)
  • ํ…Œ๋งˆ๋Š” ์ปจํ…์ŠคํŠธ์™€ ์—ฐ๊ฒฐ๋œ๋‹ค

    • closestViewContext๋ฅผ ์ด์šฉํ•˜์—ฌ ์‚ฌ์šฉ๊ฐ€๋Šฅ.
  • ํ…Œ๋งˆ๋Š” ๊ณ„์ธต๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„๋‹ค.

    • ํ…Œ๋งˆ๋ฅผ ๋ทฐ์— ์ ์šฉํ•˜๋ฉด ํ•˜์œ„๋ทฐ์— ์ „๋ถ€ ์ ์šฉ ๋œ๋‹ค.
    • ํ…Œ๋งˆ๋„ ์ƒ์†๋˜๊ณ , ์ž์‹์ด ์†์„ฑ์„ override ํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค.
    • ํ…Œ๋งˆ ์˜ค๋ฒ„๋ ˆ์ด๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ณ€๊ฒฝ๋˜๋Š” ์†์„ฑ๋งŒ ์„ ์–ธํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ๋‹คํฌ๋ชจ๋“œ์—์„œ ๋ผ์ดํŠธ๋ชจ๋“œ๋ฅผ ์˜ค๋ฒ„๋ ˆ์ด ํ•˜์—ฌ ํŠน์ •๋ถ€๋ถ„๋งŒ ๋ผ์ดํŠธ๋ชจ๋“œ๋กœ ๋ณด์—ฌ์ฃผ๋Š” ๋“ฑ์˜ ์œ ์—ฐํ•œ ํ™œ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ํ…Œ๋งˆ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์Šคํƒ€์ผ, ์Šคํƒ€์ผ์„ ์‚ฌ์šฉํ•˜๋Š” ํ…Œ๋งˆ๋„ ๊ฐ€๋Šฅ

  • ์ปฌ๋Ÿฌํƒœ๊ทธ์—์„œ๋Š” ๋‹ค๋ฅธ ์ปฌ๋Ÿฌํƒœ๊ทธ๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ํ…Œ๋งˆ๋Š” ์ฐธ์กฐ๋ถˆ๊ฐ€

  • Color state list๋ฅผ ์ด์šฉํ•˜์—ฌ Stateful Wrapper์ฒ˜๋Ÿผ ์ƒํƒœ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ์ƒ‰์ƒ์„ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ๋‹ค.

  • color state list์—์„œ ์œ„์—์„œ๋ถ€ํ„ฐ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง€๋ฏ€๋กœ ์œ ์˜

  • ์•ŒํŒŒ๊ฐ’๋งŒ ๋‹ค๋ฅธ color ๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ์„ ์–ธํ•˜๋Š” ๋Œ€์‹  color statelist ๋ฅผ ์ด์šฉํ•˜์—ฌ ์•ŒํŒŒ๊ฐ’๋งŒ ๋„˜๊ฒจ์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ๊ตฌ๊ธ€์—์„œ ๊ถŒ์žฅํ•˜๋Š” ๊ฒƒ์€ ๋ฌธ์ž๊ทธ๋Œ€๋กœ์˜ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๊ธฐ๋ฅผ ๊ถŒ์žฅ

    • O : blue_500, pink_250, ...
    • X : primary, primary_dark, ...
  • ์Šคํƒ€์ผ ์ด๋ฆ„์„ . ์œผ๋กœ ๋‹จ์œ„๋ณ„๋กœ ๋„ค์ด๋ฐํ•˜๋ฉด ์•”์‹œ์  ์ƒ์† ๊ฐ€๋Šฅ

  • ๋‹คํฌํ…Œ๋งˆ

    • AppCompat์—์„œ ์–ด๋Š๊ฒƒ์„ ์‚ฌ์šฉํ•  ๊ฒƒ์ธ์ง€ ์„ค์ •
    • ์Šคํƒ€์ผ์—์„œ ํ•˜๋“œ์ฝ”๋”ฉ ๋œ ์ƒ‰์ƒ์ด ์žˆ๋‹ค๋ฉด ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๊ธฐ ๋งˆ๋ จ

4. LiveData with Coroutines and Flow

  • ๐ŸŽค ๋ฐœํ‘œ์ž : ์ด์šฐ์ถ˜ ์นด์นด์˜คํŽ˜์ด
  • โœ๏ธ ์š”์•ฝ
    • LiveData๋ฅผ ์ด์šฉํ•œ MVVM ๊ตฌ์กฐ์—์„œ ์ฝ”๋ฃจํ‹ด ํ™œ์šฉ๋ฒ•

๋ฉ”๋ชจ

  • ์‚ฌ๋žŒ๋งˆ๋‹ค Layered architecture ์— ๊ด€์ ๊ณผ ๊ตฌํ˜„์ฒด๊ฐ€ ๋‹ค๋ฅด๋‹ค.
  • Scope ์„ค์ •์„ ๋ช…ํ™•ํ•˜๊ฒŒ ์ž˜ ์“ฐ๋Š”๊ฒƒ์ด ํ˜‘์—…์ƒ ์ข‹๋‹ค.
  • LifecycleScope
  • ApplicationScope or WorkManager
  • ์•„.. ์ฝ”๋ฃจํ‹ด ๊ณต๋ถ€ํ•ด์•ผ๊ฒ ๋‹ค...

5. WorkManager: the Beginning

  • ๐ŸŽค ๋ฐœํ‘œ์ž : ์•ˆ์„ฑ์šฉ ๋„ค์ด๋ฒ„
  • ๐Ÿ“Ž ๋ฐœํ‘œ์ž๋ฃŒ : ๋‹ค์šด๋กœ๋“œ
  • โœ๏ธ ์š”์•ฝ
    • ์›Œํฌ๋งค๋‹ˆ์ €๊ฐ€ ๋‚˜์˜ค๊ฒŒ ๋œ ๋ฐฐ๊ฒฝ๋ถ€ํ„ฐ ์‚ฌ์šฉ๋ฒ•๊ณผ ๋ฒ„์ „๋ณ„ ์ง€์›๊ธฐ๋Šฅ๋“ค ์†Œ๊ฐœ

๋ฉ”๋ชจ

  • Before WorkManager
    • AlarmManager
    • JobScheduler
    • Doze Mode
    • GCMNetworkManager
    • android-job
    • JobDispatcher
  • WorkManager
    • AlarmManager + JobScehduler (+GCM)
    • ์ œํŠธํŒฉ
    • WorkManager DB์—
      • DB์— ์ €์žฅํ•˜๊ธฐ๋•Œ๋ฌธ์— ๊ฐ•์ œ์ข…๋ฃŒ๋ฅผ ํ•ด๋„ ๋ฆฌ์Šค์ผ€์ฅด๊ฐ€๋Šฅ
    • enqueue ๋„ ์žˆ์ง€๋งŒ ์ฒด์ด๋‹๋„ ๊ฐ€๋Šฅ (๋น„๊ธฐ๋‹with)
    • ์กฐ๊ฑด์— ๋งž๊ฒŒ cancel๋„ ๊ฐ€๋Šฅ (์ด๋ฆ„, id, tAg)
  • Worker
    • Worker, RxWorker, CoroutineWorker
  • Initializer
    • ContentProvider ๋ผ์„œ Application oncreate ์ด์ „์— ์‹คํ–‰
    • On Demand๋กœ ์‹คํ–‰๋„ ๊ฐ€๋Šฅ
  • Worker Progress
    • ๊ฒฐ๊ณผ ๋ฟ ์•„๋‹ˆ๋ผ progress ๋„ ์ „๋‹ฌ ๊ฐ€๋Šฅ
    • setProgress๋กœ ํ”„๋กœ๊ทธ๋ ˆ์Šค๋ฅผ ์„ค์ •ํ•˜๊ณ  ์ด๊ฑธ ๋ฐ›์•„์„œ ์ฒ˜๋ฆฌํ•˜๋ฉด UI์ ์œผ๋กœ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅํ•˜๋‹ค.
    • worker๊ฐ€ running state์ผ๋•Œ๋งŒ ์‚ฌ์šฉํ•˜๋„๋ก ์œ ์˜ํ•œ๋‹ค.
  • Foreground Worker
    • ์˜ค๋ž˜๊ฑธ๋ฆฌ๋Š” ์ž‘์—…์€ ํฌ์–ด๊ทธ๋ผ์šด๋“œ๋กœ ๋„˜๊ฒจ์„œ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ช…์‹œ๊ฐ€๋Šฅํ•˜๊ณ  ์ค‘๊ฐ„์— ์ทจ์†Œ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.
    • setForeground ๋กœ Notifictaion ์„ค์ •ํ•˜์—ฌ ์ƒ์„ฑ ๊ฐ€๋Šฅ.

6. ์•ˆ๋“œ๋กœ์ด๋“œ DI ์–ด๋–ป๊ฒŒ ํ•˜๋‚˜์š”? (Feat. Dagger2)

  • ๐ŸŽค ๋ฐœํ‘œ์ž : ์ด์Šน๋ฏผ ๋ฑ…ํฌ์ƒ๋Ÿฌ๋“œ
  • โœ๏ธ ์š”์•ฝ
    • DI๊ฐ€ ๋ฌด์—‡์ธ์ง€์™€ DI๋ฅผ ์จ์•ผํ•˜๋Š” ์ด์œ 
    • Koin vs Dagger ๋น„๊ต

๋ฉ”๋ชจ

  • DI(์˜์กด์„ฑ ์ฃผ์ž…)
    • ๋‹ค๋ฅธ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐœ์ƒํ•˜๋Š” ์˜์กด์„ฑ
    • ๊ฐ์ฒด๋ฅผ ์ง์ ‘ ์ƒ์„ฑํ•ด์„œ ์“ฐ๋Š” ๋Œ€์‹ ์—, ๋‹ค๋ฅธ๊ณณ์—์„œ ์ƒ์„ฑํ•˜๊ณ  ์ „๋‹ฌ๋ฐ›๋Š” ๊ฒƒ์„ ์˜๋ฏธ
  • ์™œ DI๋ฅผ ์จ์•ผ ํ•˜๋Š”๊ฐ€?
    • ์‰ฌ์šด ๋ฆฌํŒฉํ† ๋ง
    • ๋†’์€ ์žฌ์‚ฌ์šฉ์„ฑ
    • ์‰ฌ์šด ํ…Œ์ŠคํŠธ
    • ๊ฒฐ๋ก ์€ Loosed coupling!!
  • DI ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋น„๊ต
    • Manual DI
      • ๊ฒฐ๋ก ์ ์œผ๋กœ ์•กํ‹ฐ๋น„ํ‹ฐ/ํ”„๋ž˜๊ทธ๋จผํŠธ์—์„œ ์ƒ์„ฑํ•˜๊ฒŒ ๋จ
    • Koin
      • Service Locator
      • ๋Ÿฐํƒ€์ž„์— ํƒ€์ž…์ฒดํฌ๋ฅผ ํ•˜๋Š”๋ฐ ์ด๊ฒƒ์ด ์žฅ์ ์ด์ž ๋‹จ์ 
    • Dagger
      • Generated Code
      • ์ปดํŒŒ์ผ ํƒ€์ž… ์ฒดํฌ
      • ๋†’์€ ํ•™์Šต๋น„์šฉ
      • ์•ฑ ์‚ฌ์ด์ฆˆ๊ฐ€ ์ปค์งˆ์ˆ˜๋ก ์œ ๋ฆฌํ•ด์ง„๋‹ค.
  • Dagger ๊ตฌ์„ฑ
    • Module
    • Bind / Provide
    • Component
  • AndroidInjector
  • Google Guide
  • Dagger support Kotlin