๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ

(377)
[Android][Google Play Console]๋„ค์ดํ‹ฐ๋ธŒ ๋””๋ฒ„๊ทธ ๊ธฐํ˜ธ ํŒŒ์ผ ์ˆ˜๋™ ์—…๋กœ๋“œ ๊ตฌ๊ธ€ ํ”Œ๋ ˆ์ด ์ฝ˜์†”์—์„œ ์•ฑ ๋ฐฐํฌ๋ฅผ ์œ„ํ•ด aab ํŒŒ์ผ์„ ์—…๋กœ๋“œํ•  ๋•Œ๋งˆ๋‹ค ๋„ค์ดํ‹ฐ๋ธŒ ๋””๋ฒ„๊ทธ ๊ธฐํ˜ธ ํŒŒ์ผ์ด ์—†๋‹ค๊ณ  ๊ฒฝ๊ณ ๊ฐ€ ๋–ด์—ˆ๋‹ค. ๊ทธ ๊ฒฝ๊ณ ๋ฅผ ๋ฌด์‹œํ•˜๊ณ  ์•ฑ์„ ์ž˜๋งŒ ์—…๋ฐ์ดํŠธ ํ–ˆ์—ˆ๊ณ  ์ด์Šˆ ๋ชจ๋‹ˆํ„ฐ๋ง์€ ํŒŒ์ด์–ด๋ฒ ์ด์Šค์˜ ํฌ๋ž˜์‹œ๋ฆฌํ‹ฑ์Šค๋ฅผ ์ด์šฉํ•ด์„œ ํฌ๊ฒŒ ๋ถˆํŽธํ•œ ์ ์€ ์—†์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฒฝ๊ณ ๊ฐ€ ์ž๊พธ ๋œจ๋Š” ๊ฒƒ์ด ๋ˆˆ์— ๊ฑฐ์Šฌ๋ฆฌ๊ณ  ๊ตฌ๊ธ€ ํ”Œ๋ ˆ์ด ์ฝ˜์†”์ด ๊ถŒ์œ ํ•˜๋Š”๋ฐ์—๋Š” ์ด์œ ๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•„๋‹ˆ ์ด ๊ฒฝ๊ณ ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ ์ž ํ–ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ Android Developers์˜ ๊ณต์‹ ๋ฌธ์„œ๋Œ€๋กœ app์˜ build.gradle์— ์„ค์ •์„ ์ถ”๊ฐ€ํ•ด๋„ ์‹ค์ œ aab ํŒŒ์ผ์— ๋””๋ฒ„๊ทธ ์ •๋ณด๊ฐ€ ๋“ค์–ด๊ฐ€ ์žˆ์ง€ ์•Š์•˜๋‹ค. ์ด๊ฑด Android Studio ์ชฝ ๋ฒ„๊ทธ์ธ ๋“ฏ ํ•˜๋‹ค. https://issuetracker.google.com/issues/187734554 https://issuetra..
[Android][Retrofit] onFailure: java.io.IOException: unexpected end of stream on ... https://stackoverflow.com/a/53179102 java.io.IOException: unexpected end of stream on Connection? Calling one of our in-house web services seems to be giving the following error: java.io.IOException: unexpected end of stream on Connection{webservicessandbox.xxx.com:443, proxy=DIRECT@ hostAddre... stackoverflow.com
[Android][Retrofit] HTML Response ์ด์ œ๊ป ์›น๋ทฐ์—์„œ url์„ ๋กœ๋“œํ•˜๋ฉด ๋‹น์—ฐํžˆ 200์ด ๋–จ์–ด์ง€๋‹ˆ๊นŒ html ํŒŒ์ผ์ด ํ™”๋ฉด์— ๋…ธ์ถœ๋˜๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค๋งŒ ์ž‘์—…ํ•˜๋‹ค๊ฐ€, ์ด๋ฒˆ์—๋Š” api๋ฅผ ์ฐ”๋Ÿฌ์„œ 200 ์ฝ”๋“œ๋ฅผ ๋ฐ›์•„์•ผ์ง€๋งŒ ์›น๋ทฐ๋ฅผ ๋…ธ์ถœ์‹œ์ผœ html ํŒŒ์ผ์„ ๋กœ๋“œํ•˜๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ž‘์—…ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ๊ธฐ์กด ์•ฑ์—์„œ ์‚ฌ์šฉํ•ด ์˜จ Retrofit2๋กœ ์ž‘์—…ํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค. ๊ณ ๋ฏผํ•œ ์‚ฌํ•ญ๋“ค์ด๋‹ค. 1. Call ๋˜๋Š” Response ๋‘˜ ์ค‘์— ์–ด๋Š ๊ฒƒ์„ ์“ธ ๊ฒƒ์ธ๊ฐ€? > Response Coroutine์„ ์“ฐ๊ณ  ์žˆ์–ด์„œ, Response๊ฐ€ ๋” ์ ํ•ฉํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค. ๋น„๋™๊ธฐ ์ž‘์—…์— Response๊ฐ€ Call๋ณด๋‹ค ์‚ฌ์šฉํ•˜๊ธฐ ์ข‹๋‹ค๊ณ  ํ•œ๋‹ค. https://jeongupark-study-house.tistory.com/208 Retrofit call ๊ณผ Response ์ฐจ์ด Android ๊ฐœ๋ฐœ ์‹œ ๋„คํŠธ์›Œ..
[Android]์ด๋ฉ”์ผ validation ์œ ํšจํ•œ ์ด๋ฉ”์ผ ์ฃผ์†Œ ๊ธธ์ด๋Š” ์–ด๋– ํ•œ๊ฐ€ ๊ณ ๋ฏผํ•˜๋‹ค๊ฐ€ ์ฐพ๊ฒŒ๋˜์—ˆ๋‹ค. https://www.geeksforgeeks.org/implement-email-validator-in-android/ Implement Email Validator in Android - GeeksforGeeks A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions. www.geeksforgeeks.org https://de..
[Android][Java] SharedPreference object ์•ˆ Context๋กœ memory leak ๊ฒฝ๊ณ  SharedPreferences๋ฅผ ํŽธํ•˜๊ฒŒ ์จ๋ณด๊ฒ ๋‹ค๊ณ  Object๋กœ ๋žฉํ•‘ํ–ˆ์—ˆ๋‹ค. Application ํด๋ž˜์Šค์˜ onCreate()์—์„œ ์ดˆ๊ธฐํ™” ์‹œ application context๋ฅผ ๋ฐ›์•„ SharedPreferences ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ๋•Œ๋งˆ๋‹ค context๋ฅผ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฐ›์•„์˜ค์ง€ ์•Š๋„๋ก ํ•ด์„œ ์ •๋ง ํŽธํ•˜๊ฒŒ ์“ฐ๊ณ  ์žˆ์—ˆ๋Š”๋ฐ, ์•ˆ๋“œ๋กœ์ด๋“œ ์ŠคํŠœ๋””์˜ค์—์„œ memory leak ๊ฒฝ๊ณ ๋ฅผ ๋„์›Œ์คฌ๋‹ค. Do not place Android context classes in static fields (static reference to 'Pref' which has field 'context' pointing to 'Context'); this is a memory leak ์ดˆ๊ธฐํ™” ์‹œ์— ๋ฐ›์•„์˜ค๋Š” context๋ฅผ WeakReferen..
[Android][ADB] ๋น„ํ–‰๊ธฐ ๋ชจ๋“œ on/off, ๋น„ํ–‰๊ธฐ ๋ชจ๋“œ ํ™•์ธ ๋น„ํ–‰๊ธฐ ๋ชจ๋“œ on adb shell settings put global airplane_mode_on 1 ๋น„ํ–‰๊ธฐ ๋ชจ๋“œ off adb shell settings put global airplane_mode_on 0 ๋น„ํ–‰๊ธฐ ๋ชจ๋“œ ์—ฌ๋ถ€ ํ™•์ธ adb shell settings get global airplane_mode_on ๊ฒฐ๊ณผ 0 > off 1 > on
[Google Play Console] ์ด์˜์ œ๊ธฐ ํ•˜๊ธฐ ๊ตฌ๊ธ€ ํ”Œ๋ ˆ์ด์—์„œ ํšŒ์‚ฌ ์•ฑ๋“ค์— ๋Œ€ํ•ด์„œ ์—…๋ฐ์ดํŠธ ๊ฑฐ๋ถ€, ์•ฑ ๊ฑฐ๋ถ€ ๋ฉ”์ผ์„ ์ข…์ข… ๋ณด๋‚ด์˜จ๋‹ค. ๋‚ด๊ฐ€ ๋‹ด๋‹นํ•œ ์•ฑ์— ์•ฑ ๊ฑฐ๋ถ€ ๋ฉ”์ผ์ด ๋‚ ์•„์˜ค๋ฉด ์ŠคํŠธ๋ ˆ์Šค ๋ฐ›๋Š”๋‹ค. ์ด๋ฒˆ์— ์ƒˆ ๋ฒ„์ „์˜ ์•ฑ ๋ฒˆ๋“ค์„ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ๋‚˜์„œ ๋ฐ›์€ ๋ฉ”์ผ์ด๋‹ค. ์ € ์ฒจ๋ถ€๋œ ์Šคํฌ๋ฆฐ์ƒท์ด ๋‚˜์˜ ์–ต์šธํ•จ์„ ํ’€์–ด์คฌ๋‹ค. ๊ตฌ๊ธ€ ํ”Œ๋ ˆ์ด ์ชฝ์—์„œ ๋‚ด๊ฐ€ ๊ธฐ์ž…ํ•œ ํ…Œ์ŠคํŠธ์šฉ ๋กœ๊ทธ์ธ ๊ณ„์ •์„ ์˜คํƒ€๋กœ ์ž˜๋ชป ์ž…๋ ฅํ•˜๊ณ  ํ•ด๋‹น ๊ณ„์ •์€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ํ† ์ŠคํŠธ๊ฐ€ ๋‚˜์˜จ ์Šคํฌ๋ฆฐ์ƒท์„ ๋ณด๋‚ด์คฌ๋‹ค. ์ƒํ™ฉ ํŒŒ์•…ํ•˜๊ณ  ๊ฐœ๋นก์นจ ๋•๋ถ„์— ์ด์˜์ œ๊ธฐ๋„ ํ•ด๋ดค๋‹ค. 1. ์ •์ฑ… > ์ •์ฑ… ์ƒํƒœ ํŽ˜์ด์ง€๋กœ ์ง„์ž…ํ•œ๋‹ค. 2. ํ•ด๋‹น ํ™”๋ฉด ์•„๋ž˜์˜ "์ด์˜์ œ๊ธฐ"๋ผ๋Š” ์—ฐํ•œ ํšŒ์ƒ‰ ํ…์ŠคํŠธ ๋ฒ„ํŠผ(์ง€๊ธˆ์€ ๊ฒ€์ˆ˜ ํ†ต๊ณผ๋œ ์ƒํƒœ๋ผ์„œ ์ฐพ์„ ์ˆ˜ ์—†๋‹ค. ๊ทธ๋ž˜์„œ ์บก์ณ ๋ถˆ๊ฐ€.)์„ ํด๋ฆญํ•˜๋ฉด ์ด์˜์ œ๊ธฐ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋Š” ํผ์ด ๋‚˜์˜จ๋‹ค. 3. ํผ์—๋Š” ๋‘ ๊ฐœ์˜ ์ž…๋ ฅ์นธ์ด ์žˆ๋Š”๋ฐ, ํ•˜๋‚˜๋Š”..
[Android][Coroutine][SharedPreferences] ํƒ€์ด๋จธ ๊ตฌํ˜„ ์ธ์ฆ๋ฒˆํ˜ธ๊ฐ€ ๋‹ด๊ธด ๋ฌธ์ž๋ฅผ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ „์†ก ์š”์ฒญํ•˜๋Š” ์„œ๋ฒ„ api๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  2๋ถ„ ๋™์•ˆ ์ธ์ฆ๋ฒˆํ˜ธ ์žฌ๋ฐœ๊ธ‰์„ ๋ง‰๋Š” ํƒ€์ด๋จธ์˜ ๊ตฌํ˜„์„ ํ•ด์•ผ ํ–ˆ๋‹ค. ํƒ€์ด๋จธ ๊ตฌํ˜„์€ ์ฒ˜์Œ์ด๋ผ์„œ ๊ณ ๋ฏผ์„ ๋งŽ์ด ํ–ˆ๋‹ค. CountDownTimer๋ฅผ ์“ธ๊นŒ, ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ• ๊นŒ... ์„ ๋ฐฐ๋‹˜๊ป˜ ์—ฌ์ญค๋ดค๋”๋‹ˆ CountDownTimer์™€ ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ์•ฑ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‚ ๋ผ๊ฐ€๋Š” ๊ฒฝ์šฐ์—๋Š” ์žฌ๊ณ  ์žˆ๋˜ ์‹œ๊ฐ„๋„ ๋‚ ๋ผ๊ฐ„๋‹ค๊ณ  ์•Œ๋ ค์ฃผ์…จ๋‹ค. SharedPreferences๋ฅผ ์จ์„œ ํ™”๋ฉด์— ์ง„์ž…ํ•˜๊ณ  ๋‚˜๊ฐˆ ๋•Œ๋งˆ๋‹ค ์‹œ๊ฐ„์„ ๊ธฐ๋กํ•˜๋Š” ๊ฒƒ์„ ์“ฐ๊ณ , ์ฝ”๋ฃจํ‹ด์„ ์“ฐ๋ฉด ์‰ฝ๋‹ค๊ณ  ์•Œ๋ ค์ฃผ์…จ๋‹ค. ๋„ˆ๋ฌด ๋‹น์—ฐํ•œ ๊ฑธ ๋ชฐ๋ž๋ƒ๋Š” ์„ ๋ฐฐ๋‹˜์˜ ํ‘œ์ •์„ ๋ณด๊ณ ๐Ÿ˜ณ ๋ฐ˜์„ฑํ•ฉ๋‹ˆ๋‹ค๐Ÿ˜ž ์™œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‚ ๋ผ๊ฐ€๋Š” ๊ฒฝ์šฐ๋Š” ์ƒ๊ฐ์„ ๋ชปํ•œ๊ฑฐ์•ผ ๊ทธ ๋’ค๋กœ ์ž‘์—…์€ ์‰ฌ์› ๋‹ค. ์—ฌ๋Ÿฌ ๊ฐœ๋ฐœ์ž๋“ค์˜ ์†์„ ๊ฝค๋‚˜ ํƒ„ ์ด ์•ฑ์˜ ์ฝ”๋“œ๋Š” SharedPrefer..