ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๋”๋ณด๊ธฐ
1๏ธโƒฃ Lymo ๊ฐœ๋ฐœ์ผ์ง€ #1: https://parkcool.tistory.com/8

2๏ธโƒฃ Lymo ๊ฐœ๋ฐœ์ผ์ง€ #2: https://parkcool.tistory.com/12

3๏ธโƒฃ Lymo ๊ฐœ๋ฐœ์ผ์ง€ #3: https://parkcool.tistory.com/14

4๏ธโƒฃ Lymo ๊ฐœ๋ฐœ์ผ์ง€ #4: ํ˜„์žฌ ๊ธ€

์ง€๋‚œ ์„ธ ํŽธ์˜ ์ผ์ง€๋ฅผ ํ†ตํ•ด AI์™€ ๋ฐฑ์—”๋“œ, ๊ทธ๋ฆฌ๊ณ  ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆฌ๋ฐ์„ ์™„์„ฑํ•˜๋Š” ๊ณผ์ •์„ ๋ณด์—ฌ๋“œ๋ ธ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์‚ฌ์šฉ์ž์˜ ๋ˆˆ์— ๋ณด์ด๋Š” ๋ถ€๋ถ„์ธ ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ๊ธฐ๋กœ ๋„˜์–ด๊ฐˆ ์ฐจ๋ก€์ž…๋‹ˆ๋‹ค.

 

์˜ค๋Š˜ ๋‹ค๋ฃฐ ์ฃผ์ œ๋Š” Lymo์˜ ์ •์ฒด์„ฑ๊ณผ๋„ ๊ฐ™์€ ๊ธฐ๋Šฅ์ด์ž, ๊ฐœ๋ฐœ ๊ณผ์ •์—์„œ ๊ฐ€์žฅ ๋งŽ์€ ์• ๋ฅผ ์ผ๋˜ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ๋ฐ”๋กœ ๊ธฐ๊ธฐ์—์„œ ์žฌ์ƒ๋˜๋Š”, ์ฆ‰ ๋‹ค๋ฅธ ์Œ์•… ์ŠคํŠธ๋ฆฌ๋ฐ ์•ฑ์—์„œ ๋‚˜์˜ค๋Š” ์Œ์•…์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ฐ€๋กœ์ฑ„๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

 

๐Ÿ•ต๏ธ ๋ฏธ๋””์–ด ์„ธ์…˜ ๊ฐ€๋กœ์ฑ„๊ธฐ

1ํŽธ์—์„œ ๋ง์”€๋“œ๋ ธ๋‹ค์‹œํ”ผ, Lymo์˜ ํ•ต์‹ฌ์ ์ธ ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ํ‰์†Œ ์“ฐ๋˜ ์Œ์•… ์•ฑ(์Šคํฌํ‹ฐํŒŒ์ด, ์œ ํŠœ๋ธŒ ๋ฎค์ง, ๋ฉœ๋ก  ๋“ฑ)์„ ๊ทธ๋Œ€๋กœ ์“ธ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ์Œ์•… ์•ฑ์—์„œ ์žฌ์ƒ ์ค‘์ธ ์Œ์•… ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์™€์„œ Lymo์—์„œ๋Š” ๊ทธ ๊ณก์˜ ํ•ด์„ ์ •๋ณด๋งŒ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋ ค๋‹ˆ ์‹œ์ž‘๋ถ€ํ„ฐ ๊ฑฐ๋Œ€ํ•œ ๋ฒฝ์— ๋ถ€๋”ชํ˜”์Šต๋‹ˆ๋‹ค.

 

์ถœ์ฒ˜: https://proandroiddev.com/the-layers-of-the-android-security-model-90f471015ae6

์•ˆ๋“œ๋กœ์ด๋“œ๋ฅผ ํฌํ•จํ•œ ๋Œ€๋ถ€๋ถ„์˜ OS์—์„œ๋Š” ๋ณด์•ˆ์„ ์œ„ํ•ด ์•ฑ๊ณผ ์•ฑ ์‚ฌ์ด๋ฅผ ๋ถ„๋ฆฌํ•˜๋Š” ์ƒŒ๋“œ๋ฐ•์Šค ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๊ธฐ๋ณธ์ ์œผ๋กœ Lymo๋Š” ์Šคํฌํ‹ฐํŒŒ์ด์—์„œ ์ง€๊ธˆ ๋ฌด์Šจ ๋…ธ๋ž˜๋ฅผ ์žฌ์ƒ ์ค‘์ธ์ง€ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

 

