Skip to content

๐Ÿค– AN ๊ธฐ์ˆ  ์Šคํƒ

JUNWON LEE edited this page Sep 16, 2024 · 2 revisions

Android SDK

minSDK : 26, targetSDK: 34, compileSDK: 34

PokeRogue-Helper๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค์ค‘ ํ™”๋ฉด์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ฐ•๋ ฅํ•˜๊ฒŒ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ, ๋ฉ€ํ‹ฐ ์œˆ๋„์šฐ ์ง€์›์„ ์‹œ์ž‘ํ•˜๋Š” minSDK 24 ์„ ๊ณ ๋ คํ•˜์˜€์œผ๋‚˜ Android8-Oreo ๋ถ€ํ„ฐ isInMultiWindowMode(), onMultiWindowModeChanged() ์™€ ๊ฐ™์€ ๋ฉ”์„œ๋“œ๋“ค์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋ฉ€ํ‹ฐ ์œˆ๋„์šฐ ๋ชจ๋“œ์ผ ๋•Œ ์ž‘์—… ์ฒ˜๋ฆฌ๋ฅผ ์›ํ™œํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ๊ณ ๋ คํ•˜์—ฌ 26์„ minSDK์œผ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

Language

Kotlin

Architecture Design Pattern

MVVMPattern

MVVM

  1. Model : ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ์™€ ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌ(๋น„์ง€๋‹ˆ์Šค ๋กœ์ง)ํ•˜๋Š” ์˜์—ญ
  2. View : ์‚ฌ์šฉ์ž์—์„œ ๋ณด์—ฌ์ง€๋Š” UI ์˜์—ญ
  3. ViewModel: Model๊ณผ View ์‚ฌ์ด์˜ ์ค‘์žฌ์ž ์˜์—ญ
    • Model๋กœ๋ถ€ํ„ฐ ๋ฐ›์•„์˜จ Data๋ฅผ View์— ์นœํ™”์ ์ธ Data๋กœ ๊ฐ€๊ณต
    • View๋กœ๋ถ€ํ„ฐ Event๋ฅผ ๋ฐ›๊ณ , ์ด์— ๋Œ€ํ•œ ์ ์ ˆํ•œ ๋กœ์ง์„ ์ฒ˜๋ฆฌ
    • Databinding ๊ธฐ๋ฒ•์„ ํ™œ์šฉํ•˜์—ฌ ViewModel ์—์„œ ์—…๋ฐ์ดํŠธ๋œ Data๋ฅผ View ์™€ ๋™๊ธฐํ™”

Libraries

JetPack: lifecycle, room, dataStore

Retrofit: Web ์„œ๋น„์Šค์—์„œ ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์„ RESTFUL API๋กœ ๊ฐ„ํŽธํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

Kotlin-Serialization: JSON ์ง๋ ฌํ™”ํ•  ๋•Œ Reflection ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ , ์•ˆ์ „ํ•œ ํƒ€์ž… ์ปจ๋ฒ„ํŒ…, Default Parameter์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

Glide : PokeRogue-Helper ๋Š” ํ•œ ๋ฒˆ์— ๋Œ€์šฉ๋Ÿ‰์˜ ์ด๋ฏธ์ง€๋ฅผ ๋กœ๋“œํ•  ์˜ˆ์ •์ด๊ธฐ์— Glide ๋ฅผ ์ฑ„ํƒํ•˜์˜€์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, ์ด๋ฅผ ์•ˆ๋“œ๋กœ์ด๋“œ์—์„œ ๊ณต์‹์œผ๋กœ ๊ถŒ์žฅํ•˜๋Š” ์ด๋ฏธ์ง€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ Coil๊ณผ ๋น„๊ตํ•˜์—ฌ ๋ฒค์น˜๋งˆํ‚น ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด๋ณธ ํ›„ ์ตœ์ข… ๊ฒฐ์ •ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Timber : Log๋ฅผ Debug ์ƒํƒœ์—์„œ๋งŒ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๊ณ , ๋กœ๊ทธ ๋ฉ”์„ธ์ง€๋ฅผ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Async Programming

Kotlin Coroutines,Flow

  1. ์ฝ”๋ฃจํ‹ด์€ ๊ตฌ์กฐํ™”๋œ ๋™์‹œ์„ฑ ๊ธฐ๋ฒ•์„ ํ™œ์šฉํ•˜์—ฌ db, ๋„คํŠธ์›Œํฌ ํ†ต์‹ ๊ณผ ๊ฐ™์€ ์ž‘์—…๋“ค์„ ๋น„๋™๊ธฐ๋กœ ์•ˆ์ „ํ•˜๊ณ  ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. Flow Api๋ฅผ ํ†ตํ•ด ๋‹ค์–‘ํ•œ ์—ฐ์‚ฐ์ž๋ฅผ ํ†ตํ•ด ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  3. ์—ฌ๋Ÿฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(e. Jetpack, Retrofit)์—์„œ ์ฝ”๋ฃจํ‹ด์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  4. Acc DataBinding์ด StateFlow ๋ฅผ ๊ฒฐํ•ฉํ•˜์—ฌ LiveData ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Test

Espresso, Jnuit5, Kotest

  1. DSL๊ณผ Kotest Assertion ์„ ํ™œ์šฉํ•˜์—ฌ ๋” ๊ฐ€๋…์„ฑ ๋†’์€ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ๋‹ค์–‘ํ•œ ํ…Œ์ŠคํŠธ ๋ ˆ์ด์•„์›ƒ(e. String Spec, Behavior Spec)์„ ํ…Œ์ŠคํŠธ ์ƒํ™ฉ์— ๋งž๊ฒŒ ์„ค์ •ํ•˜์—ฌ ๋” ํšจ๊ณผ์ ์ธ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Gradle Dependency

Gradle Version Catalog(Gradle ๊ณต์‹๋ฌธ์„œ, Android ๊ณต์‹๋ฌธ์„œ)

Version Catalog๋ฅผ ํ™œ์šฉํ•˜๋ฉด dependency, plugin์„ ํ•˜๋‚˜์˜ ๊ณต๊ฐ„์—์„œ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ณ  ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์šฉ์ดํ•ฉ๋‹ˆ๋‹ค.

  1. ์ถ”ํ›„ ๋ฉ€ํ‹ฐ ๋ชจ๋“ˆ ํ”„๋กœ์ ํŠธ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•œ๋‹ค๋ฉด, ๋ชจ๋“ˆ๋ณ„๋กœ dependency, plugin์˜ path๋ฅผ ์„ค์ •ํ•˜๊ธฐ๊ฐ€ ์‰ฝ์Šต๋‹ˆ๋‹ค.
  2. dependency, plugin์„ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ์œ„ํ•ด path ๋ฌธ์ž์—ด์„ ํ•˜๋“œ์ฝ”๋”ฉํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  3. IDE์—์„œ ์˜์กด์„ฑ ๋˜๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ๋ชฉ๋ก์— ๋Œ€ํ•œ ์ฝ”๋“œ ์–ด์‹œ์Šคํ„ด์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  4. libs ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•˜์—ฌ Type-safe ํ•˜๊ฒŒ dependency, plugin์„ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.