user-img
๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ 21
[Android] Room๊ณผ Retrofit์—์„œ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๊ฐ€ ๊ฐ™์„ ๋•Œ, ๊ฐ™์€ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋กœ ์‚ฌ์šฉํ•ด๋„ ๋ ๊นŒ?
AI Chat์•ฑ์„ ๊ตฌํ˜„ํ•˜๋˜ ์ค‘์ด์—ˆ์Šต๋‹ˆ๋‹ค.https://openai.com/ ์—์„œ ์ œ๊ณตํ•˜๋Š” api๋ฅผ ์‚ฌ์šฉํ–ˆ๊ตฌ์š”.Retrofit์œผ๋กœ ํ†ต์‹ ํ•˜๊ณ , Room์œผ๋กœ ๋Œ€ํ™” ๋‚ด์—ญ์„ ์ €์žฅํ•˜๊ณ ์ž ํ–ˆ์Šต๋‹ˆ๋‹ค.  ํ†ต์‹ ํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋ฉด์š”,requestBody์— role๊ณผ content๋ฅผ ๋ณด๋‚ด๊ณ responseBody์—์„œ๋„ role๊ณผ content๋ฅผ ๋ฐ›์•„์š”. ์ „ ๊ทธ๋ž˜์„œ ์ƒ๊ฐํ–ˆ์ฃ ..์•„, ํ†ต์‹ ํ•  ๋•Œ role๊ณผ content๋ฅผ ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋กœ ๋งŒ๋“ค์–ด์„œ ์‚ฌ์šฉํ•˜๋ฉด ๋˜๊ฒ ๊ตฌ๋‚˜.  ๊ทธ๋ฆฌ๊ณ  Room์œผ๋กœ ๋””๋ฐ”์ด์Šค์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๋•Œ๋Š”{ํ•ญ๋ชฉ์„ ๊ตฌ๋ถ„ํ•  id, ํ•ญ๋ชฉ์˜ title,role + content์˜ ๋ฆฌ์ŠคํŠธ}๊ฐ€ ์ €์žฅ๋˜๋ฉด ์ข‹๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋„ role๊ณผ content๊ฐ€ ํ•„์š”ํ•˜๋„ค?ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ ํด๋ž˜์Šค๋กœ ๋งŒ๋“ค์–ด์„œ ๊ฐ™์ด ์จ๋„ ๋˜์ง€..
2023.08.16
Android
[Android] Jetpack Compose Navigation ์ ์šฉํ•ด์„œ ํ™”๋ฉด ์ด๋™ํ•˜๊ธฐ
์•ˆ๋“œ๋กœ์ด๋“œ์— Compose๋กœ ๊ตฌํ˜„ํ•œ๋‹ค๋ฉดํ™”๋ฉด ์ด๋™ํ•  ๋•Œ๋„ Compose Navigation์„ ์จ์ค˜์•ผ ํ•˜์ง€ ์•Š๊ฒ ์Šต๋‹ˆ๊นŒ? ์•„๋ž˜์™€ ๊ฐ™์€ ์ƒํ™ฉ๋“ค์—์„œ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์˜ˆ์‹œ๋ฅผ ์ ์–ด๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.1. ํ™”๋ฉด ์ด๋™ํ•˜๊ธฐ2. ์ธ์ž ์ „๋‹ฌํ•˜๊ธฐ2-1. String ํƒ€์ž… ์ด๋™2-2. ์ปค์Šคํ…€ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ (Parcelable ํƒ€์ž…) ์ด๋™ ์šฐ์„  build.gradle(app)์— ์•„๋ž˜ dependency ์ถ”๊ฐ€๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.dependencies { def nav_version = "2.6.0" implementation "androidx.navigation:navigation-compose:$nav_version"} ์ตœ์‹  ๋ฒ„์ „์€ ๊ณต์‹๋ฌธ์„œ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.https://developer.android.com/jetpack..
2023.07.23
Android/Jetpack Compose
Build.gradle์—์„œ ๋ฐœ์ƒํ•˜๋Š” kotlin version ์—๋Ÿฌ
๋ฐœ๋‹จ...Jetpack Compose Navigation์„ ํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค.๊ทธ๋ž˜์„œ app๋‹จ build.gradle์— ์•„๋ž˜์˜ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ๊ณ  ๋นŒ๋“œํ•ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. implementation "androidx.navigation:navigation-compose:2.6.0" ๊ทธ๋žฌ๋”๋‹ˆ ์•„๋ž˜์™€ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. Duplicate class kotlin.collections.jdk8.CollectionsJDK8Kt found in modules kotlin-stdlib-1.8.20 (org.jetbrains.kotlin:kotlin-stdlib:1.8.20) and kotlin-stdlib-jdk8-1.7.20 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.20)Dupli..
2023.07.20
Android/Error
[Android] Firestore Coroutine์œผ๋กœ ๋ฐ›์•„์˜ค๊ธฐ
๋“ค์–ด๊ฐ€๋ฉฐ์„œ๋ฒ„ ๊ตฌ์ถ•์ด ์–ด๋ ค์šด ์ดˆ์งœ ํ”„๋ก ํŠธ ๊ฐœ๋ฐœ์ž๋ผ ๋””๋น„๊ฐ€ ํ•„์š”ํ•˜๋ฉด ํ•ญ์ƒ Firebase๋ฅผ ์• ์šฉํ•ด์™”๋Š”๋ฐ ์ด๋ฒˆ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ค๋Š”๋ฐ ๋‚œํ•ญ์ด ๊ฒช์—ˆ์Šต๋‹ˆ๋‹ค..๐Ÿ˜ญ๐Ÿ˜ญ์•„๋‹ˆ Firebase๊ฐ€ ๋น„๋™๊ธฐ๋ผ๊ณ ?๋น„๋™๊ธฐ๋Š” ํ•™๊ณผ ์ˆ˜์—…์‹œ๊ฐ„์— ๊ฒ‰ํ•ฅ๊ธฐ๋กœ ๋“ค์€๊ฒŒ ๋‹ค์ธ ๋‚˜๋Š” ๊ธ‰ํ•˜๊ฒŒ ๊ณต๋ถ€๋ฅผ ํ•˜๊ฒŒ ๋์Šต๋‹ˆ๋‹ค.์ด๋ก ์ ์ธ๊ฑฐ ๋ง๊ณ  ๊ตฌํ˜„์ ์œผ๋กœ...์ฝ”๋ฃจํ‹ด์œผ๋กœ? RxJava๋กœ?๋น„๋™๊ธฐ ์ฒ˜๋ฆฌํ•˜๋ฉด ๋‚˜์˜ค๋Š”๊ฒŒ ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ๋”๋ผ๊ตฌ์š”.์ฝ”๋ฃจํ‹ด๊ณผ Rx.์ฑ„์šฉ ์ •๋ณด๋ณด๋ฉด ๋น ์ง€์ง€ ์•Š๊ณ  ๋“ค์–ด๊ฐ€๋Š” ์šฐ๋Œ€์‚ฌํ•ญ์— RxJava๊ฐ€ ์žˆ์–ด์„œ RxJava๋ฅผ ๊ณต๋ถ€ํ•ด์•ผํ•˜๋‚˜? ๊ณ ๋ฏผํ•˜๋‹ค๊ฐ€๋จผ์ € ์ทจ๋ฝ€ํ•œ ์„ ๋ฐฐ์™ˆ,(์„ ๋ฐฐ ํšŒ์‚ฌ ์‹ ์ž… ๊ฐœ๋ฐœ์ž๋“ค) ๋‹ค๋“ค ์ฝ”๋ฃจํ‹ด ๊ธฐ๋ณธ์œผ๋กœ ํ•˜๊ณ  ํšŒ์‚ฌ์™€์„œ Rx๋ฐฐ์šฐ๊ณ  ์žˆ๋‹ค.์•„.... ์ฝ”๋ฃจํ‹ด์ด ๊ธฐ๋ณธ์ด๊ตฌ๋‚˜....(๋‹จ์ˆœ) ํ•˜๊ณ  ์ฝ”๋ฃจํ‹ด์„ ์ด์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค๐Ÿ˜์•ˆ๋“œ๋กœ์ด๋“œ์˜ ์ฝ”๋ฃจํ‹ดGradle ..
2023.07.17
Android
Could not identify launch activity: Default Activity not found ์—๋Ÿฌ ํ•ด๊ฒฐ
Could not identify launch activity: Default Activity not foundError while Launching activityFailed to launch an application on all devices ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค๋ฉด Manifest ํŒŒ์ผ์„ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.  ์œ„์™€ ๊ฐ™์ด LAUNCHER๋˜๋Š” activity๊ฐ€ ์ž‘์„ฑ๋˜์–ด ์žˆ์–ด์•ผ ํ•˜๋Š”๋ฐ ๊ฐ€ ๋ˆ„๋ฝ๋˜์—ˆ๊ฑฐ๋‚˜ ๊ฐ€ ๋ˆ„๋ฝ๋˜์–ด ์žˆ์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค.   ๋งŒ์•ฝ ์ถ”๊ฐ€๊ฐ€ ๋˜์–ด์žˆ๋Š”๋ฐ๋„ ํ•ด๋‹น ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋ฉด..File > Invalidate Caches > Invalidate and Restart ๋กœ ์žฌ๋นŒ๋“œ ํ•˜๋Š” ๊ฒƒ๋„ ์•„์ฃผ ์ข‹์€.. ..
2023.07.07
Android/Error
@hiltandroidapp to have a value. did you forget to apply the gradle plugin ์—๋Ÿฌ ํ•ด๊ฒฐ
์•ˆ๋“œ๋กœ์ด๋“œ ํ”„๋กœ์ ํŠธ์— Hilt๋ฅผ ์„ค์ •ํ•  ๋•Œ๋Š”ํ•˜๋‚˜๋งŒ ๋น ์ ธ๋„ ๋นŒ๋“œ๊ฐ€ ์•ˆ๋˜๋Š” ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋น ์ง„ ๊ฒŒ ์—†๋Š” ์ง€ ์ฃผ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.   ์ œ๋ชฉ๊ณผ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ๋Š” gradle์— ๋น ๋œจ๋ฆฐ ๊ฒŒ ์—†๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•˜๋Š”๋ฐ   ์šฐ์„  app ์ˆ˜์ค€์˜ build.gradle ์—๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ๋‚ด์šฉ๋“ค์ด ๋“ค์–ด๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.plugins { id 'kotlin-kapt' id 'dagger.hilt.android.plugin'}dependencies { implementation "com.google.dagger:hilt-android:2.44" kapt "com.google.dagger:hilt-android-compiler:2.44"}   ๊ทธ๋ฆฌ๊ณ  project ์ˆ˜์ค€์˜ build.gradle ์—..
2023.07.04
Android/Error
[Android] Waiting for target device to come online ์˜ค๋ฅ˜๋‚  ๋•Œ
๋“ค์–ด๊ฐ€๊ธฐ์•ˆ๋“œ๋กœ์ด๋“œ ์ŠคํŠœ๋””์˜ค์—์„œ Run์„ ์‹คํ–‰ํ•  ๋•Œ,Waiting for target device to come online .. ๋ผ๋Š” ๋ฌธ๊ตฌ๊ฐ€ ๋œจ๋ฉด์„œ ๋ฌดํ•œ ๋กœ๋”ฉ์— ๋น ์ ธ๋ฒ„๋ฆฐ ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค ๐Ÿ˜ข๊ทธ๋Ÿด ๋•Œ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•๋“ค์„ ์ ์–ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค! ๋ฐฉ๋ฒ•(1) AVD Manager -> Wipe Data์ด ์ž‘์—…์€ ํ•ด๋‹น ๊ฐ€์ƒ ๋””๋ฐ”์ด์Šค์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œ์‹œํ‚ต๋‹ˆ๋‹ค.๋Œ€๋ถ€๋ถ„ ์ด ์ž‘์—…์œผ๋กœ ๋งŽ์ด ํ•ด๊ฒฐ๋œ๋‹ค๊ณ  ํ•ด์š”. (2) AVD Manager -> Cold Boot Now์—๋ฎฌ๋ ˆ์ดํ„ฐ๋ฅผ ์žฌ๋ถ€ํŒ… ์‹œ์ผœ์ฃผ๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.ํ•ธ๋“œํฐ์ด ๋จนํ†ต์ผ ๋•Œ ๊ป๋‹ค๊ฐ€ ํ‚ค๋Š” ๋ฐฉ๋ฒ•๊ณผ ๋น„์Šทํ•œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. (3) Invalidate Caches / Restart์บ์‹œ๋ฅผ ๋ฌดํšจํ™”ํ•˜๋‹ค. ์ฆ‰, ์บ์‹œ ๋น„์šฐ๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.์ด ์˜ค๋ฅ˜์ƒํ™ฉ ์™ธ์—๋„ ์•ˆ๋“œ๋กœ์ด๋“œ ์ŠคํŠœ๋””์˜ค๊ฐ€ ๋จนํ†ต์ผ ๋•Œ ..
2023.06.30
Android/Error
NoSQL ์ดํ•ดํ•˜๊ธฐ
NoSQL์— ๋Œ€ํ•œ ์žฌ๋ฏธ์žˆ๋Š” ์ด์•ผ๊ธฐ๋ฅผ ๋“ค์–ด์„œ ๊ธ€์„ ํ•œ๋ฒˆ ์จ๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.   ์šฐ์„  NoSQL์€ ๋น„๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ž…๋‹ˆ๋‹ค.์ผ๋ฐ˜์ ์œผ๋กœ ์•Œ๊ณ  ์žˆ๋Š” MySQL, Oracle๊ณผ ๊ฐ™์€ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๋‹ฌ๋ฆฌ ํ…Œ์ด๋ธ”์ด๋ž€ ๊ฐœ๋…์ด ์—†๊ณ , ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์กฐ์ธ์ด๋ž€ ๊ฐœ๋…๋„ ์—†์Šต๋‹ˆ๋‹ค. ์ข…๋ฅ˜๋กœ๋Š” MongoDB, HBase, Firebase์˜ Firestore ๋“ฑ์ด ์žˆ์ฃ .๊ทธ๋Ÿฐ๋ฐ ์‚ฌ์‹ค ์ด๋Ÿฌํ•œ ์ •์˜๋“ค๋กœ๋Š” ์„œ๋น„์Šค๋ฅผ ์„ค๊ณ„ํ•  ๋•Œ NoSQL์„ ์จ์•ผํ•˜๋Š”์ง€, RDBMS์„ ์จ์•ผํ•˜๋Š”์ง€ ์ž˜ ์ดํ•ดํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.   ๋ณด์•ˆ ํšŒ์‚ฌ์—์„œ ์ด๋Ÿฐ ์ผ์ด ํ•œ๋ฒˆ ์ผ์–ด๋‚ฌ์—ˆ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ—ฃ : ๋ถํ•œ์—์„œ ์นจ์ž…ํ•œ IP ๊ฐ™์€๋ฐ, ์ตœ๊ทผ 6๊ฐœ์›” ์ด IP๊ฐ€ ์นจ์ž…ํ•œ ๋กœ๊ทธ ๋ชจ์•„์„œ ๋ณด๋‚ด์ฃผ์„ธ์š”. ๊ทผ๋ฐ ๊ทธ ํšŒ์‚ฌ๋Š” RDBMS๋กœ ๋กœ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์—ˆ๋Œ€์š”. ๋‚ ์งœ๋ณ„๋กœ ์ž˜ ์ •๋ฆฌ๋œ..๋กœ๊ทธ๊ฐ€ ..
2023.06.28
What I Learned
thumbnail
[Android/Kotlin] ์ธ์•ฑ ์—…๋ฐ์ดํŠธ In-App Update (AppUpdateManager)
1
์ธ์•ฑ ์—…๋ฐ์ดํŠธ๋Š” ์–ดํ”Œ ๋‚ด์—์„œ ์‚ฌ์šฉ์ž์—๊ฒŒ ์•ฑ์„ ์—…๋ฐ์ดํŠธํ•˜๋ผ๊ณ  ๋ฉ”์‹œ์ง€๋ฅผ ํ‘œ์‹œํ•˜๋Š” Google Play Core ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ์ด๋Š” Developers์˜ ๋ฌธ์žฅ์ด๊ณ , ์กฐ๊ธˆ ๋” ์‰ฝ๊ฒŒ ๋งํ•˜์ž๋ฉด ์–ดํ”Œ ๋‚ด์—์„œ ์—…๋ฐ์ดํŠธ ๊ฐ€๋Šฅ ์—ฌ๋ถ€๋ฅผ ์ฒดํฌํ•˜๊ณ , ๋ฐ”๋กœ ์—…๋ฐ์ดํŠธ๋ฅผ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ธ์•ฑ ์—…๋ฐ์ดํŠธ์—๋Š” ๋‘ ๊ฐ€์ง€ ํ๋ฆ„์œผ๋กœ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค. ์œ ์—ฐํ•œ ์—…๋ฐ์ดํŠธ (Flexible Update) ์ฆ‰์‹œ ์—…๋ฐ์ดํŠธ (Immediate Update) Flexible Update๋Š” ๋ฐฑ๊ทธ๋ผ์šด๋“œ ๋‹ค์šด๋กœ๋“œ๋กœ ์ง„ํ–‰๋˜์–ด ์—…๋ฐ์ดํŠธ๊ฐ€ ์„ค์น˜๋˜๋Š” ๋™์•ˆ ์‚ฌ์šฉ์ž๊ฐ€ ์•ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์—…๋ฐ์ดํŠธ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. Immediate Update๋Š” ํฌ๊ทธ๋ผ์šด๋“œ์—์„œ ๋‹ค์šด๋กœ๋“œ๊ฐ€ ์ง„ํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์—, ์—…๋ฐ์ดํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์‚ฌ์šฉ์ž๋Š” ์—…๋ฐ์ดํŠธ์˜ ์„ค์น˜์™€ ์žฌ์‹คํ–‰๋˜๊ธฐ๊นŒ..
2022.09.19
Android