ํ•˜์ง€๋งŒ ๋ฐฉ๋ฒ•์ด ์ „ํ˜€ ์—†๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹คํ–‰ํžˆ๋„ ์•ˆ๋“œ๋กœ์ด๋“œ์—์„œ๋Š” MediaSessionManager๋ผ๋Š” API๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

 

์•ˆ๋“œ๋กœ์ด๋“œ์—์„œ ์ƒ๋‹จ ๋ฐ”๋ฅผ ๋‚ด๋ฆฌ๋ฉด ๋‚˜์˜ค๋Š” ๋ฏธ๋””์–ด ์•Œ๋ฆผ์—๋Š” ๊ณก ์ œ๋ชฉ, ์•„ํ‹ฐ์ŠคํŠธ, ์•จ๋ฒ” ์•„ํŠธ ์ •๋ณด ๋“ฑ ๊ณก์— ๋Œ€ํ•œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๊ฐ€ ๋‹ด๊ฒจ ์žˆ์Šต๋‹ˆ๋‹ค. MediaSessionManager๋ฅผ ์ด์šฉํ•˜๋ฉด ๋‹ค๋ฅธ ์•ฑ์—์„œ๋„ ํ˜„์žฌ ์žฌ์ƒ ์ค‘์ธ ์Œ์•… ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๊ทธ๋Ÿฌ๋‚˜ ์ด ์ •๋ณด๋ฅผ ๋งˆ์Œ๋Œ€๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. ๋ฏธ๋””์–ด ์„ธ์…˜๋„ ๊ฒฐ๊ตญ ์•Œ๋ฆผ ์ •๋ณด์˜ ์ผ์ข…์ด๊ณ , ์•Œ๋ฆผ ์ •๋ณด์— ์ ‘๊ทผํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๋ณด์•ˆ์ƒ ๋งค์šฐ ๋ฏผ๊ฐํ•œ ๋ฌธ์ œ ์ค‘ ํ•˜๋‚˜์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์•ฑ๋“ค์ด ์•Œ๋ฆผ ์ •๋ณด์— ๋งˆ์Œ๋Œ€๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•ด๋ฒ„๋ฆฐ๋‹ค๋ฉด, ๋‚ด ์นดํ†ก ์•Œ๋ฆผ์„ ๋‚˜๋„ ๋ชจ๋ฅด๋Š” ์‚ฌ์ด์— ๋ชจ๋ฅด๋Š” ์‚ฌ๋žŒ์ด ๊ฐ€๋กœ์ฑ„๊ฐˆ ์ˆ˜๋„ ์žˆ๋Š” ๋ฌด์„œ์šด ์ผ์ด ์ผ์–ด๋‚  ์ˆ˜๋„ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

๊ทธ๋ž˜์„œ ๊ฐค๋Ÿญ์‹œ ๊ธฐ๊ธฐ์— ํƒ‘์žฌ๋œ One UI ๊ธฐ์ค€์œผ๋กœ, ์•Œ๋ฆผ ์ ‘๊ทผ ํ—ˆ์šฉ ๊ถŒํ•œ์€ 'ํŠน๋ณ„ํ•œ ์ ‘๊ทผ'์ด๋ผ๋Š” ์„ค์ • ํ™”๋ฉด ๊นŠ์ˆ™ํ•œ ๊ณณ์—์„œ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋งŒํผ ๋ฏผ๊ฐํ•˜๊ณ  ์ค‘์š”ํ•œ ๊ถŒํ•œ์ด๋ผ๋Š” ๊ฒƒ์ด์ฃ .

 

โ˜บ๏ธ ์นœ์ ˆํ•œ UX

ํ•˜์ง€๋งŒ ์‚ฌ์šฉ์ž๋”๋Ÿฌ ์„ค์ • → ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ → ์šฐ์ธก ์ƒ๋‹จ ์  ์„ธ ๊ฐœ ๋ฒ„ํŠผ → ํŠน๋ณ„ํ•œ ์ ‘๊ทผ ํ™”๋ฉด → ์•Œ๋ฆผ ์ ‘๊ทผ ํ—ˆ์šฉ → Lymo ์•ฑ ํ—ˆ์šฉ ํ•ด๋‹ฌ๋ผ๊ณ  ํ•  ์ˆ˜๋Š” ์—†๋Š” ๋…ธ๋ฆ‡์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋ณด์‹œ๋‹ค์‹œํ”ผ ๊ฒฝ๋กœ๊ฐ€ ๋„ˆ๋ฌด ๋ณต์žกํ•˜๊ณ  ์–ด๋ ต์ž–์•„์š”. ๋‹คํ–‰ํžˆ ์ด ํ™”๋ฉด๊นŒ์ง€ ํ•œ ๋ฒˆ์— ๋ชจ์…”๋‹ค๋“œ๋ฆฌ๋Š”(?) ๋ฉ”์†Œ๋“œ๋ฅผ ์•ˆ๋“œ๋กœ์ด๋“œ์—์„œ ์ œ๊ณตํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

 

