user-img
Android 12
[Android] ์ด๋ฏธ์ง€ ํŒŒ์ผ(binary string) ๋ฐ›์•„์„œ Compose๋กœ ๋„์šฐ๊ธฐ
API ๋ฌธ์„œ์—์„œ Response๊ฐ’์ด string..Media type์ด image/png ์ผ ๋•Œ..์–ด๋–ป๊ฒŒ ํ•˜์‹œ๋‚˜์š”..? ๋‘๋ถ€๊ณ ๋ฐฑํ•˜์ž๋ฉด,, ๊ทธ๋™์•ˆ json ์‘๋‹ต๊ฐ’๋งŒ ์ฒ˜๋ฆฌํ–ˆ์–ด์„œ string๋งŒ? ๋ ์šฉ? ๐Ÿ˜ฎ์‚ด์ง ๊ฐ์ด ์•ˆ์™€์„œ postman๊นŒ์ง€ ๋Œ๋ ค๋ดค๋Š”๋ฐ ๋ฆฌ์–ผ๋ฃจ ์ด๋ฏธ์ง€ ํŒŒ์ผ์ด ์˜จ๊ฑฐ ๋ณด๊ณ ๋ˆˆ๋ฌผ์˜ ์‚ฝ์งˆ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค..  ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.Retrofit2 2.9.0okhttp3 4.11.0์›๋ž˜ (json ์‘๋‹ต๊ฐ’)๋ผ๋ฉด,@POST("transform") suspend fun request( @Part("type") type: RequestBody, @Part img: MultipartBody.Part, ): Response Response ๊ฐ’์œผ๋กœ ๋ฐ›์•„์„œ → apicall ๋ฐ›๋Š” ..
2024.04.15
Android
[Android] Retrofit MultipartBody๋กœ POST๋ณด๋‚ด๊ธฐ
API ๋ฌธ์„œ๋ฅผ ๋ฐ›์•˜๋Š”๋ฐ Request๊ฐ€ ์ด๋ ‡๊ฒŒ ๋˜์–ด์žˆ๋‹ค๋ฉด, ์šฐ๋ฆฌ๋Š” Multipart ๋ฐ์ดํ„ฐ๋กœ ๋ณด๋‚ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.๊ทธ๋ƒฅ @Body ์•„๋ƒ? ํ‰์†Œ์ฒ˜๋Ÿผ Json์œผ๋กœ ๋ณด๋‚ด์•ผ์ง€~ ํ–ˆ๋‹ค๊ฐ€๋Š”422 Unprocessable Entity ์—๋Ÿฌ๋งŒ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค..์–ด๋–ป๊ฒŒ ์•Œ์•˜๋ƒ๊ตฌ์š”? ์ €๋„ ์•Œ๊ณ  ์‹ถ์ง€ ์•Š์•˜์–ด์š”… ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.Retrofit2 2.9.0okhttp3 4.11.0POST๋กœ ํ˜ธ์ถœํ•˜๋ฉฐ,Request Body๋Š” type: String, img: String($binary)๊ฐ€ ์š”๊ตฌ๋˜๋Š” ์ƒํ™ฉ์ž…๋‹ˆ๋‹ค.   Api Interface ์ฝ”๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค.@Multipart@POST("transform") suspend fun request( @Part("type") type: Req..
2024.04.12
Android
[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