๊ทธ๋ž˜์„œ ์ €๋Š” Lymo๊ฐ€ ์•Œ๋ฆผ ์ ‘๊ทผ ๊ถŒํ•œ์„ ๋ถ€์—ฌ๋ฐ›์ง€ ๋ชป ํ–ˆ์œผ๋ฉด ์„ค์ • ํ™”๋ฉด์œผ๋กœ ๋ฐ”๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” UI๋ฅผ ๊ตฌํ˜„ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์œ„ ์‚ฌ์ง„์— ์žˆ๋Š” '์•Œ๋ฆผ ์ ‘๊ทผ ํ—ˆ์šฉํ•˜๊ธฐ'๋ฅผ ๋ˆ„๋ฅด๋ฉด ํ„ฐ์น˜ ํ•œ ๋ฒˆ์— ๊ถŒํ•œ์„ ํ—ˆ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์„ค์ • ํ™”๋ฉด์œผ๋กœ ๋ฐ”๋กœ ์ด๋™ํ•˜์—ฌ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด์ฃ .

 

๐ŸŒ‰ Expo Native Modules๋กœ ๋‹ค๋ฆฌ ๋†“๊ธฐ

์ด๋ฒˆ ๋ฌธ๋‹จ์—์„œ๋Š” ์กฐ๊ธˆ ๊ธฐ์ˆ ์ ์ธ ์–˜๊ธฐ๋ฅผ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. React Native๋Š” JS๋กœ ๋„ค์ดํ‹ฐ๋ธŒ ์•ฑ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ Kotlin ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•œ ๋„ค์ดํ‹ฐ๋ธŒ ๋ชจ๋“ˆ์˜ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‘˜์„ ์—ฐ๊ฒฐํ•˜๋Š” '๋‹ค๋ฆฌ'๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

 

์นด๋ฉ”๋ผ ์‚ฌ์šฉ, ๋งˆ์ดํฌ ์ ‘๊ทผ, ์•Œ๋ฆผ ๋„์šฐ๊ธฐ์™€ ๊ฐ™์ด ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋„ค์ดํ‹ฐ๋ธŒ ๊ธฐ๋Šฅ๋“ค์€ ์ด๋ฏธ JS์—์„œ ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋งŽ์ด ๊ณต๊ฐœ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” JS์—์„œ ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก '๋‹ค๋ฆฌ'๊นŒ์ง€ ์ด๋ฏธ ์ž˜ ๊ตฌ์ถ•๋œ ์ƒํƒœ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ œ๊ฐ€ ๊ตฌํ˜„ํ•˜๊ณ ์ž ํ•˜๋Š” '์•Œ๋ฆผ ์ ‘๊ทผ'์€ ๋งค์šฐ ํŠน์ˆ˜ํ•œ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ด๋ฏธ ๋ˆ„๊ฐ€ ๋งŒ๋“ค์–ด ๋‘” ๊ณต๊ฐœ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์ œ๊ฐ€ Kotlin ์ฝ”๋“œ๋Š” ๋ฌผ๋ก  JS์— ์ด๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๋‹ค๋ฆฌ๊นŒ์ง€ ์ง์ ‘ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๋œป์ด์—ˆ์Šต๋‹ˆ๋‹ค.

 

์ €๋Š” ์ด ํ”„๋กœ์ ํŠธ๋ฅผ Expo ํ™˜๊ฒฝ์—์„œ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ๋Š”๋ฐ์š”. ๋‹คํ–‰ํžˆ Expo๋Š” Native Modules๋ผ๋Š” ์„ธ๋ จ๋œ ๋ฐฉ์‹์„ ํ†ตํ•ด ๋„ค์ดํ‹ฐ๋ธŒ ๊ธฐ๋Šฅ์„ JS์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

 

์ „ํ†ต์ ์ธ React Native ์•ฑ๋“ค์€ JS์™€ ๋„ค์ดํ‹ฐ๋ธŒ ์‚ฌ์ด์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ๋•Œ ๋ธŒ๋ฆฟ์ง€๋ฅผ ํ†ต๊ณผํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ JSON ๋ฌธ์ž์—ด๋กœ ์ง๋ ฌํ™”ํ•ด์„œ ๋ณด๋‚ด๊ณ , ๋ฐ˜๋Œ€ํŽธ์—์„œ ๋‹ค์‹œ ์—ญ์ง๋ ฌํ™”ํ•˜๋Š” ๊ณผ์ •์€ ํ•„์—ฐ์ ์œผ๋กœ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ๋ฐœ์ƒ์‹œ์ผฐ์Šต๋‹ˆ๋‹ค.

 

ํ•˜์ง€๋งŒ Expo Native Modules๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” JSI (JavaScript Interface) ๋ฐฉ์‹์€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์ด๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์ด ๋„ค์ดํ‹ฐ๋ธŒ ๊ฐ์ฒด์— ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” C++ ๊ธฐ๋ฐ˜์˜ ์ธํ„ฐํŽ˜์ด์Šค์ž…๋‹ˆ๋‹ค. ์‰ฝ๊ฒŒ ๋งํ•ด, ์ค‘๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ํฌ์žฅํ•ด์„œ ํƒ๋ฐฐ๋กœ ๋ณด๋‚ด๋Š” ๊ณผ์ • ์—†์ด, ๋„ค์ดํ‹ฐ๋ธŒ์™€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๊ฐ™์€ ๋ฐฉ์— ์•‰์•„ ์ง์ ‘ ๋Œ€ํ™”ํ•˜๋Š” ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋งŒ๋“  ์…ˆ์ž…๋‹ˆ๋‹ค.

 

๋”๋ถˆ์–ด ๋™๊ธฐ ํ˜ธ์ถœ์ด ๊ฐ€๋Šฅํ•ด์ง€๊ณ  ๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ ์ž‘์„ฑ์ด ์ข€ ๋” ํŽธํ•ด์ง€๋Š” ๋“ฑ ๋ถ€๊ฐ€์ ์ธ ์ด์ ๋„ ์ฑ™๊ธธ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

 

๐Ÿƒ Headless JS๋กœ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—… ์ˆ˜ํ–‰ํ•˜๊ธฐ

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

 

์œ„ ์Šคํฌ๋ฆฐ์ƒท์—์„œ ๋ณด์‹œ๋‹ค์‹œํ”ผ ๋‹จ์ˆœํžˆ '์ด ๊ณก์˜ ํ•ด์„์„ ํ™•์ธํ•ด๋ณด์„ธ์š”' ๊ฐ™์€ ๊ณ ์ •๋œ ๋ฉ”์‹œ์ง€๊ฐ€ ์•„๋‹ˆ๋ผ, ๊ณก์˜ ๋‚ด์šฉ์— ๋”ฐ๋ผ ๋งค๋ฒˆ ๋‹ค๋ฅธ ๋ฉ”์‹œ์ง€๋ฅผ ์ƒ์„ฑํ•˜๊ณ ์ž ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์„œ๋ฒ„์—์„œ ๊ตฌ๋™๋˜๋Š” LLM์„ ์ด์šฉํ•˜์—ฌ์•ผ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„๋กœ์˜ ์š”์ฒญ์„ ๋ณด๋‚ด ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์•„์™€์•ผ ํ–ˆ๋˜ ๊ฒƒ์ด์—ˆ์ฃ .

 

์•ฑ์˜ ์žฌ๋ฐฉ๋ฌธ์œจ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋Š” ์ข‹์€ ์ „๋žต์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด ๊ธฐ๋Šฅ ์—ญ์‹œ ๊ตฌํ˜„์ด ์‰ฝ์ง€๋งŒ์€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์•ฑ์ด ๊บผ์ ธ ์žˆ์„ ๋•Œ์—๋„ ๋ฏธ๋””์–ด ์„ธ์…˜์„ ๊ณ„์† ๊ฐ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฐฑ๊ทธ๋ผ์šด๋“œ์˜ ์˜์—ญ์„ ๋งŒ์ ธ์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

 

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

 

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์ค€ ๊ฒƒ์ด ๋ฐ”๋กœ Headless JS์ž…๋‹ˆ๋‹ค. Headless JS๋Š” ์•ฑ์˜ UI๊ฐ€ ์—†์–ด๋„ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. ์ œ๊ฐ€ ์ด๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•œ ๊ธฐ๋Šฅ์˜ ์ž‘๋™ ์›๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

  1. ๋„ค์ดํ‹ฐ๋ธŒ ๊ฐ์ง€: ๋„ค์ดํ‹ฐ๋ธŒ ๋‹จ์˜ `MediaNotificationListenerService`๊ฐ€ ์Œ์•… ์•ฑ์˜ ์•Œ๋ฆผ ๋ณ€ํ™”๋ฅผ ๊ฐ์ง€ํ•ฉ๋‹ˆ๋‹ค.
  2. JS ๊นจ์šฐ๊ธฐ: ๊ณก ์ •๋ณด๊ฐ€ ๋ฐ”๋€Œ๋ฉด ๋„ค์ดํ‹ฐ๋ธŒ ์—”์ง„์€ `MediaHeadlessTaskService`๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ์„œ๋น„์Šค๋Š” ์ž ์ž๊ณ  ์žˆ๋˜ JS๋ฅผ ์ž ์‹œ ๊นจ์›๋‹ˆ๋‹ค.
  3. ์ˆ˜ํ–‰: ์ž ์—์„œ ๊นฌ JS๋Š” ์ „๋‹ฌ๋ฐ›์€ ๊ณก ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ๋ฐฑ์—”๋“œ์— ๋ฉ”์‹œ์ง€๋ฅผ ์š”์ฒญํ•˜๊ณ  ๊ทธ ๋ฉ”์‹œ์ง€๋กœ ์•Œ๋ฆผ์„ ๋„์›๋‹ˆ๋‹ค.
  4. ๋‹ค์‹œ ์ทจ์นจ: ์ž‘์—…์ด ๋๋‚˜๋ฉด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์€ ๋‹ค์‹œ ์ž ๋“ญ๋‹ˆ๋‹ค.

 

โžก๏ธ ์ •๋ฆฌ ๋ฐ ๋‹ค์Œ ๋‹จ๊ณ„

์ด๋กœ์จ Lymo๋Š” ์Œ์•…์„ ๊ฐ์ง€ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ฐ–๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹จ์ˆœํžˆ ์˜ˆ์œ UI๋ฅผ ๋„˜์–ด, ์•ˆ๋“œ๋กœ์ด๋“œ ์‹œ์Šคํ…œ์˜ ๊นŠ์€ ๊ณณ์„ ์ ‘๊ทผํ•˜๋Š” ๋„ค์ดํ‹ฐ๋ธŒ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์€ ๊ฒฐ์ฝ” ์‰ฝ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ๋งŒํผ ๊ฐœ๋ฐœ์ž๋กœ์„œ ์†Œ์ค‘ํ•œ ๊ฒฝํ—˜์ด์—ˆ๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

์ด์ œ ์ฃผ์š” ๊ธฐ๋Šฅ์„ ๋ชจ๋‘ ๊ตฌํ˜„ํ–ˆ์œผ๋‹ˆ, ๋‹ค์Œ ์ผ์ง€์—์„œ๋Š” ์ด ๊ธฐ๋Šฅ ์œ„์— ๊ฐ์„ฑ์„ ์ž…ํžˆ๋Š” ๊ณผ์ •์„ ๋‹ค๋ค„๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค. ์•จ๋ฒ” ์•„ํŠธ์˜ ์ƒ‰์ƒ์„ ์ถ”์ถœํ•ด ํ™”๋ฉด ์ „์ฒด์˜ ๋ถ„์œ„๊ธฐ๋ฅผ ๋ฐ”๊พธ๋Š” ์‹œ๊ฐ์  ํšจ๊ณผ๋ถ€ํ„ฐ, ๊ฐ€์‚ฌ ๋™๊ธฐํ™” ๋กœ์ง๊นŒ์ง€... Lymo ๊ฐœ๋ฐœ๊ธฐ์˜ ๋งˆ์ง€๋ง‰์„ ์žฅ์‹ํ•  ํ”„๋ก ํŠธ์—”๋“œ UI/UX ์ตœ์ ํ™” ์ด์•ผ๊ธฐ๋กœ ๋Œ์•„์˜ค๊ฒ ์Šต๋‹ˆ๋‹ค.

 

์˜ค๋Š˜๋„ ๊ธด ๊ธ€ ๋๊นŒ์ง€ ์ฝ์–ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
ยซ   2026/08   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
๊ธ€ ๋ณด๊ด€ํ•จ