Flutter: ์ฝ”๋“œ ํ‘ธ์‹œ / ํ•ซ ์—…๋ฐ์ดํŠธ / ๋Œ€์—ญ ์™ธ ์—…๋ฐ์ดํŠธ

์— ๋งŒ๋“  2018๋…„ 01์›” 29์ผ  ยท  171์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: flutter/flutter

์ด๊ฒƒ์€ ํ˜„์žฌ ์ด ์˜๊ฒฌ์—์„œ ๋…ผ์˜๋œ ์ด์œ ๋กœ Flutter์˜ ๋กœ๋“œ๋งต์— ์—†์Šต๋‹ˆ๋‹ค.
https://github.com/flutter/flutter/issues/14330#issuecomment -485565194

์ด ์˜๊ฒฌ์€ ๋˜ํ•œ ์—ฌ๋Ÿฌ๋ถ„์ด ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ "ํ•ซ ์—…๋ฐ์ดํŠธ" ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ๊ฐ„๋žตํ•œ ๊ฐœ์š”๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์ด ์ฃผ์ œ์— ๋Œ€ํ•ด ๋ช…ํ™•ํ•˜๊ฒŒ ์ „๋‹ฌํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ๋Š” ํ•ด๋‹น ์šฉ์–ด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
https://github.com/flutter/flutter/issues/14330#issuecomment -442274897


์‚ฌ๋žŒ๋“ค์€ ์ข…์ข… Flutter๊ฐ€ "์ฝ”๋“œ ํ‘ธ์‹œ" ๋˜๋Š” "ํ•ซ ์—…๋ฐ์ดํŠธ" ๋˜๋Š” ์•ฑ์— ๋Œ€ํ•œ ์Šคํ† ์–ด ์™ธ๋ถ€ ์—…๋ฐ์ดํŠธ๋ฅผ ํ‘ธ์‹œํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐํƒ€ ์œ ์‚ฌํ•œ ์ด๋ฆ„์„ ์ง€์›ํ•˜๋Š”์ง€ ๋ฌป์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ ์šฐ๋ฆฌ๋Š” ๊ทธ๋Ÿฌํ•œ ์†”๋ฃจ์…˜์„ ์ฆ‰์‹œ ์ œ๊ณตํ•˜์ง€ ์•Š์ง€๋งŒ ์ฃผ์š” ์ฐจ๋‹จ ์š”์†Œ๋Š” ๊ธฐ์ˆ ์ด ์•„๋‹™๋‹ˆ๋‹ค. Flutter๋Š” Android ๋ฐ iOS ๊ธฐ๊ธฐ ๋ชจ๋‘์—์„œ JIT(Just In Time) ๋˜๋Š” ์ธํ„ฐํ”„๋ฆฌํ„ฐ ๊ธฐ๋ฐ˜ ์‹คํ–‰์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ์šฐ๋ฆฌ๋Š” --release ๋นŒ๋“œ ์ค‘์— ์ด๋Ÿฌํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ œ๊ฑฐํ•˜์ง€๋งŒ ์‰ฝ๊ฒŒ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์ฃผ์š” ์ฐจ๋‹จ๊ธฐ๋Š” ์ด๋Ÿฌํ•œ ์ข…๋ฅ˜์˜ ๋ฌด์„  ์—…๋ฐ์ดํŠธ ๊ธฐ๋Šฅ์„ ์œ„ํ•ด ์•ฑ์ด JavaScript๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ๋Š” iOS ์ƒํƒœ๊ณ„์˜ ํ˜„์žฌ ๋‹จ์ ์„ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ๊ณ ๋ง™๊ฒŒ๋„ Dart๋Š” JavaScript๋กœ์˜ ์ปดํŒŒ์ผ์„ ์ง€์›ํ•˜๋ฏ€๋กœ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ์ผ๋ถ€๋ฅผ Dart ๋Œ€์‹  JavaScript๋กœ ์ปดํŒŒ์ผํ•˜์—ฌ ๋ฐฐํฌ๋œ ๋ฐ”์ด๋„ˆ๋ฆฌ์˜ ํ•ด๋‹น ๋ถ€๋ถ„์„ ๋Œ€์ฒดํ•˜๊ฑฐ๋‚˜ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์ƒ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฒ„๊ทธ๋Š” ์ด์™€ ๊ฐ™์ด ์ง€์›๋˜๋Š” ์†”๋ฃจ์…˜์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ณผ์ •์„ ์ถ”์ ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‹ค๋ฅธ ๋ชจ๋“  ๋ณด๊ณ ์„œ๋ฅผ ์—ฌ๊ธฐ์—์„œ ์†์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

P5 production crowd engine passed first triage new feature

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์—ฌ๊ธฐ์—์„œ ๋ช‡ ๊ฐ€์ง€ ๊ธฐ๋ณธ ํ”„๋กœํ† ํƒ€์ž…์„ ๊ตฌ์ถ•ํ–ˆ์ง€๋งŒ ํ˜„์žฌ๋กœ์„œ๋Š” ๊ณต์œ ํ•  ๋‚ด์šฉ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ์ œ๋Œ€๋กœ ํ•˜๋ ค๋ฉด Dart์˜ ์ปดํŒŒ์ผ๋Ÿฌ ํˆด์ฒด์ธ์—์„œ ์•ฝ๊ฐ„์˜ ์ž‘์—…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ๋งŽ์€ ๊ฒƒ์„ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๊ธฐ๊นŒ์ง€ ๋ช‡ ๋‹ฌ์ด ๊ฑธ๋ฆด ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•ฉ๋‹ˆ๋‹ค. ํŒ€์€ ํ˜„์žฌ 1.0์˜ ์•ˆ์ •ํ™”์— ์ง‘์ค‘ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๋‹น์‹ ์˜ ๋ง์„ ๋“ฃ์Šต๋‹ˆ๋‹ค. :) ์ด๊ฒƒ์€ ๋ถ„๋ช…ํžˆ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ๊ฐ€์น˜ ์žˆ๊ฒŒ ์—ฌ๊ธฐ๋Š” ๊ธฐ๋Šฅ์ด๋ฉฐ ์šฐ๋ฆฌ๋Š” ๊ฒฐ๊ตญ ์ด์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  171 ๋Œ“๊ธ€

cc @floitschG

๋˜ํ•œ ์ฐธ์กฐ
https://groups.google.com/forum/#!msg/flutter -dev/YwzItp1pxJo/7bFGDLvxBAAJ
๋‚˜๋Š” ์ด๊ฒƒ์— ๋Œ€ํ•ด ๋งค์šฐ ํฅ๋ถ„ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๋ฆฌ์•กํŠธ ๋„ค์ดํ‹ฐ๋ธŒ์˜ ์œ ์ผํ•˜๊ณ  ์ง„์ •์œผ๋กœ ๋…ํŠนํ•œ ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜์ผ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์ด ์ƒ๋‹นํžˆ ์ค‘์š”ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋ถˆํ–‰ํžˆ๋„ ์ผ๋ถ€ ํšŒ์‚ฌ์—์„œ๋Š” ์ด๊ฒƒ์„ ๋”œ ๋ธŒ๋ ˆ์ด์ปค๋กœ ๊ฐ„์ฃผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ ์‚ฌ๋ก€

  • ํŠนํžˆ VIP ๋˜๋Š” ๊ธด๊ธ‰ํ•˜๊ณ  ์‹œ๊ฐ„์— ๋ฏผ๊ฐํ•œ ์ƒํ™ฉ, ๋น„์ฆˆ๋‹ˆ์Šค ํฌ๋ฆฌํ‹ฐ์ปฌ ๋ฐ/๋˜๋Š” ์–ด๋–ค ์ด์œ ๋กœ ์•ฑ์„ ์ „ํ˜€ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ iOS์˜ ์ค‘์š”ํ•œ ๋ฒ„๊ทธ.
  • ๋‹จ๊ณ„์  ์ถœ์‹œ๋ณด๋‹ค ๋” ๋™์ ์ธ ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ
  • ์ด๊ฒƒ์€ Fuschia ๋ฐ/๋˜๋Š” Chromebook์„ ์ค€๋น„ํ•˜๋Š” ๋ฐ ์ข‹์€ ํ„ฐ์น˜๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. flutter๊ฐ€ pwas/Kotlin/Swift/React/Xamarin/other-junkier-hybrid ์†”๋ฃจ์…˜๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์›น ์•ฑ๊ณผ "๊ฒฝ์Ÿ"ํ•˜๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Flutter ๋Œ€ React Native๋ผ๋Š” ์žฅ๋Œ€ํ•œ ์ „ํˆฌ์—์„œ ์ฝ”๋“œ ํ‘ธ์‹œ๋Š” ์ง€์˜ฅ ๊ฐ™์€ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค(:
RN ๊ฐœ๋ฐœ์ž๋กœ์„œ ์ด ๊ธฐ๋Šฅ์˜ ์ค‘์š”์„ฑ์„ ์•„๋ฌด๋ฆฌ ๊ฐ•์กฐํ•ด๋„ ์ง€๋‚˜์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ํ•ซ ํ‘ธ์‹œ๊ฐ€ ์—†๋‹ค๋Š” ์ด์œ ๋กœ Flutter๋ฅผ ํ†ต๊ณผํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฒ„๊ทธ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ˆ˜์ •ํ•˜๊ณ  ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ํ‘ธ์‹œํ•˜๋Š” ๋ฐ ์ต์ˆ™ํ•ด์ง€๋ฉด ๋˜๋Œ๋ฆด ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฒฝ๋กœ๋กœ ์ปดํŒŒ์ผํ•˜๋ฉด ๋‹คํŠธ์˜ ์žฅ์ ์ด ์ค„์–ด๋“ค๊ฒ ์ฃ ?
Rollout.io๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ๋‹ค์‹œ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ์ผ๋ถ€ ๊ธฐ๋ณธ ์•ฑ์„ ์ฐพ์•˜์ง€๋งŒ Apple์—์„œ ์ฐจ๋‹จํ–ˆ์Šต๋‹ˆ๋‹ค: https://news.ycombinator.com/item?id=13817557
์ด ํŒจํ„ด์„ ๋ณด๋ฉด, ์šฐ๋ฆฌ๊ฐ€ ๋ฐ˜์‘ ๋„ค์ดํ‹ฐ๋ธŒ์—์„œ ๋ณด๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ๋งค๋„๋Ÿฌ์šด ์ฝ”๋“œ ํ‘ธ์‹œ ๊ธฐ๋Šฅ์ด flutter์— ์—†์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
ํ•ต์‹ฌ ๊ด€๋ฆฌ์ž(:

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฒฝ๋กœ๋กœ ์ปดํŒŒ์ผํ•˜๋ฉด ๋‹คํŠธ์˜ ์žฅ์ ์ด ์ค„์–ด๋“ค๊ฒ ์ฃ ?

์–ด๋–ค ์žฅ์ ์„ ๋ง์”€ํ•˜์‹œ๋Š” ๊ฑด๊ฐ€์š”?

Codepush๋Š” ๋งค์šฐ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. Flutter์—์„œ ๋ฌด์„  ์—…๊ทธ๋ ˆ์ด๋“œ ๋ฆด๋ฆฌ์Šค ๊ฐ€๋Šฅ์„ฑ์„ ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

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

codepush ๊ธฐ๋Šฅ์€ ์‚ฌ์šฉ์ž๊ฐ€ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ์ฆ‰์‹œ ์ค‘์š”ํ•œ ์ˆ˜์ • ์‚ฌํ•ญ์„ ํ‘ธ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ์ด์œ ๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ๋•Œ๋•Œ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋Š” ๊ฒƒ์ด ๋Š๋ฆฐ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค :(

ํ•ซ ์ฝ”๋“œ ํ‘ธ์‹œ ์ง€์›์€ NO GO์ž…๋‹ˆ๋‹ค :-(

ํ•ด์„๋œ ์ฝ”๋“œ์— JavascriptCore๊ฐ€ ๋” ์ด์ƒ ํ•„์š”ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. https://www.theregister.co.uk/2017/06/07/apple_relaxes_developer_rules/?page=2

IOS ์ƒํƒœ๊ณ„๊ฐ€ ๊ฑธ๋ฆผ๋Œ์ด๋ผ๋ฉด ์ง€๊ธˆ์€ ์•ˆ๋“œ๋กœ์ด๋“œ์—์„œ๋งŒ ๊ตฌํ˜„ํ•˜์ง€ ์•Š๊ฒ ์Šต๋‹ˆ๊นŒ? ์—†๋Š” ๊ฒƒ๋ณด๋‹ค ๋‚˜์€ ๊ฒƒ ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์ด ์‹œ์ž‘์ ์ž…๋‹ˆ๋‹ค.

ํŒ€์ด ์ด ๊ธฐ๋Šฅ์„ ์ตœ๋Œ€ํ•œ ๋นจ๋ฆฌ ๊ตฌํ˜„ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—์„œ ๋ช‡ ๊ฐ€์ง€ ๊ธฐ๋ณธ ํ”„๋กœํ† ํƒ€์ž…์„ ๊ตฌ์ถ•ํ–ˆ์ง€๋งŒ ํ˜„์žฌ๋กœ์„œ๋Š” ๊ณต์œ ํ•  ๋‚ด์šฉ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ์ œ๋Œ€๋กœ ํ•˜๋ ค๋ฉด Dart์˜ ์ปดํŒŒ์ผ๋Ÿฌ ํˆด์ฒด์ธ์—์„œ ์•ฝ๊ฐ„์˜ ์ž‘์—…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ๋งŽ์€ ๊ฒƒ์„ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๊ธฐ๊นŒ์ง€ ๋ช‡ ๋‹ฌ์ด ๊ฑธ๋ฆด ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•ฉ๋‹ˆ๋‹ค. ํŒ€์€ ํ˜„์žฌ 1.0์˜ ์•ˆ์ •ํ™”์— ์ง‘์ค‘ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๋‹น์‹ ์˜ ๋ง์„ ๋“ฃ์Šต๋‹ˆ๋‹ค. :) ์ด๊ฒƒ์€ ๋ถ„๋ช…ํžˆ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ๊ฐ€์น˜ ์žˆ๊ฒŒ ์—ฌ๊ธฐ๋Š” ๊ธฐ๋Šฅ์ด๋ฉฐ ์šฐ๋ฆฌ๋Š” ๊ฒฐ๊ตญ ์ด์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

Flutter์— ๋Œ€ํ•œ "์ฝ”๋“œ ํ‘ธ์‹œ" ์ง€์›์€ React Native์™€ ๊ด€๋ จ๋œ ๊ด€์˜ ๋งˆ์ง€๋ง‰ ๋ชป์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

RN๊ณผ RN ์ปค๋ฎค๋‹ˆํ‹ฐ์— ๋Œ€ํ•œ ์ €์˜ ๋ชจ๋“  ์‚ฌ๋ž‘์œผ๋กœ ๊ฒŒ์ž„ ์ฒด์ธ์ €์ธ Flutter๋Š” ์ƒ๋Œ€๊ฐ€ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
Flutter๋Š” ๋ชจ๋“  ์ธก๋ฉด(๋„๊ตฌ, ์„ฑ๋Šฅ, ์–ธ์–ด...)์—์„œ ์ด๋ฅผ ์ž˜ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

1.0 ํžˆํŠธ ํ›„ ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ์กฐ๊ธˆ ๋” ์„ฑ์žฅํ•ฉ๋‹ˆ๋‹ค. + ์ฝ”๋“œ ํ‘ธ์‹œ ์ง€์› = Flutter๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ๊ฒƒ์œผ๋กœ ์ƒˆ๋กœ์šด ๋ชจ๋ฐ”์ผ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•  ์ด์œ ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

"์ฝ”๋“œ ํ‘ธ์‹œ"์— ๋Œ€ํ•œ ์ง„ํ–‰ ์ƒํ™ฉ ??

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

์ „์ฒด .so ํŒŒ์ผ์„ "์‚ฌ์ด๋“œ๋กœ๋”ฉ"ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„์ด ์žˆ์–ด์•ผ ํ•˜๋ฏ€๋กœ dart์—์„œ ๊ธฐ๊ณ„ ์ฝ”๋“œ๋กœ์˜ ๋นŒ๋“œ๊ฐ€ ์—ฌ์ „ํžˆ ์ •ํ™•ํžˆ ๋™์ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž‘์ง€๋งŒ ์™„์ „ํžˆ ๋…๋ฆฝ์ ์ธ ๊ตฌ์„ฑ ์š”์†Œ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ "์ตœ์†Œ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๊ธฐ๋Šฅ"์ด ํ• ๋‹น๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. .so๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ ์›๋ž˜ ์ œ๊ณต๋œ ๊ตฌ์„ฑ ์š”์†Œ๋กœ ๊ต์ฒดํ•˜๊ณ  ๊ธฐ๋ณธ ์‹คํ–‰ ์˜๋„๋กœ ์•ฑ์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

์ถ”๊ฐ€ ์ฑ…์ž„: ์ž์‚ฐ ๋‹ค์šด๋กœ๋“œ, ์„œ๋ช… ํ™•์ธ ๋“ฑ. ํ”Œ๋Ÿฌํ„ฐ/๋‹คํŠธ/์Šคํ‚ค์•„ ์—”์ง„ ์—…๋ฐ์ดํŠธ ๋ฐ ์—…๋ฐ์ดํŠธ ๋ถˆ๊ฐ€.

๊ทธ๊ฒƒ์€ iOS ์ง€์นจ์„ ์œ„๋ฐ˜ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋“ค๋ฆฌ์ง€๋งŒ ์–ด์จŒ๋“  ๋‚˜๋Š” ์–ด์จŒ๋“  ํ•ด์„๋˜๋Š” ์–ด๋–ค ๊ฒƒ ๋˜๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ iOS์˜ ํŒฌ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์•ˆ๋“œ๋กœ์ด๋“œ๊ฐ€ ๋ฉ‹์ง€๊ธฐ ๋•Œ๋ฌธ์— ์•„์˜ˆ ์—†๋Š” ๊ฒƒ๋ณด๋‹ค ์•ˆ๋“œ๋กœ์ด๋“œ์— ์žˆ๋Š” ๊ฒƒ์ด ๋” ๋‚ซ์Šต๋‹ˆ๋‹ค.

์ตœ์†Œํ•œ ๋‹ค์šด๋กœ๋“œ ๋ถ€๋ถ„์€ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ํ—ˆ์šฉ๋˜๋Š” ์ผ๋ถ€ ๊ฒฉ๋ฆฌ ์ž‘์—…์ด ์žˆ์œผ๋ฏ€๋กœ ์ด์ œ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ ์›๋ณธ .so๋ฅผ ๋‹ค์šด๋กœ๋“œํ•œ ํŒŒ์ผ๋กœ ๋ฐ”๊พธ๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด๋Š” ๊ฒƒ์€ ํฅ๋ฏธ๋กœ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ์ถ”๊ฐ€ .so ๋˜๋Š” Java ์ฝ”๋“œ๊ฐ€ ๊ทธ ๋ถ€๋ถ„์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ฝ”๋“œ ํด๋”์— ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์•ฑ ์ž์ฒด๊ฐ€ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ํ”Œ๋Ÿฌํ„ฐ ์—”์ง„์ด ๋‚ด๋ถ€์—์„œ ๋ชจ๋“  ์•ฑ์˜ .so๋ฅผ ๋กœ๋“œํ•˜๋„๋ก ์•ฝ๊ฐ„์˜ ์กฐ์ •์ด ํ•„์š”ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ?

Flutter๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํšŒ์‚ฌ ์•ฑ์„ ๊ฐœ์„ ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๋Š” ์•„์ง ๋ฒ ํƒ€ ๋ฒ„์ „์ด๊ณ  ์ƒˆ๋กœ์šด UI์™€ ๊ธฐ๋Šฅ์„ ๋น ๋ฅด๊ฒŒ ํ…Œ์ŠคํŠธํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•ซ ์—…๋ฐ์ดํŠธ ๊ธฐ๋Šฅ์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ์ฃผ์š” ์š”๊ตฌ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์ด ์žˆ์œผ๋ฉด ์‚ด ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?
(์ด ๊ธฐ๋Šฅ์€ ์ด๋ฏธ ์™„๋ฃŒ๋˜์—ˆ์œผ๋ฉฐ 1.0์ด ๋‚˜์˜ค๋ฉด ๊นœ์ง ๋†€๋ž„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.)
๐Ÿ˜

์ฐฌ์„ฑ ํˆฌํ‘œ

Flutter๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋‹จ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ์ฝ”๋“œ ํ‘ธ์‹œ

์ฝ”๋“œ ํ‘ธ์‹œ๋ฅผ ์ง€์›ํ•  ์ˆ˜ ์—†๋‹ค๋ฉด ์ผ๋ถ€ ์‚ฌ์ „(json, xml...)์—์„œ Flutter Widget์œผ๋กœ ์ƒ์„ฑํ•  Parser๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์ด๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ฑฐ๋‚˜ ์ข‹์€ ์ƒ๊ฐ์ž…๋‹ˆ๊นŒ?

์ด๊ฒƒ์€ ์•ฝ๊ฐ„ ์œ ๋งํ•˜๊ฒŒ ๋“ค๋ฆฝ๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์œ„์ ฏ์— ๋Œ€ํ•œ Firebase ์›๊ฒฉ ๊ตฌ์„ฑ.
๊ธฐ์—…์ด ์›ํ•˜๋Š” ๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€ ํŒŒ์•…ํ•˜๋Š” ๊ฒƒ๋„ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. :)

2018๋…„ 10์›” 12์ผ ๊ธˆ์š”์ผ, ์˜ค์ „ 3:45 Hฦฐng Lฦฐฦกng ฤแป— Minh [email protected]
์ผ๋‹ค:

์ฝ”๋“œ ํ‘ธ์‹œ๋ฅผ ์ง€์›ํ•  ์ˆ˜ ์—†๋‹ค๋ฉด ํŒŒ์„œ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?
์ผ๋ถ€ ์‚ฌ์ „(json, xml...)์—์„œ Flutter Widget์œผ๋กœ ์ƒ์„ฑํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ~์ด๋‹ค
์ด๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ฑฐ๋‚˜ ์ข‹์€ ์ƒ๊ฐ์ž…๋‹ˆ๊นŒ?

โ€”
๋‹น์‹ ์ด ๋Œ“๊ธ€์„ ๋‹ฌ์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/flutter/flutter/issues/14330#issuecomment-429251785 ,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AC4TYe9qDMi4bt2U5qyyAnJisN3ys_Z5ks5ukFavgaJpZM4RxUZi
.

์ ์–ด๋„ Dart๋กœ ์ž‘์„ฑ๋œ UI/View๋Š” ์„œ๋ฒ„์—์„œ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
์˜๊ฐ์„ ์–ป์œผ๋ ค๋ฉด Qt Quick ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

QtDD12 - ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด QML ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ์ œ๊ณต - Jeremy Laine:

๋‹ค๊ฐ€์˜ค๋Š” 1.0 ๋ฆด๋ฆฌ์Šค์— ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

๋งŽ์€ ๊ณ ๊ฐ์ด Google ์Šคํ† ์–ด์˜ ์•ฑ ์—…๋ฐ์ดํŠธ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ฐจ๋‹จํ•˜๋Š” ์—„๊ฒฉํ•œ ๋ฐฉํ™”๋ฒฝ ๋’ค์— ์žˆ๋Š” ํ‚ค์˜ค์Šคํฌ ๊ธฐ๊ธฐ์—์„œ Flutter ์•ฑ์„ ์‚ฌ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ณ ๊ฐ์€ Play ์Šคํ† ์–ด๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ถ๊ทน์ ์œผ๋กœ Flutter ์•ฑ๊ณผ ํ•จ๊ป˜ 100๊ฐœ์˜ ํ•˜๋“œ์›จ์–ด ์žฅ์น˜๋ฅผ ๊ฐ–๊ฒŒ ๋  ๊ฒƒ์ด๋ฉฐ, ๊ณ ๊ฐ ๋ฐฉํ™”๋ฒฝ ์ œํ•œ์„ ์ค€์ˆ˜ํ•˜๋ฉด์„œ ์•ฑ์— ์—…๋ฐ์ดํŠธ๋ฅผ ํ‘ธ์‹œํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ๋†€๋ผ์šด ์ผ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค!

@eseidelGoogle - ์—ฌ๋Ÿฌ๋ถ„์ด ์—ฌ๊ธฐ์— ๋ช‡ ๊ฐ€์ง€ ์—…๋ฐ์ดํŠธ๋ฅผ ์ œ๊ณตํ•œ ์ง€

์•„์ง๋„ ์ด ์ผ์„ ํ•˜๊ณ  ๊ณ„์‹œ๋‚˜์š”? ์ผ์ด ์–ด๋–ป๊ฒŒ ๋˜์–ด๊ฐ€๊ณ  ์žˆ๋‚˜์š”?

์ง„ํ–‰์ด ๊ณ„์†๋ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ๊ณต์œ ํ•  ์—…๋ฐ์ดํŠธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์˜ค๋Š˜ ์ผ์ฐ ์‚ฌ๋žŒ๋“ค์ด ์ด ๋ฒ„๊ทธ์— ๋Œ€ํ•ด ์–ธ๊ธ‰ํ•œ ์„ธ ๊ฐ€์ง€ ๋ช…ํ™•ํ•œ ์šฉ์–ด๋ฅผ ์ƒ๊ฐํ•ด ๋ƒˆ์Šต๋‹ˆ๋‹ค.

  • "๋™์  ํŒจ์น˜": (์ผ์ข…์˜) ํŒจ์น˜๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ์ด๋ฅผ Dart VM์— ์ œ๊ณตํ•˜์—ฌ ํ˜„์žฅ์—์„œ ์•ฑ์˜ Dart ์ฝ”๋“œ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ธฐ๋Šฅ. ์ ์šฉํ•˜๋ ค๋ฉด ์•ฑ์„ ๋‹ค์‹œ ๋กœ๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • "๋™์  ํ™•์žฅ ๋กœ๋“œ": ์•ฑ์ด ์ฒ˜์Œ ๊ฒŒ์‹œ๋  ๋•Œ ์ž‘์„ฑ๋˜์ง€ ์•Š์€ ์ผ๋ถ€ Dart ์ฝ”๋“œ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ ์•ฑ์— ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ฆ‰์„์—์„œ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ–ฅํ›„ ๊ฐ ํ™•์žฅ์— ํ•„์š”ํ•œ ๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€ ๋ฏธ๋ฆฌ ์•Œ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ํ•ต์‹ฌ ์•ฑ์ด ๋” ์ปค์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
  • "๋ชจ๋“ˆ์‹ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ œ๊ณต": ๋‹จ์ผ ์•ฑ์„ ์ปดํŒŒ์ผํ•  ๋•Œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ณ„๋„ ์•„์นด์ด๋ธŒ๋กœ ํŒจํ‚ค์ง•ํ•˜๊ณ  ํ•„์š”์— ๋”ฐ๋ผ ๋…๋ฆฝ์ ์œผ๋กœ ๋‹ค์šด๋กœ๋“œํ•˜๋Š” ๊ธฐ๋Šฅ.

์ด ๋ฌธ์ œ๋ฅผ ๊ฐœ๋ณ„์ ์œผ๋กœ ์ถ”์ ํ•  ์ˆ˜ ์žˆ๋Š” ์„ธ ๊ฐ€์ง€ ๋ฒ„๊ทธ๋กœ ๋ถ„ํ• ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด iOS์—์„œ ์ •๋ง ๊ฐ€๋Šฅํ•œ๊ฐ€์š”? Apple์ด rollout.io ์—์„œ

Apple์ด ํ˜„์žฌ(๋˜๋Š” ๋ฏธ๋ž˜์—) ํ—ˆ์šฉํ•˜๊ฑฐ๋‚˜ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์€ ๊ธฐ์ˆ  ๊ตฌํ˜„๊ณผ ์™„์ „ํžˆ ๋ณ„๊ฐœ์ž…๋‹ˆ๋‹ค. Flutter๋Š” iOS ์ด์™ธ์˜ ๋งŽ์€ ๊ณณ์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ๋ถ„๋ช…ํžˆ ์šฐ๋ฆฌ๋Š” iOS์—์„œ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ์ˆ ์„ ํ•ญ์ƒ ์„ค๊ณ„ํ•˜๊ณ  ์‹ถ์ง€๋งŒ(๋งŽ์€ ๊ฐ€๋Šฅํ•œ "์ฝ”๋“œ ํ‘ธ์‹œ" ์†”๋ฃจ์…˜์ด ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฏ€๋กœ) iOS๊ฐ€ ์œ ์ผํ•œ ๊ณ ๋ ค ์‚ฌํ•ญ์€ ์•„๋‹™๋‹ˆ๋‹ค. ๋„์›€์ด ๋˜์…จ๋‚˜์š”?

Code Push๊ฐ€ 1.0์—์„œ ๋ฆด๋ฆฌ์Šค๋œ ๊ฒƒ์„ ๋ณด์ง€ ๋ชปํ•ด์„œ ์ •๋ง ์Šฌํ”•๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ด๊ฒƒ์ด ๋‚ด๊ฐ€ ์•ฑ ์Šคํ† ์–ด๋ฅผ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ํŒจ์น˜ํ•˜๋Š” ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•œ ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ์ฃผ๋œ ์ด์œ ์ž…๋‹ˆ๋‹ค.
๋‚˜๋Š” ๊ฑฐ๊ธฐ๊นŒ์ง€ ๊ฐ€๋Š” ๊ฒƒ์ด ํž˜๋“  ์ผ์ž„์„ ๊ฐ์‚ฌํ•˜๊ฒŒ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํ–‰์šด์„ ๋น•๋‹ˆ๋‹ค.

Flutter๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋‹จ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ์ฝ”๋“œ ํ‘ธ์‹œ

์ด ์ฃผ์ œ์— ๋Œ€ํ•œ ๊ด€์‹ฌ์„ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด ํ”ผ๋“œ๋ฐฑ์„ ๋‚จ๊ธฐ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.
์šฐ๋ฆฌ ํšŒ์‚ฌ๋Š” ์œ ์ง€ ๊ด€๋ฆฌ ํŒ€์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด Android ์ „์šฉ ๋‹ค์ค‘ ๊ณ ๊ฐ ์•ฑ์„ ๊ฐœ๋ฐœํ•ฉ๋‹ˆ๋‹ค. 2018๋…„์— ์šฐ๋ฆฌ๋Š” ์•ฝ 100๊ฐœ์˜ ์—…๋ฐ์ดํŠธ๋ฅผ ์ถœ์‹œํ–ˆ์œผ๋ฉฐ, ๊ทธ ์ค‘ ๋Œ€๋ถ€๋ถ„์€ ์‚ฌ์ „์— ์˜ˆ์ธกํ•  ์ˆ˜ ์—†๋Š” ๊ฐ ๊ณ ๊ฐ์ด ํ•„์š”๋กœ ํ•˜๋Š” ์•ฝ๊ฐ„์˜ ์กฐ์ • ๋ฐ ์‚ฌ์šฉ์ž ์ง€์ •์ด๊ธฐ ๋•Œ๋ฌธ์— Google Play๋ฅผ ํ†ตํ•ด ์ƒˆ ๋ฒ„์ „์„ ์š”์ฒญํ•œ ์—…๋ฐ์ดํŠธ๋Š” ํ•˜๋‚˜๋„ ์—†์Šต๋‹ˆ๋‹ค.
Flutter์—์„œ ์ด ์•ฑ์„ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์€ ๊ฟˆ์ด๊ฒ ์ง€๋งŒ, ๋‹ค์‹œ ์ž‘์„ฑํ•˜๋Š” ๋น„์šฉ์„ ์ œ์™ธํ•˜๊ณ  ์ˆ˜์ • ์‚ฌํ•ญ์ด๋‚˜ ์‚ฌ์šฉ์ž ์ •์˜๊ฐ€ GPlay๋ฅผ ํ†ตํ•ด ๊ฒŒ์‹œ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋ฐ ๋ˆ์„ ๋‚ญ๋น„ํ•˜๋Š” ๊ฒƒ์€ ์•…๋ชฝ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ฐ€๋Šฅํ•œ ๋นจ๋ฆฌ ๋‹ฌ์„ฑํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค

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

ํ˜„์žฌ Apple์€ ์ค‘๊ตญ์—์„œ ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๋Š” ํ•ซํ”ฝ์Šค ์†”๋ฃจ์…˜์ธ JsPatch๊ฐ€ ํฌํ•จ๋œ ๋ชจ๋“  ์•ฑ์„ ๊ฑฐ๋ถ€ํ•ฉ๋‹ˆ๋‹ค. JsPatch๋Š” JsCore ๋ฐ OC ๋Ÿฐํƒ€์ž„์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์ถ•๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์•ž์œผ๋กœ Apple์—์„œ ์•ฑ์„ ๊ฑฐ๋ถ€ํ•  ์ˆ˜ ์žˆ๊ธฐ๋ณด๋‹ค๋Š” ํ•ซํ”ฝ์Šค ๊ธฐ๋Šฅ์ด ์—†๋Š” Flutter ์•ฑ์„ ๋งŒ๋“ค๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

@MaxZeng JsPatch ์— ๋Œ€ํ•ด ์•Œ๊ฒŒ

์ด ์˜ˆ์™€ ๊ฐ™์ด iOS/Android๋งŒ ์ง€์›ํ•˜๋Š” ๊ฒฝ์šฐ:
MyFlutterApplication์ด ๊ถŒํ•œ์„ ์š”์ฒญํ•˜๊ฑฐ๋‚˜ ์•ฑ ์—…๋ฐ์ดํŠธ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค.
๋ณ€๊ฒฝ ๋กœ๊ทธ: ๊ณ ์–‘์ด ๋ฐ ๊ฐœ ์ถ”๊ฐ€(v1.0)
ํ—ˆ์šฉ | ํ—ˆ์šฉํ•˜์ง€ ์•Š์Œ

์–‘ ๋‹น์‚ฌ์ž์— ๋Œ€ํ•œ ์ง€์นจ์„ ๊ฒ€ํ† ํ•œ ํ›„.

@MaxZeng JsPatch ์— ๋Œ€ํ•ด ์•Œ๊ฒŒ

์˜ˆ, ReactNative๋Š” ํ˜„์žฌ ์ฝ”๋“œ ํ‘ธ์‹œ์˜ ์˜ˆ์™ธ์ด์ง€๋งŒ Apple์ด ๊ณต์‹์ ์œผ๋กœ ์ง€์›ํ•œ๋‹ค๋Š” ์˜๋ฏธ๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ์ตœ๊ทผ ์ €ํฌ ํšŒ์‚ฌ ์•ฑ์€ RN๊ฐ™์€ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ์ธํ•ด AppStore์—์„œ 3๋ฒˆ ์ด์ƒ ๊ฑฐ์ ˆ์„ ๋‹นํ–ˆ๊ณ  ์ด ๊ธฐ๋Šฅ๋“ค์„ OC/H5์—์„œ ๋‹ค์‹œ ์ž‘์„ฑํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๊ฐœ๋ฐœ์ž๋“ค์—๊ฒŒ๋Š” ์•…๋ชฝ์ž…๋‹ˆ๋‹ค.

React Native๋Š” ๋งˆ์ง€๋ง‰์œผ๋กœ UIKit ์œ„์— ๋ Œ๋”๋ง๋˜๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ์ „ํžˆ Apple์— SAFE ํ”„๋ ˆ์ž„์›Œํฌ์ด์ง€๋งŒ Flutter๋Š” ์™„์ „ํžˆ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.
1, ์ฒซ์งธ, Apple์˜ ๊ฐœ๋ฐœ์ž ์ƒํƒœ๊ณ„๋ฅผ ๊นจ๊ณ  UIKit ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์šฐํšŒํ•˜๋ฉฐ Apple์˜ ํ†ต์ œ๋ฅผ ๋ฒ—์–ด๋‚ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด AppStore์— ์ ์  ๋” ๋งŽ์€ MD ์Šคํƒ€์ผ ์•ฑ์ด ์žˆ์„ ๊ฒƒ์ด๋ฉฐ ์ด๋Š” Apple์˜ ํœด๋จผ ์ธํ„ฐํŽ˜์ด์Šค ๊ฐ€์ด๋“œ๋ผ์ธ์— ์œ„๋ฐฐ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Apple์€ ํ›Œ๋ฅญํ•œ ๋””์ž์ธ์œผ๋กœ ์ธํ•ด ์œ ๋ช…ํ•œ ํšŒ์‚ฌ์ž…๋‹ˆ๋‹ค.
2ใ€๋‘˜์งธ, Flutter์—์„œ ํ•ซ ๋ฆฌ๋กœ๋“œ๋ฅผ ๊ณต์‹์ ์œผ๋กœ ์ง€์›ํ•˜๋Š” ๊ฒฝ์šฐ Apple์€ ์ด ์ด์œ ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Flutter ์•ฑ์„ ์ง์ ‘ ๊ฑฐ๋ถ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚ด ๊ด€์ ์—์„œ Flutter๋Š” AppStore Review Guideline์„ ์œ„๋ฐ˜ํ•˜๋Š” ๋Œ€์‹  ์ค€์ˆ˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํฌ๋กœ์Šค ํ”Œ๋žซํผ ๋ชจ๋ฐ”์ผ ํ”„๋ ˆ์ž„์›Œํฌ์— ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. Apple์˜ ์ƒํƒœ๊ณ„๋ฅผ ๊นจ๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. Apple์ด Flutter๋ฅผ ๊ฑฐ๋ถ€ํ•œ๋‹ค๋ฉด Flutter์˜ ์ฃผ์š” ์ด์ ์€ ์‚ฌ๋ผ์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

CodePush๋Š” ์–ด๋ ต๊ฑฐ๋‚˜ ์‹ ๋น„ํ•œ ๊ธฐ์ˆ ์ด ์•„๋‹™๋‹ˆ๋‹ค. Apple์€ ์ด๋ฅผ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(ํŠนํžˆ OC ๊ธฐ๋ฐ˜). Apple์ด ์ด๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ์œ ์ผํ•œ ์ด์œ ๋Š” ์ตœ์ข… ์‚ฌ์šฉ์ž์—๊ฒŒ ์•ˆ์ „ํ•˜์ง€ ์•Š๊ณ  ์ด๋Š” AppStore/Google Play๋ฅผ ์™„์ „ํžˆ ์†์ƒ์‹œํ‚ค๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋งŽ์€ ์•ฑ์ด ์–ธ์ œ ์–ด๋””์„œ๋‚˜ ๊ธฐ๋Šฅ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์žฌ์•™์ด๋ฉฐ, ์•ฑ ๊ฒŒ์‹œ๊ฐ€ ํ—ˆ์šฉ๋œ ํ›„์—๋Š” ์ด๋Ÿฌํ•œ ์œ ํ•ดํ•œ ํ–‰์œ„๋ฅผ ์ถ”์ ํ•˜๊ณ  ์ œํ•œํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

CodePush๋Š” ๋‹จ์ˆœํ•œ ๊ธฐ์ˆ ์ด ์•„๋‹ˆ๋ผ ๋ชจ๋ฐ”์ผ ์ƒํƒœ๊ณ„์˜ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. Flutter ํŒ€์—์„œ ์ด๋Ÿฌํ•œ ๊ธฐ์ˆ ์„ ๊ณต์‹์ ์œผ๋กœ ์ œ๊ณตํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ถ€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋น„๊ณต๊ฐœ๋กœ ๊ตฌํ˜„ํ•˜๋”๋ผ๋„ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜์ง€ ์•Š์„ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.

@MaxZeng JsPatch ์— ๋Œ€ํ•ด ์•Œ๊ฒŒ

์˜ˆ, ReactNative๋Š” ํ˜„์žฌ ์ฝ”๋“œ ํ‘ธ์‹œ์˜ ์˜ˆ์™ธ์ด์ง€๋งŒ Apple์ด ๊ณต์‹์ ์œผ๋กœ ์ง€์›ํ•œ๋‹ค๋Š” ์˜๋ฏธ๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ์ตœ๊ทผ ์ €ํฌ ํšŒ์‚ฌ ์•ฑ์€ RN๊ฐ™์€ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ์ธํ•ด AppStore์—์„œ 3๋ฒˆ ์ด์ƒ ๊ฑฐ์ ˆ์„ ๋‹นํ–ˆ๊ณ  ์ด ๊ธฐ๋Šฅ๋“ค์„ OC/H5์—์„œ ๋‹ค์‹œ ์ž‘์„ฑํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๊ฐœ๋ฐœ์ž๋“ค์—๊ฒŒ๋Š” ์•…๋ชฝ์ž…๋‹ˆ๋‹ค.

React Native๋Š” ์ตœ์ข…์ ์œผ๋กœ UIKit ์œ„์— ๋ Œ๋”๋ง๋˜๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ์ „ํžˆ Apple์˜ _SAFE_ ํ”„๋ ˆ์ž„์›Œํฌ์ด์ง€๋งŒ Flutter๋Š” ์™„์ „ํžˆ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.
1, ์ฒซ์งธ, Apple์˜ ๊ฐœ๋ฐœ์ž ์ƒํƒœ๊ณ„๋ฅผ ๊นจ๊ณ  UIKit ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์šฐํšŒํ•˜๋ฉฐ Apple์˜ ํ†ต์ œ๋ฅผ ๋ฒ—์–ด๋‚ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด AppStore์— ์ ์  ๋” ๋งŽ์€ MD ์Šคํƒ€์ผ ์•ฑ์ด ์žˆ์„ ๊ฒƒ์ด๋ฉฐ ์ด๋Š” Apple์˜ ํœด๋จผ ์ธํ„ฐํŽ˜์ด์Šค ๊ฐ€์ด๋“œ๋ผ์ธ์— ์œ„๋ฐฐ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Apple์€ ํ›Œ๋ฅญํ•œ ๋””์ž์ธ์œผ๋กœ ์ธํ•ด ์œ ๋ช…ํ•œ ํšŒ์‚ฌ์ž…๋‹ˆ๋‹ค.
2ใ€๋‘˜์งธ, Flutter์—์„œ ํ•ซ ๋ฆฌ๋กœ๋“œ๋ฅผ ๊ณต์‹์ ์œผ๋กœ ์ง€์›ํ•˜๋Š” ๊ฒฝ์šฐ Apple์€ ์ด ์ด์œ ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Flutter ์•ฑ์„ ์ง์ ‘ ๊ฑฐ๋ถ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚ด ๊ด€์ ์—์„œ Flutter๋Š” AppStore Review Guideline์„ ์œ„๋ฐ˜ํ•˜๋Š” ๋Œ€์‹  ์ค€์ˆ˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํฌ๋กœ์Šค ํ”Œ๋žซํผ ๋ชจ๋ฐ”์ผ ํ”„๋ ˆ์ž„์›Œํฌ์— ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. Apple์˜ ์ƒํƒœ๊ณ„๋ฅผ ๊นจ๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. Apple์ด Flutter๋ฅผ ๊ฑฐ๋ถ€ํ•œ๋‹ค๋ฉด Flutter์˜ ์ฃผ์š” ์ด์ ์€ ์‚ฌ๋ผ์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

CodePush๋Š” ์–ด๋ ต๊ฑฐ๋‚˜ ์‹ ๋น„ํ•œ ๊ธฐ์ˆ ์ด ์•„๋‹™๋‹ˆ๋‹ค. Apple์€ ์ด๋ฅผ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(ํŠนํžˆ OC ๊ธฐ๋ฐ˜). Apple์ด ์ด๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ์œ ์ผํ•œ ์ด์œ ๋Š” ์ตœ์ข… ์‚ฌ์šฉ์ž์—๊ฒŒ ์•ˆ์ „ํ•˜์ง€ ์•Š๊ณ  ์ด๋Š” AppStore/Google Play๋ฅผ ์™„์ „ํžˆ ์†์ƒ์‹œํ‚ค๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋งŽ์€ ์•ฑ์ด ์–ธ์ œ ์–ด๋””์„œ๋‚˜ ๊ธฐ๋Šฅ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์žฌ์•™์ด๋ฉฐ, ์•ฑ ๊ฒŒ์‹œ๊ฐ€ ํ—ˆ์šฉ๋œ ํ›„์—๋Š” ์ด๋Ÿฌํ•œ ์œ ํ•ดํ•œ ํ–‰์œ„๋ฅผ ์ถ”์ ํ•˜๊ณ  ์ œํ•œํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

CodePush๋Š” ๋‹จ์ˆœํ•œ ๊ธฐ์ˆ ์ด ์•„๋‹ˆ๋ผ ๋ชจ๋ฐ”์ผ ์ƒํƒœ๊ณ„์˜ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. Flutter ํŒ€์—์„œ ์ด๋Ÿฌํ•œ ๊ธฐ์ˆ ์„ ๊ณต์‹์ ์œผ๋กœ ์ œ๊ณตํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ถ€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋น„๊ณต๊ฐœ๋กœ ๊ตฌํ˜„ํ•˜๋”๋ผ๋„ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜์ง€ ์•Š์„ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.

๋งค์šฐ ํฅ๋ฏธ๋กญ๊ณ  ์–ด๋–ค ๋ฉด์—์„œ๋Š” ํ•ฉ๋ฆฌ์ ์œผ๋กœ ๋“ค๋ฆฌ์ง€๋งŒ ๋ช‡ ๊ฐ€์ง€ ์‹ค์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. Flutter๋Š” Apple์˜ Cupertino๋„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค . MD๋งŒ ์„ ํƒ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.
  2. ๊ฒŒ์ž„ ์˜์—ญ์—์„œ Unity๋ฅผ ์•Œ๊ณ  ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. Flutter์˜ ๋ Œ๋” ์‹œ์Šคํ…œ์€ ์–ด๋–ค ๋ฉด์—์„œ ์œ ์‚ฌํ•˜๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
  3. ์‚ฌ์‹ค ๊ทธ๋ฆฌ๊ณ  ํ˜„์žฌ๋กœ์„œ๋Š” web(JS)์„ ์‚ฌ์šฉํ•˜์—ฌ CodePush๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  AppStore์˜ ๊ฒ€ํ† ๋ฅผ ์šฐํšŒํ•˜์—ฌ ์•ฑ์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด Flutter(dart)๋ฅผ ๊ฑฐ๋ถ€ํ•˜๊ณ  JS๋ฅผ ํฌ๊ธฐํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๊ทธ๋ ‡๋‹ค๋ฉด Flutter(dart)๋ฅผ ๊ฑฐ๋ถ€ํ•˜๊ณ  JS๋ฅผ ํฌ๊ธฐํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

JS๋Š” ์ƒŒ๋“œ๋ฐ•์Šค์—์„œ ์‹คํ–‰๋˜๋ฏ€๋กœ ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค. (Safari์— ๋กœ๋“œ๋œ ๋ชจ๋“  ์›น ํŽ˜์ด์ง€์ฒ˜๋Ÿผ)

Dart๋Š” ์ด์ง„ ์ฝ”๋“œ๋กœ ์ปดํŒŒ์ผ๋˜๋ฉฐ ์ด๋Ÿฌํ•œ ์ƒŒ๋“œ๋ฐ•์Šค์˜ ์ œ์•ฝ์„ ๋ฐ›์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

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


Flutter๋Š” React Native๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ React Native(๋˜๋Š” ๋‹ค๋ฅธ ํ”„๋ ˆ์ž„์›Œํฌ)์˜ ๊ฒฝํ—˜์„ ์‚ฌ์šฉํ•˜์—ฌ Flutter๋ฅผ ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ๋“ค์€ ๋‹ค๋ฅธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@MaxZeng ์•„๋งˆ๋„ flutter๋Š” Android ์ „์šฉ ํ•ซ ์—…๋ฐ์ดํŠธ๋ฅผ ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

RN๊ณผ ๊ฐ™์€ ์ตœ์‹  ์—…๋ฐ์ดํŠธ๊ฐ€ ์—†์œผ๋ฉด Flutter๋กœ ์ด๋™ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค! ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๊ฐœ๋ฐœ์ž์˜ ์‚ถ์„ ๋” ์‰ฝ๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค!!

๊ธฐ๋‹ค๋ฆฌ๋˜ ๊ฝƒ์ด ๋‹ค ๋–จ์–ด์กŒ์–ด์š”.

@MaxZeng ์•„๋งˆ๋„ flutter๋Š” Android ์ „์šฉ ํ•ซ ์—…๋ฐ์ดํŠธ๋ฅผ ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

1ใ€์‹ค์ œ๋กœ Google Play ์Šคํ† ์–ด์˜ ์ƒํƒœ๊ณ„๋„ ์†์ƒ์‹œํ‚ฌ ๊ฒƒ์ด๋ฉฐ, Android ํŒ€์ด ์•ฑ ๋™์ž‘์„ ์ œ์–ดํ•˜๊ธฐ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ค ๊ฒƒ์ž…๋‹ˆ๋‹ค.
2ใ€CodePush๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์•ฑ์— ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ์ˆ ์€ ์ผ๋ถ€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์•…์˜์ ์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
3ใ€๊ฐœ๋ฐœ์ž๊ฐ€ ํŒจ์น˜๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์•”ํ˜ธํ™”ํ•˜์ง€ ์•Š์œผ๋ฉด ๋Œ€๊ทœ๋ชจ "์ค‘๊ฐ„์ž ๊ณต๊ฒฉ"์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•…์˜์ ์ธ ํ•ด์ปค๋Š” ํ‘ธ์‹œ๋œ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜์—ฌ Flutter ์•ฑ์„ ํ•˜์ด์žฌํ‚นํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•ซํ”ฝ์Šค๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์ค‘๊ตญ ํšŒ์‚ฌ์—์„œ ๊ฐ€์ ธ์˜ค๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. 70% ์ด์ƒ์˜ ์ค‘๊ตญ Android ๊ธฐ๊ธฐ๋Š” Google Play๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@act64 ํ™•์ธ https://github.com/flutter/flutter/wiki/Roadmap

๋กœ๋“œ๋งต์—๋Š” Android์— ๋Œ€ํ•œ ํ•ซํ”ฝ์Šค๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. iOS๊ฐ€ ๊ณง ์ง€์›๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

@taibaiyinxing Flutter๋Š” Apples App-store์—์„œ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

@taibaiyinxing Flutter๋Š” Apples App-store์—์„œ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

@zoechi ์šฐ๋ฆฌ๋Š” ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์•ฑ์„ ์‚ฌ์šฉํ•˜๋ฉฐ ์•ฑ ์Šคํ† ์–ด์— ์—…๋กœ๋“œํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

Android์˜ ๋™์  ํŒจ์น˜๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„์—์„œ ์ง์ ‘ Android์—์„œ ์‹คํ–‰๋˜๋Š” Flutter ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋ฐฐํฌ๋œ ์ฝ”๋“œ ์—…๋ฐ์ดํŠธ๋ฅผ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.
๐ŸŽ‰

https://github.com/flutter/flutter/wiki/Roadmap

์˜ฌํ•ด IOS ์—์„œ CODE PUSH๋ฅผ ์ง€์›ํ•  ๊ณ„ํš์€ ์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

https://github.com/flutter/flutter/wiki/Roadmap

"์—ฌ๊ธฐ์— ์žˆ๋Š” ๋ชฉ๋ก์ด ์™„์ „ํ•œ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋˜๊ฑฐ๋‚˜ ์šฐ๋ฆฌ๊ฐ€ ์ด ๋ชจ๋“  ์ž‘์—…์„ ์™„๋ฃŒํ•  ๊ฒƒ์ด๋ผ๋Š” ์•ฝ์†์œผ๋กœ ๋ณด์•„์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค." :)

์ฝ”๋“œ ํ‘ธ์‹œ ์ž‘์—…์€ ์•„์ง ํ…Œ์ŠคํŠธ ์ดˆ๊ธฐ ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค. 2019๋…„์— ์–ด๋–ค ํ”Œ๋žซํผ์— ๋ฐฐํฌํ• ์ง€/๋ฐฐํฌํ•˜์ง€ ์•Š์„์ง€๋Š” ์•„์ง ๊ฒฐ์ •๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ด์ œ ๊ฒจ์šฐ 2์›”์ž…๋‹ˆ๋‹ค. 10๊ฐœ์›”์€ ๊ธด ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค!

ํ˜„์žฌ ์—”์ง€๋‹ˆ์–ด๋“ค์€ https://github.com/flutter/flutter/issues/14330#issuecomment -442274897์— ์„ค๋ช…๋œ @Hixie ์˜ 3๊ฐ€์ง€ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ํ•ต์‹ฌ ๊ธฐ์ˆ ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ์ง‘์ค‘ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์•ž์œผ๋กœ ๋ช‡ ๋‹ฌ ์•ˆ์— ์ด๋Ÿฌํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€ ์ค‘ ํ•˜๋‚˜ ์ด์ƒ์— ๋Œ€ํ•ด ์ œํ•œ๋œ ํ…Œ์ŠคํŠธ๋ฅผ ์‹œ์ž‘ํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•ฉ๋‹ˆ๋‹ค.

์ €ํฌ ํ”Œ๋Ÿฌํ„ฐ ๊ฐœ๋ฐœ ๊ธฐ์ˆ ์ด ์•„์ง ๋ฏธ์ˆ™ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์•ฑ์€ ์ž์ฃผ ์—…๋ฐ์ดํŠธ๋˜๊ณ  ๊ธด๊ธ‰ํ•œ ์—…๋ฐ์ดํŠธ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ ์•ฑ์€ ์•ฑ ์Šคํ† ์–ด๋ฅผ ์—…๋กœ๋“œํ•  ๊ณ„ํš์ด ์—†์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด ๊ธฐ๋Šฅ์€ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ APP์˜ ๋ฐ˜๋ณต ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด APP ์กฐ๊ฐํ™”๋กœ ์ธํ•ด API๊ฐ€ ์ง€์—ฐ๋ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ ๋ชจ๋‘๊ฐ€ ๋™์˜ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ, ์ด ๋ฌธ์ œ์˜ ๋™์ธ์€ Google๊ณผ Apple(์Šคํ† ์–ด)์ด ๊ด€๋ฆฌํ•˜๋Š” ๋ฒฝ์œผ๋กœ ๋‘˜๋Ÿฌ์‹ธ์ธ ์ •์›์„ ํ†ตํ•ด ์ตœ์ข… ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ชจ๋ฐ”์ผ ์•ฑ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ์•ฑ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ํฐ ๋ถˆํŽธ์„ ๋ผ์นœ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ข‹์€/ํ˜์‹ ์ ์ธ ์•ฑ์˜ ์ตœ์ข… ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ์—ด์•…ํ•œ ์„œ๋น„์Šค), Apple์ด ๊ฐ€์žฅ ๋ถˆํŽธํ•ฉ๋‹ˆ๋‹ค(Google์˜ ๊ฒฝ์šฐ ๋ช‡ ์‹œ๊ฐ„์ด ์•„๋‹Œ Apple์˜ ๊ฒฝ์šฐ ๋ฉฐ์น ).

๋ถ€์ˆ˜์ ์œผ๋กœ ๊ฐ€๋Šฅํ•œ ์†”๋ฃจ์…˜์€ ์ƒ์ ์ด '์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š”' ๊ฐœ๋ฐœ์ž(์˜ˆ: ํŒจ์ŠคํŠธ ํŠธ๋ž™ ์„œ๋น„์Šค)๋ฅผ ์œ„ํ•œ ์ฆ‰๊ฐ์ ์ธ ์—…๋ฐ์ดํŠธ ๊ฒฝ๋กœ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒฝ์šฐ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ Google๊ณผ Apple์€ ์•ฑ์— ๋Œ€ํ•œ ์‹ค์‹œ๊ฐ„ ๊ฐ์‚ฌ(์ž๋™ํ™”, ... AI์ฒ˜๋Ÿผ??... ํ•„์š”์— ๋”ฐ๋ผ ์‚ฌํ›„ ์ž๋™ ๋กค๋ฐฑ ์‚ฌ์šฉ)๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๊ธฐ์ˆ ์ ์ธ ์ด์œ ์™€ ๊ธฐํƒ€ ์ด์œ ๋กœ ๊ฐ€๋Šฅ์„ฑ์ด ํฌ๋ฐ•ํ•ด ๋ณด์ž…๋‹ˆ๋‹ค. ๋ฌผ๋ก  ๋‘ ๋งค์žฅ ๋ชจ๋‘ ๋ฒ ํƒ€ ํ…Œ์Šคํ„ฐ์— ๋Œ€ํ•œ ๋น ๋ฅธ ๊ฒฝ๋กœ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ... ์ด๋ฒˆ ํ˜ธ์˜ ๊ธฐ๋Šฅ์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋™์•ˆ ๋ชจ๋ฐ”์ผ ์•ฑ์„ ์ตœ์ข… ์‚ฌ์šฉ์ž์—๊ฒŒ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ๊ณผ ๊ด€๋ จ๋œ ๋ถˆํŽธ์„ ์™„ํ™”ํ•˜๋Š” ํ•œ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์€ ๋‹จ๊ณ„๋ฅผ ์ž๋™ํ™”ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Flutter์— ๋Œ€ํ•ด ์ด๋Ÿฌํ•œ ์ข…๋ฅ˜์˜ ์ž๋™ํ™”๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋„๊ตฌ์˜ ์˜ˆ๋Š” ๋‹ค์Œ์„ ์ฐธ์กฐํ•˜์„ธ์š”.
https://github.com/mmcc007/fledge
๊ธฐ๋ก์„ ์œ„ํ•ด ์—ฌ๊ธฐ์—๋Š” ์‰ฝ๊ฒŒ ์ž๋™ํ™”ํ•  ์ˆ˜ ์—†๋Š” ๋งŽ์€ ์ผํšŒ์„ฑ ์„ค์ • ๋‹จ๊ณ„์— ๋Œ€ํ•œ ๋ฌธ์„œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
https://mmcc007.github.io/fledge/

@charliezzo ์ด ๋„๊ตฌ ๋˜๋Š” ์ด์™€ ์œ ์‚ฌํ•œ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Flutter ์•ฑ(๋ฐ ์—…๋ฐ์ดํŠธ ๋“ฑ)์„ Android ๋ฐ ios ๋ฒ ํƒ€ ํ…Œ์Šคํ„ฐ์—๊ฒŒ ๋ช‡ ๋ถ„ ์•ˆ์— ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ๋งค์žฅ์„ ํ†ตํ•ด ์ตœ์ข… ์‚ฌ์šฉ์ž์—๊ฒŒ ์ž๋™์œผ๋กœ ๋ฐฐ์†กํ•˜๋Š” ์›Œํฌํ”Œ๋กœ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค(Google์˜ ๊ฒฝ์šฐ ์‹œ๊ฐ„ ์ด์ƒ, Apple์˜ ๊ฒฝ์šฐ ๋ฉฐ์น  ์ด์ƒ ๐Ÿ˜‚๐Ÿ‘).

@mmcc007
์˜ค ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‚ด ์•ฑ์„ Google Play ๋ฐ ์•ฑ ์Šคํ† ์–ด์— ํ‘ธ์‹œํ•˜๊ณ  ์‹ถ์ง€ ์•Š๋‹ค๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค.
๋‚ด ์•ฑ์„ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ํŒ๋งคํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๋‚ด ์•ฑ์„ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ ์œ„ํ•ด Google Play์™€ ์•ฑ ์Šคํ† ์–ด๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์‚ฌ์šฉ์ž๊ฐ€ ์•ฑ์„ ์„ค์น˜ํ•˜๊ณ  ์‹œ์ž‘ํ•  ๋•Œ๋งŒ ๋‚ด ์•ฑ์„ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ , flutter๋Š” 60FPS ์ด์ƒ์˜ ํ”„๋ ˆ์ž„์›Œํฌ์ด๋ฉฐ ์˜จ๋ผ์ธ ๊ฒŒ์ž„์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Google Play ๋ฐ ์•ฑ ์Šคํ† ์–ด์—์„œ ์•ฝ๊ฐ„์˜ ํŒจ์น˜๋ฅผ ์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๋‹น์‹ ์€ ๊ตฌ๊ธ€ ํ”Œ๋ ˆ์ด์™€ ์•ฑ ์Šคํ† ์–ด์˜ ๋ชจ๋“  ํŒจ์น˜๊ฐ€ ๋Š๋ฆฌ๊ณ  ์–ด๋ ต๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์‚ฌ์‹ค ๋‹น์‹ ์€ ์šฐ๋ฆฌ๊ฐ€ ์ค‘๊ตญ์—์„œ ๊ตฌ๊ธ€ ํ”Œ๋ ˆ์ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์•ฑ ์Šคํ† ์–ด๋Š” ๋งค์šฐ ๋Š๋ฆฝ๋‹ˆ๋‹ค.
์ค‘๊ตญ์—๋Š” Google Play์™€ ๊ฐ™์€ ์•ฑ ์Šคํ† ์–ด๊ฐ€ ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์•ฑ ์Šคํ† ์–ด์— ์—…๋ฐ์ดํŠธ๋ฅผ ํ‘ธ์‹œํ•  ์‹œ๊ฐ„์ด ์—†์Šต๋‹ˆ๋‹ค.

์ฝ”๋“œ ํ‘ธ์‹œ๋Š” Flutter์˜ ์ฃผ์š” ๊ธฐ๋Šฅ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์„ ์œ„์— ์˜ฌ๋ ค ๋†“์œผ์‹ญ์‹œ์˜ค.

Android์˜ app_flutters์— ์žˆ๋Š” ๋ชจ๋“  ํŒŒ์ผ์„ ๊ต์ฒดํ•˜์—ฌ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”, ์ถ”๊ฐ€ ๋…ผ์˜๋ฅผ ์œ„ํ•ด ์ด๋ฉ”์ผ์„ ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ๏ผŒ์ €ํฌ ํŒ€๋„ ์ด ์†”๋ฃจ์…˜์„ ์ฐพ์•˜์ง€๋งŒ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์ข…๋ฃŒํ•˜๊ณ  ์•ฑ์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•ด์•ผ ํ•  ๋•Œ๋งŒ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹คใ€‚tks @LNeway

์•ˆ๋…•ํ•˜์„ธ์š”, ์ถ”๊ฐ€ ๋…ผ์˜๋ฅผ ์œ„ํ•ด ์ด๋ฉ”์ผ์„ ๋ณด๋‚ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ์ €ํฌ ํŒ€๋„ ์ด ์†”๋ฃจ์…˜์„ ์ฐพ์•˜์ง€๋งŒ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์ข…๋ฃŒํ•˜๊ณ  ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•ด์•ผ ํ•  ๋•Œ๋งŒ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. tks @LNeway
@KinsomyJS
ํƒ€๋‹น์„ฑ ๊ฒ€์ฆ์„ ์œ„ํ•ด ๋ฐ๋ชจ๋„ ํ•ด๋ดค์Šต๋‹ˆ๋‹ค ใ…‹ใ…‹ใ…‹ใ…‹

๊ฐ„๋‹จํ•œ ์Šค๋‹ˆํŽซ์ด๋‚˜ ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ๋กœ ๊ณต์œ ํ•˜๊ฑฐ๋‚˜ ์—ฌ๊ธฐ์— ๋Œ“๊ธ€์„ ๋‹ฌ๊ฑฐ๋‚˜ ์ด๋ฉ”์ผ์— cc [email protected] ์„ ๋ณด๋‚ด์ฃผ์„ธ์š”...

@LNeway @KinsomyJS ๋‘˜ ์ค‘ ๋” ์ž์„ธํ•œ ๋‚ด์šฉ์„ ์•Œ๋ ค์ฃผ์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
๊ฐ์‚ฌ ํ•ด์š”

@taibaiyinxing Flutter๋Š” Apples App-store์—์„œ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

@zoechi ๊ท€ํ•˜ ๋ฐ/๋˜๋Š” Flutter ํŒ€์ด Flutter์—์„œ ์‹คํ˜„ ๊ฐ€๋Šฅํ•œ codepush ๊ธฐ์ˆ ์ด React-native์—์„œ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๊ฒƒ๊ณผ ๊ทผ๋ณธ์ ์œผ๋กœ ๋‹ค๋ฅด๊ณ  ๊ธˆ์ง€๋˜์–ด ์žˆ๋‹ค๋Š” ๋ถ„์„์ด ์žˆ๋‹ค๋Š” ๋ง์”€์ด์‹ ๊ฐ€์š”?

์ด ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜๋ฉด ๋ฒ ํƒ€ 1.0.0๋„ ์ง€์›๋˜๋‚˜์š”?

@dahabdev

Ionic์— ๋Œ€ํ•œ ์ œ ๊ฒฝํ—˜์— ๋น„์ถ”์–ด ๋ณผ ๋•Œ "์ฝ”๋“œ ํ‘ธ์‹œ"๊ฐ€ ๊ณผ๋Œ€ํ‰๊ฐ€๋˜์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. Flutter ํŒ€์ด ๋‹ค๋ฅธ ๊ธฐ๋ณธ ํ•„์ˆ˜ ๊ธฐ๋Šฅ์ด ์•„์ง ๋งŽ์ด ๋น ์ ธ ์žˆ๋Š” ๋™์•ˆ ์ด ์ž‘์—…์— ๋„ˆ๋ฌด ๋งŽ์€ ์‹œ๊ฐ„์„ ํ• ์• ํ•˜์ง€ ์•Š๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

UAVForecast๋ฅผ ๊ฐœ๋ฐœํ•  ๋•Œ Ionic์„ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ ์•ฑ์˜ ์ „์ฒด ์ฝ˜ํ…์ธ ๋ฅผ ์›๊ฒฉ์œผ๋กœ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ๋Š” "ionic deploy" ๊ธฐ๋Šฅ์— ๋งค๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹œ(2014๋…„) ์• ํ”Œ์˜ ์•ฑ์Šคํ† ์–ด ์‹ฌ์‚ฌ์‹œ๊ฐ„์€ 2์ฃผ ์ •๋„์˜€๋‹ค. ๋‚˜๋Š” ๊ทธ๋“ค์ด ๋งํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋น ๋ฅด๊ฒŒ ๋ฐ˜๋ณตํ•˜๊ณ , ๋น ๋ฅด๊ฒŒ ์›€์ง์ด๊ณ , ๋ฌด์–ธ๊ฐ€๋ฅผ ๊นจ๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค.

์ฒ˜์Œ์—๋Š” "์ด์˜จ ๋ฐฐํฌ"๊ฐ€ ํ›Œ๋ฅญํ–ˆ์ง€๋งŒ ๊ณง ๋ช‡ ๊ฐ€์ง€ ์ฃผ์š” ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋‚ด ์‚ฌ์šฉ์ž๋“ค์—๊ฒŒ ํ˜ผ๋ž€์„ ์•ผ๊ธฐํ–ˆ์Šต๋‹ˆ๋‹ค("์•ฑ์ด ์ž์ฒด์ ์œผ๋กœ ์—…๋ฐ์ดํŠธ๋˜์—ˆ๋‹ค๊ณ  ํ•˜๋Š”๋ฐ ์™œ Play ์Šคํ† ์–ด/์•ฑ ์Šคํ† ์–ด์—์„œ ๋‹ค๋ฅธ ์—…๋ฐ์ดํŠธ๊ฐ€ ๋ณด๋ฅ˜ ์ค‘์ธ๊ฐ€์š”?"); ์•ฑ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ(์˜ˆ: ๊ถŒํ•œ)๊ฐ€ Cordova ํ”Œ๋Ÿฌ๊ทธ์ธ์— ์˜ํ•ด ์ž๋™์œผ๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ์ง€๋งŒ ํ•ซ ์ฝ”๋“œ ํ‘ธ์‹œ๋กœ ์—…๋ฐ์ดํŠธ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์™€ ๊ฐ™์ด ๋•Œ๋•Œ๋กœ ์•ฑ์ด ์ค‘๋‹จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฒ„์ „ ๋ฒˆํ˜ธ๋ฅผ ์ถ”์ ํ•˜๋Š” ๊ฒƒ์€ ๊นŒ๋‹ค๋กœ์› ๊ณ  ๋‚ด๊ฐ€ ์ƒ์ ์— ํ‘ธ์‹œํ•œ ๊ฒƒ๊ณผ ๋™๊ธฐํ™”๋˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•ญ์ƒ ๋ฒ„๊ทธ์—์„œ ์Šค์Šค๋กœ "์ด์˜จ ๋ฐฐํฌ"ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ…Œ์ŠคํŠธ์— ๊ฒŒ์œผ๋ฅด๊ฒŒ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๋•Œ๋กœ๋Š” ์•ฑ ๊ฒ€ํ†  ํŒ€์ด ๋ณผ ๊ธฐํšŒ๋ฅผ ์ฃผ์—ˆ๋‹ค๋ฉด ๋ฐœ๊ฒฌํ–ˆ์„ ์ˆ˜ ์žˆ๋Š” ๋” ๋‚˜์œ ๋ฒ„๊ทธ๋ฅผ ํ‘ธ์‹œํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ฒซ ๋ฒˆ์งธ ๋ฒ„์ „์„ ์ถœ์‹œํ•œ ์ง€ ์•ฝ 1๋…„ ํ›„, App Store ๋ฆฌ๋ทฐ ์‹œ๊ฐ„์ด ํฌ๊ฒŒ ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋Š˜๋‚ ์—๋Š” ๋ฉฐ์น ๋กœ ๋‹จ์ถ•๋˜์—ˆ์œผ๋ฉฐ ๋ฌผ๋ก  Google Play ์Šคํ† ์–ด์—์„œ๋Š” ๋ช‡ ์‹œ๊ฐ„์œผ๋กœ ๋‹จ์ถ•๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๊ฒช์—ˆ๋˜ ๋ชจ๋“  ๋ฌธ์ œ๋ฅผ ๊ฐ์•ˆํ•  ๋•Œ ๋‚ด ์•ฑ์—์„œ "์ด์˜จ์„ฑ ๋ฐฐํฌ" ๊ธฐ๋Šฅ์„ ์ œ๊ฑฐํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๊ณ  ์ง€๊ธˆ์€ ์ˆ˜๋ฐฑ๋งŒ ๊ฑด์˜ ๋‹ค์šด๋กœ๋“œ๋ฅผ ์ง€์›ํ•˜๋ฏ€๋กœ ๋’ค๋Œ์•„๋ณด์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” Ionic์„ ์ข‹์•„ํ•˜๊ณ  ๊ฐœ๋ฐœ์ž Drifty๊ฐ€ ํ•œ ๋ชจ๋“  ๊ฒƒ์— ์ •๋ง ๊ฐ์‚ฌํ•˜์ง€๋งŒ(๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!), Drifty๊ฐ€ ์‚ฌ์šฉ์ž๋ฅผ ๋Œ์–ด๋“ค์ด๋Š” ์ฝ”๋“œ ํ‘ธ์‹œ์™€ ๊ฐ™์€ ํ™”๋ คํ•œ ๊ธฐ๋Šฅ์— ๋„ˆ๋ฌด ๋งŽ์€ ์‹œ๊ฐ„์„ ํˆฌ์žํ•˜๋Š” ์‹ค์ˆ˜๋ฅผ ํ•˜๊ณ  ์ถฉ๋ถ„ํ•œ ์‹œ๊ฐ„์„ ํ™•๋ณดํ•˜์ง€ ๋ชปํ–ˆ๋‹ค๊ณ  ์ฃผ์žฅํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๋„ˆํŠธ์™€ ๋ณผํŠธ๋ฅผ ์ œ๊ฑฐํ•˜์—ฌ ๊ฒฐ๊ตญ์—๋Š” ๋ฌธ์ œ๋ฅผ ํ”ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๋„ค ๋ฒˆ์งธ ๋ฒ„์ „์—์„œ Ionic์€ ์ด์ „ ๋ฒ„์ „๊ณผ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ๋ฐฉ์‹์œผ๋กœ ๋„ˆ๋ฌด ๋งŽ์ด ๋‹ค์‹œ ์ž‘์„ฑ๋˜์–ด ๋”ฐ๋ผ๊ฐ€๋Š” ๊ฒƒ์„ ์ค‘๋‹จํ–ˆ์Šต๋‹ˆ๋‹ค. ์ตœ์‹  ๋ฒ„์ „์—๋Š” ์—ฌ์ „ํžˆ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ๋ฐฉํ•ดํ•˜๋Š” ๋ช‡ ๊ฐ€์ง€ ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ค๋ฃฉ ๊ฑฐ๋ฆฌ๋‹ค.

์ง€๊ธˆ๊นŒ์ง€์˜ ๊ฒฝํ—˜์€ ํ›Œ๋ฅญํ–ˆ๊ณ  ๋งŽ์€ ์žฌ๋ฏธ๋ฅผ ๋Š๋ผ๊ณ  ์žˆ์ง€๋งŒ Flutter, ํŠนํžˆ ํ”Œ๋Ÿฌ๊ทธ์ธ์—์„œ ์—ฌ์ „ํžˆ ๋ช‡ ๊ฐ€์ง€ ์ฃผ์š” ๊ฒฉ์ฐจ์™€ ๋ˆ„๋ฝ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด: ๋น„๋ฐ€๋ฒˆํ˜ธ ์ž๋™ ์™„์„ฑ๊ณผ ํ…์ŠคํŠธ ํ•„๋“œ ํ†ตํ•ฉ์ด ์—†๊ณ , Google ์ง€๋„ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ๋ฒ ์–ด๋ณธ(๋ฐ ๊ด€๋ จ ํ”„๋ ˆ์ž„์›Œํฌ ๋ Œ๋”๋ง ๋ฒ„๊ทธ ์žˆ์Œ)์ด๋ฉฐ, ๊ธฐ๋ณธ WebView๋Š” ์ž์‚ฐ ๋กœ๋“œ๋ฅผ ์œ„ํ•ด file:// URL์„ ์ง€์›ํ•˜์ง€ ์•Š์œผ๋ฉฐ, ํƒญ ํ‘œ์‹œ์ค„์€ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํˆฌ๋ช…๋„ ๋˜๋Š” ๊ทธ๋ผ๋ฐ์ด์…˜ ๋ฐฐ๊ฒฝ ์ง€์›, ํ…Œ์ด๋ธ” ์…€์€ colspan์„ ์ง€์›ํ•˜์ง€ ์•Š์Œ, ThemeData๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์•ฑ๋ณ„ ์ƒ‰์ƒ์œผ๋กœ ํ™•์žฅํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์œ ์ผํ•˜๊ฒŒ ์™„์ „ํžˆ ์‹œ๊ฐ„๋Œ€๋ฅผ ์ธ์‹ํ•˜๋Š” DateTime ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—๋Š” ์ˆœ๊ฐ„ ๋ฐ ์ˆœ๊ฐ„-์‹œ๊ฐ„๋Œ€์˜ ๋งŽ์€ ์ค‘์š”ํ•œ ๊ธฐ๋Šฅ์ด ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค. ์ƒํƒœ ๊ด€๋ฆฌ์— ๋Œ€ํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์ด ๋„ˆ๋ฌด ๋งŽ์•„์„œ ์ดˆ๋ณด์ž์—๊ฒŒ๋Š” ํ˜ผ๋ž€์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. ์ด์ƒํ•œ ์˜ˆ์™ธ๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ์ž์ฃผ "ํ”Œ๋Ÿฌํ„ฐ ํด๋ฆฐ"ํ•ด์•ผ ํ•˜๊ณ  ํ•ซ ์Šค์™‘์ด ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์œผ๋ฉฐ ๊ณ„์†ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ €๋Š” ์ด ์ค‘ _๋ชจ๋‘_๋ฅผ "์ฝ”๋“œ ํ‘ธ์‹œ"๋ณด๋‹ค ๋” ์ค‘์š”ํ•œ ๊ฒƒ์œผ๋กœ ํ‰๊ฐ€ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํŠนํžˆ Apple์ด Flutter ์•ฑ์„ ๊ฑฐ๋ถ€ํ•  ์œ„ํ—˜์ด ์žˆ๋Š” ๊ฒฝ์šฐ, ๊ฒฐ๊ตญ ์•ฑ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•˜๋Š” ์ตœ์ ํ™”๋ฅผ ๋” ์–ด๋ ต๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์ปดํŒŒ์ผ๋Ÿฌ ํ”„๋ ˆ์ž„์›Œํฌ์— ๋Œ€ํ•œ ์ฃผ์š” ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ(์ €๋Š” "์ฝ”๋“œ ํ‘ธ์‹œ"๋ณด๋‹ค 5% ์„ฑ๋Šฅ ํ–ฅ์ƒ) ๋˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ ๊ธฐ๋Šฅ์„ ์™„๋ฃŒํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค.

๋ฐ˜๋ฉด์— ์ผ๋ถ€ ๊ฐœ๋ฐœ์ž๋Š” ํŠนํžˆ ๋งค์žฅ ์™ธ๋ถ€์—์„œ ์šด์˜ํ•˜๋Š” ๊ฒฝ์šฐ ์ƒํ™ฉ์— ๋”ฐ๋ผ ์ง„์ •์œผ๋กœ ํ•„์š”ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์—ฌ๊ธฐ์—์„œ ์—ด์ •์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@matthewlloyd ๋งŽ์€ ์ข‹์€ ์ !

์ฝ”๋“œ ํ‘ธ์‹œ๋ฅผ ์ง€์›ํ•  ์ˆ˜ ์—†๋‹ค๋ฉด ์ผ๋ถ€ ์‚ฌ์ „(json, xml...)์—์„œ Flutter Widget์œผ๋กœ ์ƒ์„ฑํ•  Parser๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์ด๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ฑฐ๋‚˜ ์ข‹์€ ์ƒ๊ฐ์ž…๋‹ˆ๊นŒ?

-- ์ด์— ๋Œ€ํ•ด ์˜๊ฒฌ์ด ์žˆ๋Š” ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?
https://pub.dartlang.org/packages/dynamic_widget
'์ค‘์š”ํ•œ ๋ฒ„๊ทธ'์— ๋Œ€ํ•œ ๋‘๋ ค์›€์„ ๋‹ค๋ฃจ์ง€๋Š” ์•Š์ง€๋งŒ ์œ ๋งํ•œ ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

๊ทธ๊ฒŒ ๋ฏธ์นœ ๋ถ€๋ถ„์€ ์ฝ”๋“œ ํ‘ธ์‹œ๊ฐ€ ๋ฐฉ์•ˆ์˜ ์ฝ”๋ผ๋ฆฌ๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋น„์ฆˆ๋‹ˆ์Šค/ํ”„๋กœ์„ธ์Šค ๋ฌธ์ œ์ด์ž ๊ธฐ์ˆ ์ ์ธ ๋ฌธ์ œ์ด๋ฉฐ ํ•œ์ชฝ์€ ๋‹ค๋ฅธ ์ชฝ์„ ๋ฌด์‹œํ•˜๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค...

๋น„๋ฐ€๋ฒˆํ˜ธ ์ž๋™ ์™„์„ฑ๊ณผ์˜ ํ…์ŠคํŠธ ํ•„๋“œ ํ†ตํ•ฉ์ด ์—†๊ณ , Google ์ง€๋„ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ๋ฒ ์–ด๋ณธ(๊ด€๋ จ ํ”„๋ ˆ์ž„์›Œํฌ ๋ Œ๋”๋ง ๋ฒ„๊ทธ๊ฐ€ ์žˆ์Œ)์ด๋ฉฐ, ๊ธฐ๋ณธ WebView๊ฐ€ ์ž์‚ฐ ๋กœ๋“œ๋ฅผ ์œ„ํ•œ file:// URL์„ ์ง€์›ํ•˜์ง€ ์•Š์œผ๋ฉฐ, ํƒญ ํ‘œ์‹œ์ค„์ด ํˆฌ๋ช…๋„๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ๊ทธ๋ผ๋””์–ธํŠธ ๋ฐฐ๊ฒฝ, ํ…Œ์ด๋ธ” ์…€์€ colspan์„ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ThemeData๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์•ฑ๋ณ„ ์ƒ‰์ƒ์œผ๋กœ ํ™•์žฅํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์œ ์ผํ•˜๊ฒŒ ์™„์ „ํžˆ ์‹œ๊ฐ„๋Œ€๋ฅผ ์ธ์‹ํ•˜๋Š” DateTime ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—๋Š” ์ˆœ๊ฐ„ ๋ฐ ์ˆœ๊ฐ„-์‹œ๊ฐ„๋Œ€์˜ ๋งŽ์€ ์ค‘์š”ํ•œ ๊ธฐ๋Šฅ์ด ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค. ์ ‘๊ทผ ๋ฐฉ์‹์ด ๋„ˆ๋ฌด ๋งŽ์Šต๋‹ˆ๋‹ค. ์ƒํƒœ ๊ด€๋ฆฌ๋Š” ์ƒˆ ์ด๋ฏผ์ž์—๊ฒŒ ํ˜ผ๋ž€์Šค๋Ÿฝ๊ณ  ์ด์ƒํ•œ ์˜ˆ์™ธ๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ์ž์ฃผ "ํ”Œ๋Ÿฌํ„ฐ ์ฒญ์†Œ"ํ•ด์•ผํ•˜๋ฉฐ ํ•ซ ์Šค์™‘์€ ์ข…์ข… ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์œผ๋ฉฐ ๊ณ„์†ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ...

์ด ๋ชจ๋“  ๊ฒƒ์ด ์ด๋ฏธ Github ๋ฌธ์ œ๊ฐ€ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค :D

์ด๊ฒƒ์€ ์ด์ „์— 2019๋…„ ๋กœ๋“œ๋งต์— ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•ด ๋” ์ž์„ธํžˆ ์กฐ์‚ฌํ•œ ๊ฒฐ๊ณผ, ์ง€๊ธˆ์€ ์ด ์ž‘์—…์„ ์ง„ํ–‰ํ•˜์ง€ ์•Š๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๊ฒฐ์ •์„ ๋‚ด๋ฆฌ๊ฒŒ ๋œ ๋ช‡ ๊ฐ€์ง€ ์š”์ธ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • Android ๋ฐ iOS์˜ ์Šคํ† ์–ด ์ •์ฑ…์— ๋Œ€ํ•œ ์ดํ•ด๋ฅผ ์ค€์ˆ˜ํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋“  ์†”๋ฃจ์…˜์€ Android์˜ JIT ์ฝ”๋“œ์™€ iOS์˜ ํ•ด์„๋œ ์ฝ”๋“œ๋กœ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” iOS์—์„œ ์ด๋Ÿฌํ•œ ์†”๋ฃจ์…˜์˜ ์„ฑ๋Šฅ ํŠน์„ฑ์ด ์šฐ๋ฆฌ ์ œํ’ˆ์— ์š”๊ตฌํ•˜๋Š” ํ’ˆ์งˆ์— ๋„๋‹ฌํ•  ๊ฒƒ์ด๋ผ๊ณ  ํ™•์‹ ํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. (์ฆ‰, "๋„ˆ๋ฌด ๋Š๋ฆฌ๋‹ค".)

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

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

์šฐ๋ฆฌ๋Š” ํ˜„์žฌ ๋‹ค๋ฅธ ๋ฌธ์ œ์— ์—”์ง€๋‹ˆ์–ด๋ง ๋…ธ๋ ฅ์„ ๊ธฐ์šธ์ด๋Š” ๊ฒƒ์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด ๋ถ„์•ผ์—์„œ ๊ณ„์† ์‹คํ—˜์„ ํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•˜๊ณ  ์•ž์œผ๋กœ ์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ๋‹ค์‹œ ์ง„์ง€ํ•˜๊ฒŒ ์ƒ๊ฐํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค(์˜ˆ: ๋ฐ์Šคํฌํ†ฑ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์šฉ ์—…๋ฐ์ดํŠธ ์†”๋ฃจ์…˜์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Œ). ํ•˜์ง€๋งŒ ์˜ฌํ•ด๋Š” ์•„๋‹ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

ํŒ€์˜ ๋…ผ๋ฆฌ๋ฅผ ํˆฌ๋ช…ํ•˜๊ฒŒ ์ „๋‹ฌํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

@eseidelGoogle Dart์—์„œ ์ปดํŒŒ์ผ๋œ JavaScript ์ฝ”๋“œ๊ฐ€ Skia๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŽ˜์ด์ง€๋ฅผ ๋ Œ๋”๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ด๊ฒƒ์€ ์ƒ๋‹นํžˆ ์‹ค๋ง์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.

์–ธ๊ธ‰ํ•œ ๋ชจ๋“  ๋ณด์•ˆ ๋ฐ ์ €์žฅ์†Œ ๊ทœ์ • ์ค€์ˆ˜ ๋ฌธ์ œ์™€ ๊ด€๋ จํ•˜์—ฌ ์œ ํšจํ•˜๊ณ  ํ•ฉ๋ฒ•์ ์ผ ์ˆ˜ ์žˆ์ง€๋งŒ ํ•˜๋ฃจ๊ฐ€ ๋๋‚˜๋ฉด ์ด๋ฏธ ์ž‘๋™ ์ค‘์ธ "ํ•ซ ์—…๋ฐ์ดํŠธ" ๊ธฐ์ˆ ์˜ ์˜ˆ์ธ ์ฝ”๋“œ ํ‘ธ์‹œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

React Native + ์ฝ”๋“œ ํ‘ธ์‹œ ์„œ๋น„์Šค๋Š” ์‹ค์ œ ์„ธ๊ณ„์—์„œ ์ž‘๋™ํ•˜๊ณ  ์ž…์ฆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธํ•œ ์ „ํˆฌ์ž…๋‹ˆ๋‹ค. ๊ฐ„์ ‘ ์—…๋ฐ์ดํŠธ์— ๋Œ€ํ•ด์„œ๋Š” ์•ฑ์Šคํ† ์–ด์— ๋ฌธ์ œ๊ฐ€ ์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ชจ๋‘๊ฐ€ "๊ดœ์ฐฎ์•„"์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ Flutter์˜ ์†”๋ฃจ์…˜๋„ ํ—ˆ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์„ฑ๋Šฅ ๋ฌธ์ œ์™€ ๊ด€๋ จํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๊ฐ€ "์ €์„ฑ๋Šฅ" ๋ชจ๋“œ์—์„œ ์ž‘์—…ํ•˜๋„๋ก ์„ ํƒํ•˜์ง€๋งŒ ๋ผ์ด๋ธŒ ์—…๋ฐ์ดํŠธ๋Š” ํ™œ์„ฑํ™”ํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์ข‹์€ ์›€์ง์ž„! ์ƒํƒœ๊ณ„๋ฅผ ์ง€๋‚˜์น˜๊ฒŒ ๋ณต์žกํ•˜๊ฒŒ ๋งŒ๋“ค๊ณ  ์†์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ ํ‘ธ์‹œ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค Flutter๋ฅผ ์ตœ์ ํ™”ํ•˜๋Š” ๋ฐ ์—”์ง€๋‹ˆ์–ด๋ง ๋…ธ๋ ฅ์„ ์Ÿ์Šต๋‹ˆ๋‹ค.

์ €๋Š” ํ˜„์žฌ ๊ณต๊ฐœ ๋ฒ ํƒ€ ํ…Œ์ŠคํŠธ์—์„œ Flutter๋กœ ๊ฐœ๋ฐœ๋œ ์ฒซ ๋ฒˆ์งธ ์•ฑ์„ ๋ณด์œ ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์ˆ˜์ • ์‚ฌํ•ญ์ด ํฌํ•จ๋œ ์•ฝ 10๊ฐœ์˜ ์•ฑ ๋ฒˆ๋“ค์„ ํ‘ธ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ”„๋กœ๋•์…˜์— ๋ฆด๋ฆฌ์Šคํ•  ๋•Œ ๋Œ€๋ถ€๋ถ„ ์˜ค๋ฅ˜๊ฐ€ ์—†์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์ด ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•  ์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ์ธ๊ธฐ๋งŒ์ ์ธ 89์ ์—์„œ ์ข‹์€ ์„ฑ๊ณผ๋ฅผ ๋ณด์ด๋Š” ์ด ํŽ ํŒจํ‚ค์ง€ OTA ์—…๋ฐ์ดํŠธ ๋ฅผ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ ํŒจํ‚ค์ง€๋Š” ์•ˆ์ „ํ•œ๊ฐ€์š”? URL์—์„œ APK๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ๊ธฐ๋ณธ์ ์œผ๋กœ ์••์ถ•์„ ํ’€๊ณ  Android์—์„œ APK ์„ค์น˜ ์˜๋„๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด ๊ธฐ๋Šฅ์ด ์ ˆ๋Œ€์ ์œผ๋กœ ํ•„์š”ํ•œ ์‚ฌ๋žŒ๋“ค์€ ํ•ด๋‹น ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

๋‚ด๊ฐ€ ์‹œ์ž‘ํ•  ๋•Œ 2GB RAM ๋จธ์‹ ์ด ์žˆ์—ˆ๊ณ  ํ•ญ์ƒ ์›ํ–ˆ๋˜ ๋Œ€๋กœ Android ์•ฑ์„ ๊ฐœ๋ฐœํ•˜๋ ค๊ณ  ํ–ˆ์ง€๋งŒ ๋‚ด ๋จธ์‹ ์ด ์ž‘์—…์— ์ ํ•ฉํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. PhoneGap, Cordova, ์ผ๋ถ€ Intel ํ”„๋ ˆ์ž„์›Œํฌ, React-Native๋ฅผ ์‚ฌ์šฉํ•ด ๋ณด์•˜์ง€๋งŒ ์‹คํ–‰๋„ ์‹œ์ž‘ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. Flutter๋Š” ๋‚ด๊ฐ€ ์‹ค์ œ๋กœ ์‹œ์ž‘ํ•œ ์œ ์ผํ•œ ์‚ฌ๋žŒ์ด์—ˆ๊ณ  ์•„๋ฆ„๋‹ค์šด UI์™€ ๊ฐœ๋ฐœ ๋„๊ตฌ๋กœ ์ด ๊ธฐ๋Šฅ์ด ์—†์–ด๋„ ๋™์‹œ๋Œ€ ์ œํ’ˆ๋ณด๋‹ค ํ›จ์”ฌ ์•ž์„œ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  ์—…๋ฐ์ดํŠธ?

React-native๊ฐ€ Code Push๋กœ ์šฐ๋ฆฌ๋ฅผ ๋ง์ณค๋˜ ์ดํ›„๋กœ ์•ฑ ๋ฆด๋ฆฌ์Šค ์›Œํฌํ”Œ๋กœ๋Š” ๊ฒฐ์ฝ” ๋™์ผํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. Flutter๊ฐ€ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์€ ์ •๋ง ์ˆ˜์น˜์Šค๋Ÿฌ์šด ์ผ์ž…๋‹ˆ๋‹ค. Flutter๋Š” ๋ฉ‹์ง€๊ฒŒ ๊ตฌ์„ฑ๋˜๊ณ  ์žˆ์œผ๋ฉฐ ์ด ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜๊ธฐ๋กœ ์„ ํƒํ–ˆ๋‹ค๋ฉด React Native์˜ ๊ฒฝ์Ÿ์ž๊ฐ€ ๋˜์—ˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„์•„...

@Hixie ์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ทผ๋ณธ์ ์ธ ์—”์ง€๋‹ˆ์–ด๋ง/๊ธฐ์ˆ ์  ๋ณ€๊ฒฝ์—๋Š” ํ˜„์žฌ๋กœ์„œ๋Š” ๋„ˆ๋ฌด ๋งŽ์€ ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ - ์ผ๋ถ€ ๋ฌธ์„œ/ํ† ๋ก ์„ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ๋Œ€์ฒด ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‹จ๊ธฐ ๋ฐ ์ค‘๊ธฐ์ ์œผ๋กœ ํ”Œ๋Ÿฌํ„ฐ ๊ฐœ๋ฐœ์ž๋ฅผ ๋•๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜์‹ญ๋‹ˆ๊นŒ? '์Šน์ธ๋œ' ๋˜๋Š” ๊ณต์‹ ์†”๋ฃจ์…˜์€ ์•„๋‹ˆ์ง€๋งŒ ์•ฝ๊ฐ„์˜ ๊ด€์‹ฌ์„ ๊ฐ€์งˆ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ

  • Firebase ์‹ค์‹œ๊ฐ„ ๊ตฌ์„ฑ
  • ์„œ๋ฒ„ ๊ธฐ๋ฐ˜ json->widgets(์˜ˆ: https://github.com/dengyin2000/dynamic_widget/blob/master/WIDGETS.md ๋˜๋Š” simlar, ๋‚˜๋Š” ์•„์ง ์ •ํ™•ํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ง€์ง€ํ•˜์ง€ ์•Š์ง€๋งŒ ์•„์ด๋””์–ด๋ฅผ ์ง€์ง€ํ•ฉ๋‹ˆ๋‹ค)
  • ๋˜๋Š” ์•„๋งˆ๋„ ๋‹ค๋ฅธ ๊ฒƒ, ์•„๋งˆ๋„ ๊ณ ๊ธ‰ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ ํด๋ผ์šฐ๋“œ ๊ธฐ๋Šฅ...
  • ๋ถ„๋ช…ํžˆ ๋‚˜๋Š” โ€‹โ€‹'ํฐ' ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ์œ„ํ•ด ๋งŽ์€ ์—”์ง€๋‹ˆ์–ด๋ง ๋…ธ๋ ฅ์„ ๊ธฐ์šธ์ด๋ผ๊ณ  ์ œ์•ˆํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ '๋ชจ๋“  ๊ฒƒ์„ ์ˆ˜์ •/๋ณ€๊ฒฝํ•˜์ž' ์—†์ด ๋Œ€๋ถ€๋ถ„์˜ ํ•„์š”๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ์ผ์ข…์˜ hello-world-code-push-alternative์ž…๋‹ˆ๋‹ค. ' ์œ ํ˜• ์•„ํ‚คํ…์ฒ˜.

๋‚ด ์ „์ œ๋Š” "์šฐ๋ฆฌ"๊ฐ€ flutter์— ๋Œ€ํ•œ ๊ทผ๋ณธ์ ์ธ ์•„ํ‚คํ…์ฒ˜ ๋ณ€๊ฒฝ ์—†์ด codepush์— ๋Œ€ํ•œ ์šฐ๋ ค์˜ 70-90%๋ฅผ ์ถฉ์กฑํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์•„๋ฌด๋„ ์ด๊ฒƒ์„ ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•ฉ๋‹ˆ๊นŒ?

Flutter์˜ code-as-ui ์ ‘๊ทผ ๋ฐฉ์‹์€ Android ๊ฐœ๋ฐœ์ž๋ณด๋‹ค ์ด๊ฒƒ์„ ๋” ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค....

์ €๋Š” ๊ฐœ์ธ์ ์œผ๋กœ ์ด๋Ÿฐ ์ด์œ ๋กœ ํ”Œ๋Ÿฌํ„ฐ๋ณด๋‹ค ๋‹ค๋ฅธ ๋†ˆ์„ ์„ ํƒํ•œ ํšŒ์‚ฌ๋ฅผ ๋‘ ๊ณณ ์ด์ƒ ๋ณด์•˜๊ณ  ๋‹ค๋ฅธ ๋งŽ์€ ํšŒ์‚ฌ๋„ ๋น„์Šทํ•˜๊ฒŒ ๋งํ–ˆ์Šต๋‹ˆ๋‹ค.

์–ด์ฉŒ๋ฉด ๋Œ€ํ™”๊ฐ€ ๊ฐˆ์ง€๋„ ๋ชฐ๋ผ
"์‚ฌ์šฉ์ž: codepush ์ง€์›์„ ๊ฑด๋„ˆ๋›ฐ๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?"
"Flutter ํŒ€: ์˜ˆ-์ง€๊ธˆ์€ ์ด๋Ÿฌํ•œ ์ด์œ  ๋•Œ๋ฌธ์— (๋‹น์‹ ์ด ๊ทธ๋žฌ๋˜ ๊ฒƒ์ฒ˜๋Ÿผ) ์ถ”๊ฐ€๋กœ ์ผ๋ถ€ ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋Œ€ํ•ด A ๋˜๋Š” B๋ฅผ ์‹œ๋„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค."

๊ธด ๋Œ“๊ธ€ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค

@neiljaywarner ์•„๋งˆ๋„ LUA๋Š” ๋‹น์‹ ์„ ์œ„ํ•œ ๊ฐ€์น˜๊ฐ€ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค - ์ž‘๋…„์— Flutter ์•ฑ์˜ ๊ธฐ๋Šฅ์„ ์ƒ์„ฑ/์กฐ์ •ํ•˜๋Š” ๋ฐ LUA ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐœ๋… ์ฆ๋ช…์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.

@neiljaywarner ์ €๋Š” ๊ทธ๋Ÿฐ ์ข…๋ฅ˜์˜ ์ ‘๊ทผ ๋ฐฉ์‹์— ์ฐฌ์„ฑํ•˜์ง€๋งŒ ์ด ๋ฒ„๊ทธ๊ฐ€ ๋‹ค๋ฃจ๋Š” ๊ฒƒ๋ณด๋‹ค ์ง๊ต์ ์ธ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

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

ํŒ€์˜ ํ•ฉ๋ฆฌ์„ฑ์„ ํˆฌ๋ช…ํ•˜๊ฒŒ ์ „๋‹ฌํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋™์˜ํ•œ๋‹ค

์ฝ”๋“œ ํ‘ธ์‹œ ๊ธฐ๋Šฅ์€ ๋” ๋งŽ์€ ์•ฑ, ๋” ๋งŽ์€ ํด๋ผ์ด์–ธํŠธ, ๋” ๋งŽ์€ ๊ฐœ๋ฐœ์ž, ๋” ๋งŽ์€ ํ…Œ์ŠคํŠธ, ๋” ๋งŽ์€ ๋ฒ„๊ทธ ์ˆ˜์ •, ๋” ์ ์€ ๋ฌธ์ œ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์‹ ์ƒ ๊ธฐ์—…์˜ MVP ๋˜๋Š” ์„ฑ์žฅํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ฒฝ์šฐ ์—…๋ฐ์ดํŠธ ๋˜๋Š” ๋ฒ„๊ทธ ์ˆ˜์ •์ด ์ค‘์š”ํ•˜์ง€๋งŒ ์„ฑ๋Šฅ์€ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ๋œ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ Flutter ์ƒํƒœ๊ณ„์— ์ฐฌ๋ฐ˜ ์–‘๋ก ์„ ์•ผ๊ธฐํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฑ„ํƒ ๊ฐ์†Œ, ์‹ ์ƒ ๊ธฐ์—… ๋ฐ ๊ฐœ์ธ ๊ฐœ๋ฐœ์ž๋Š” ์ดˆ๊ธฐ ๋‹จ๊ณ„์˜ ์ปค๋ฎค๋‹ˆํ‹ฐ ์„ฑ์žฅ์— ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์žฅ์ ์€ ๋” ๋†’์€ ์„ฑ๋Šฅ์„ ๋ชฉํ‘œ๋กœ ํ•˜๋Š” Flutter๋กœ ์ „ํ™˜ํ•  ๊ณ ํ’ˆ์งˆ ์•ฑ๊ณผ ํŒ€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@maplerichie , ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ flutter๋ฅผ ์ข‹์•„ํ•˜๋Š” ์ด์œ ๋Š” ๋ชจ๋“  ์žฅ์น˜์— ๋Œ€ํ•œ ๊ฐœ๋ฐœ์ž ๊ฒฝํ—˜, ์„ฑ๋Šฅ ๋ฐ ํฌ๋กœ์Šค ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค. code-push๊ฐ€ ๊ตฌํ˜„๋˜์ง€ ์•Š์•„๋„ ์ƒ๊ด€์—†์Šต๋‹ˆ๋‹ค(์•„๋งˆ๋„). ์ƒํƒœ๊ณ„์˜ ๋ช…์„ฑ๊ณผ ์ธ๊ธฐ๋ฅผ ์œ„ํ•ด์„œ์ž…๋‹ˆ๋‹ค. ์ด์ œ Windows ์•ฑ์„ ์‚ฌ์šฉํ•  ๋•Œ ์ฝ”๋“œ ํ‘ธ์‹œ๊ฐ€ ๋„ˆ๋ฌด ๋Š๋ฆฐ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ์ด์œ ๋ฅผ ์•Œ์•˜์Šต๋‹ˆ๋‹ค. (๋Š๋ฆฐ ์‹œ์ž‘, ์ž…๋ ฅ ์ง€์—ฐ ๋ฐ ๋Š๋ฆฐ ์• ๋‹ˆ๋ฉ”์ด์…˜) ์—ฌ๊ธฐ

์šฐ๋ฆฌ๋Š” ์ด ๊ธฐ๋Šฅ์ด ๋งค์šฐ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค
์ตœ์‹  ์—…๋ฐ์ดํŠธ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค

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

@yaronlevi ์ €๋Š” "์ž‘์€ ์Šคํƒ€ํŠธ์—…"์ž…๋‹ˆ๋‹ค. ๋ชจ๋ฐ”์ผ ์•ฑ์—์„œ ์ž‘์—…ํ•˜๋Š” ๊ฐœ๋ฐœ์ž ๋ช‡ ๋ช…๋„ ๋˜์ง€ ์•Š๋Š” ์ €์ž…๋‹ˆ๋‹ค. ๋น ๋ฅธ ๋ฆด๋ฆฌ์Šค ์ฃผ๊ธฐ๋กœ ํ”„๋กœ๋•์…˜์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. Google Play ์Šคํ† ์–ด์—์„œ ๋ช‡ ์‹œ๊ฐ„ ๋งŒ์— ์—…๋ฐ์ดํŠธ๋ฅผ ์ œ๊ณตํ•˜๊ณ  Apple App Store์—์„œ ์—…๋ฐ์ดํŠธ๋ฅผ ๊ฒ€ํ† ํ•˜๋Š” ์š”์ฆ˜ ๋‚ด ๊ฒฝํ—˜์œผ๋กœ๋Š” ๊ฑฐ์˜ ํ•ญ์ƒ 24์‹œ๊ฐ„ ๋ฏธ๋งŒ์ด๋ฏ€๋กœ ์ฝ”๋“œ ํ‘ธ์‹œ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Flutter์— ์ฝ”๋“œ ํ‘ธ์‹œ๊ฐ€ ์žˆ์—ˆ๋‹ค๋ฉด ์ €๋Š” ์ ๊ทน์ ์œผ๋กœ ๋‚ด ์•ฑ์—์„œ ๋น„ํ™œ์„ฑํ™”๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ์กฐ์น˜๋ฅผ ์ทจํ–ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

์•”ํŠผ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.
์šฐ๋ฆฌ ์Šค์Šค๋กœ ํ•ด๊ฒฐํ•ด์•ผ ํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ •๋ง ์‹ค๋ง์ž…๋‹ˆ๋‹ค :)

์›น SDK์šฉ Flutter ๊ฐ€ ๊ณง ๋ชจ๋ฐ”์ผ SDK์™€ ๋ณ‘ํ•ฉ๋ฉ๋‹ˆ๋‹ค. ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ๋ชจ๋ฐ”์ผ WebView๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ”Œ๋Ÿฌํ„ฐ ์ฝ”๋“œ๋ฅผ ๋กœ๋“œํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๐Ÿ˜

@matthewlloyd ์•ˆ๋…•ํ•˜์„ธ์š”, ํ•ซ ์—…๋ฐ์ดํŠธ๋ฅผ ์ง€์›ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์š”์ ์€ ๊ฒ€ํ† ํ•  ์‹œ๊ฐ„์ด ์•„๋‹™๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” AppStore์— ์—ฐ๊ฒฐ๋˜์–ด ์•ฑ์„ ๋‹ค์‹œ ๋‹ค์šด๋กœ๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ฝ”๋“œ ํ‘ธ์‹œ๊ฐ€ ์—†๋Š” ๊ฒƒ๊ณผ ๊ด€๋ จํ•˜์—ฌ ๊ธด๊ธ‰ํ•œ ๋ฌธ์ œ๋Š” ๋ณ„๋กœ ์—†์Šต๋‹ˆ๋‹ค. ๊ฑฐ์˜ ๋ชจ๋“  ์‚ฌ์šฉ์ž๋Š” ์•ฑ ์Šคํ† ์–ด์—์„œ ์ž๋™ ์—…๋ฐ์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ App Store ์—†์ด ์—…๋ฐ์ดํŠธ๋ฅผ ๋ฐฐํฌํ•˜๊ธฐ ์œ„ํ•œ ๋Œ€์ฒด ์†”๋ฃจ์…˜์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

MXFlutter๋Š” JavaScript๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Flutter์˜ ๋ Œ๋”๋ง ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ณ  Flutter ๊ตฌ๋ฌธ์„ ์ง€์›ํ•˜๋ฉฐ ์ฝ”๋“œ ํ‘ธ์‹œ ๋ฐ ํ•ซ ์—…๋ฐ์ดํŠธ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
https://github.com/TGIF-iMatrix/MXFlutter

@TGIF-iMatrix ์ด ์†”๋ฃจ์…˜์ด Store์˜ ์œ ํ†ต ์ •์ฑ…์„ ์ค€์ˆ˜ํ•˜๋Š”์ง€ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

@truongsinh
js ๋ฐฐํฌ -> ๋„ค์ดํ‹ฐ๋ธŒ ํŒŒ์„œ -> ์œ„์ ฏ ์ž‘์„ฑ ๋ฐฉ์‹์ด๋ฏ€๋กœ ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค.

์ฝ”๋“œ ํ‘ธ์‹œ๋ฅผ ์ง€์›ํ•˜๋Š” ๊ฒฝ์šฐ ํ”Œ๋Ÿฌํ„ฐ ์‚ฌ์šฉ์„ ๊ณ ๋ คํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@TGIF-iMatrix Javascript Core ์—…๋ฐ์ดํŠธ์— ๋Œ€ํ•œ ๋ฉด์ œ๊ฐ€ App Store ๊ณ„์•ฝ์—์„œ ์‚ญ์ œ๋˜์—ˆ๊ณ  ๋งŽ์€ CodePush ์‚ฌ์šฉ์ž๊ฐ€ ํ•ด๋‹น ๊ธฐ๋Šฅ์œผ๋กœ ์ธํ•ด ๊ฒฝ๊ณ /๊ฑฐ๋ถ€๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— Apple์—์„œ ์ด๋ฅผ ์Šน์ธํ•˜์ง€ ์•Š์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค.

"sever-dictated-rendering" ๋Œ€ "code push"๋ผ๋Š” ์งˆ๋ฌธ์„ ๋ฐ”๊ฟ”์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. "sever-dictated-rendering"์€ ๋‹ค๋ฅธ UI/๋ ˆ์ด์•„์›ƒ/ํ…Œ๋งˆ์— ๊ด€ํ•œ ๊ฒƒ์ด๋ฉฐ, code-push๋Š” ๋˜ํ•œ ๋…ผ๋ฆฌ, ๊ถŒํ•œ, ํ”Œ๋Ÿฌ๊ทธ์ธ ๋“ฑ์˜ ๋ณ€๊ฒฝ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๊ทธ ์‹œ์ ์—์„œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ด๊ฒƒ์€ ์ด ๋ฌธ์ œ์˜ ๋ชฉ์ ์„ ๋‹ค์†Œ ๋ฌดํšจํ™”ํ•ฉ๋‹ˆ๋‹ค.

๋ˆ„๊ตฌ๋“ ์ง€ Tencent github repo์—์„œ ์ œ๊ณตํ•˜๋Š” flutter๋กœ tinker-lib๋ฅผ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๊นŒ? ๊ด€์‹ฌ ์žˆ๋Š” ์‚ฌ๋žŒ์ด ๋‹น์‹ ๊ณผ ํ˜‘๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์—…๋ฐ์ดํŠธ๋ฅผ ํ‘ธ์‹œํ•  ์ˆ˜ ์žˆ์—ˆ์ง€๋งŒ Flutter์—์„œ ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•˜๋Š” ์ƒˆ ์ฝ”๋“œ๋ฅผ ๋กœ๋“œํ•˜๋ ค๋ฉด ์•ฝ๊ฐ„์˜ ์ˆ˜์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ํ•ญ์•„๋ฆฌ ์•„ํ‹ฐํŒฉํŠธ ํŒŒ์ผ

ํ•˜๋ฃจ๋นจ๋ฆฌ ํ•ด๊ฒฐ์ฑ…์ด ๋‚˜์˜ค๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค

์ฝ”๋“œ ํ‘ธ์‹œ ๊ตฌํ˜„์˜ ์„ฑ๋Šฅ ์˜ํ–ฅ๊ณผ ๊ด€๋ จํ•˜์—ฌ Dart ์ฝ”๋“œ๋ฅผ WebAssembly๋กœ ์ปดํŒŒ์ผํ•˜๋Š” ๊ฒƒ์ด ๋„์›€์ด ๋ ๊นŒ์š”? ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด JavaScript ์ƒŒ๋“œ๋ฐ•์Šค ๋‚ด์—์„œ iOS์—์„œ JIT ์ปดํŒŒ์ผ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๋น ๋ฅธ ๋ฐ˜๋ณต๊ณผ ๋ฏผ์ฒฉํ•œ ๊ฐœ๋ฐœ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
์ตœ์‹  ์—…๋ฐ์ดํŠธ๊ฐ€ ์—†์œผ๋ฉด Flutter๋Š” ํ•ญ์ƒ ๋ฐ˜์‘ ๋„ค์ดํ‹ฐ๋ธŒ์˜ ๋‚จ๋™์ƒ์ž…๋‹ˆ๋‹ค.

ํ•ซ ์—…๋ฐ์ดํŠธ๋Š” ์šฐ๋ฆฌ์—๊ฒŒ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌํ„ฐ๊ฐ€ ํ•ซ ์—…๋ฐ์ดํŠธ๋ฅผ ์ง€์›ํ•œ๋‹ค๋ฉด ๋ฐ˜์‘ ๋„ค์ดํ‹ฐ๋ธŒ๋ฅผ ๋Œ€์ฒดํ•˜๊ธฐ ์œ„ํ•ด ํ”Œ๋Ÿฌํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

ํ•ซ ์—…๋ฐ์ดํŠธ๋Š” ํ•ญ์ƒ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค!

์ด๊ฒƒ์€ ํ•„์ˆ˜ ๊ธฐ๋Šฅ์ด๋ฉฐ ์ค‘์š”ํ•œ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

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

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

์•ˆ๋…•ํ•˜์„ธ์š” @canewsin
๋‚˜๋Š” ๋˜ํ•œ ํ”Œ๋Ÿฌํ„ฐ ์—”์ง„์„ ์ˆ˜์ •ํ•˜์ง€ ์•Š๊ณ  ๋™์ผํ•œ ์ž‘์—…์„ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค. AOT ๋ชจ๋“œ์—์„œ ์—”์ง„์€ Android์˜ ๊ธฐ๋ณธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ฒฝ๋กœ์—์„œ .so ํŒŒ์ผ์„ ์ฐพ๊ณ  ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ์ปดํŒŒ์ผ์ด JVM์— ์˜ํ•ด ์ œํ•œ ๋œ ํ›„ ๊ฑฐ๊ธฐ์— ํŒŒ์ผ์„ ์ˆ˜์ •/์ถ”๊ฐ€ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฌด์„ ์œผ๋กœ ๋‹ค์šด๋กœ๋“œํ•œ .so ํŒŒ์ผ์„ ๋กœ๋“œํ•˜๋Š” ๊ฒƒ์€ ๊ธฐ๋ณธ lib ๊ฒฝ๋กœ์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๊ท€ํ•˜์˜ ๋” ๋งŽ์€ ํ†ต์ฐฐ๋ ฅ์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ˜€

๋‹คํŠธ ์ฝ”๋“œ์™€ ๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ๋ฅผ ๋ชจ๋‘ ์—…๋ฐ์ดํŠธํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
๋‹คํŠธ์ฝ”๋“œ๋งŒ ์žˆ์œผ๋ฉด OK!

์ด๋ด, ๋‚˜๋Š” ์ง€๊ธˆ ์ด๊ฒƒ์ด ํ•„์š”ํ•˜๋‹ค. Goodle์€ ๊ฒ€ํ†  ์ •์ฑ…์„ ์—„๊ฒฉํ•˜๊ฒŒ ์ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ์•ฑ์€ ์ง€๊ธˆ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐ 2์ฃผ๊ฐ€ ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค... ์šฐ๋ฆฌ์˜ ๋ฆฐ ๋ฐฉ๋ฒ•๋ก ์€ ์ด๊ฒƒ์œผ๋กœ ์—‰๋ง์ด ๋ฉ๋‹ˆ๋‹ค.

@NEELANSHSETHI ์—ฌ๊ธฐ์— ๊ณ„ํš์„ ๊ฒŒ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๊ตฌํ˜„์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@almeynman ์ง„ํ–‰ ์ƒํ™ฉ์„ ์•Œ๋ ค์ฃผ์„ธ์š” :)

@HerrNiklasRaab ๊ตฌํ˜„ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋ช…ํ™•ํ•œ ๊ทธ๋ฆผ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์•„์ง ์‹œ์ž‘ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฌ๋“ ์ง€ ์•„์ด๋””์–ด๊ฐ€ ์žˆ์œผ๋ฉด ์ƒ๊ฐ์„ ๊ณต์œ ํ•˜์‹ญ์‹œ์˜ค

์ด๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ ๋ฐ˜์‘ ๋„ค์ดํ‹ฐ๋ธŒ์—์„œ ํ”Œ๋Ÿฌํ„ฐ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜์ง€ ์•Š์€ ์ฃผ๋œ ์ด์œ ์ž…๋‹ˆ๋‹ค. :(

๐Ÿ˜”

ReactNative๋Š” ์ด ๊ธฐ๋Šฅ์œผ๋กœ ์ธํ•ด Flutter๋ณด๋‹ค ํ›จ์”ฌ ์•ž์„œ ์žˆ์œผ๋ฉฐ ํ‘ธ์‹œ ์ฝ”๋“œ ๊ธฐ๋Šฅ๊ณผ ๋น„๊ตํ•˜์—ฌ ํ™˜๊ฒฝ(RN ๋˜๋Š” Flutter) ์„ ํƒ์ด ๋””์ฝ”๋”ฉ๋œ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŽ์ด ํ–ˆ์Šต๋‹ˆ๋‹ค! ์†Œ์‹์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค :/

์•ˆ๋…•ํ•˜์„ธ์š”, ์ œ๊ฐ€ ์ผ์„ ์‹œ์ž‘ํ–ˆ๋‹ค๊ณ  ๋งํ–ˆ๋“ฏ์ด ๋ฒŒ์จ 11์›”์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ˆœ์กฐ๋กญ๊ฒŒ ์ง„ํ–‰๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋น„๊ณต๊ฐœ ํ”„๋กœ์ ํŠธ์ด๋ฏ€๋กœ ๋ผ์ด์„ผ์Šค ํ‚ค๋ฅผ ์ฒญ๊ตฌํ•˜์—ฌ ์‚ฌ์šฉํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋ฌด๋ฃŒ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์ˆ˜์ž…์›์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ ‡๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ด€์‹ฌ์ด ์žˆ์œผ์‹œ๋ฉด ์ž‘์—…์— ๋Œ€ํ•œ ํ›„์† ์ €์žฅ์†Œ๋ฅผ ๋งŒ๋“ค๊ณ  ์—…๋ฐ์ดํŠธ๋ฅผ ์œ„ํ•ด ํŒ”๋กœ์šฐํ•˜์‹ญ์‹œ์˜ค. ํƒ€์ž„ ๋ผ์ธ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“ค๋ฉด ์—ฌ๋Ÿฌ๋ถ„์—๊ฒŒ ์•Œ๋ ค ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

@eseidelGoogle
๋น„์ฆˆ๋‹ˆ์Šค ์‚ฌ๋ก€:
ํƒœ๋ธ”๋ฆฟ์— ๋ฒ„์Šค ์ถ”์  ์•ฑ์ด ์žˆ์ง€๋งŒ ํƒœ๋ธ”๋ฆฟ์ด Wi-Fi๊ฐ€ ์•„๋‹Œ ์ธํ„ฐ๋„ท ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ณ ๊ฐ์ด ํ•œ ๋‹ฌ์— 1๋ฒˆ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.
์ฝ”๋“œ ํ‘ธ์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ณ ๊ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ˆ๋ฌด ๋งŽ์ด ์†Œ๋น„ํ•˜์ง€ ์•Š๊ณ  ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์ฝ”๋“œ ํ‘ธ์‹œ, ๊ทธ๊ฒƒ์ด ๋‚ด๊ฐ€ ์ง€๊ธˆ React-Native๋ฅผ ๋ฐฐ์šฐ๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค.

๋‚ด ๊ตฌํ˜„์— ๊ด€์‹ฌ์ด ์žˆ๋‹ค๋ฉด
์—ฌ๊ธฐ์—์„œ ์ง„ํ–‰ ๋ณด๊ณ ์„œ๋ฅผ ๋”ฐ๋ฅด์‹ญ์‹œ์˜ค
https://github.com/canewsin/flutter-code-push-timeline
๊ณ„์†ํ•˜๊ธฐ ์ „์— ์œ„์˜ ๋ชจ๋“  ์˜๊ฒฌ์„ ์ฝ์œผ์‹ญ์‹œ์˜ค.

์ฝ”๋“œ ํ‘ธ์‹œ, ์ด๊ฒƒ์ด ๋‚ด๊ฐ€ ์—ฌ์ „ํžˆ React-Native๋ฅผ ์œ ์ง€ํ•˜๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค.

๊ฑด์„ค์ ์ด์ง€ ์•Š์€ ๊ฒŒ์‹œ๋ฌผ, +1, "์ด๊ฒƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค", "๋Œ€์‹  X๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค" ๋“ฑ์€ ๊ฒŒ์‹œํ•˜์ง€ ๋งˆ์„ธ์š”. ์ด๋Š” ๊ฑด์„ค์ ์ด์ง€ ์•Š๊ณ  ํ† ๋ก ์— ๊ธฐ์—ฌํ•˜์ง€๋„ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

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

๋˜ํ•œ ์—ฌ๊ธฐ ๊ตฌ๋…ํ•˜๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์—๊ฒŒ github์˜ ์Šค๋ ˆ๋“œ ์˜ค๋ฅธ์ชฝ ์ƒ๋‹จ์— unsubscribe ๋ฒ„ํŠผ์ด ์žˆ์Œ์„ ์ƒ๊ธฐ์‹œํ‚ค๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ Flutter ํŒ€์€ ์ถ”์ฒœ ํšŸ์ˆ˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ฌธ์ œ์˜ ์šฐ์„  ์ˆœ์œ„๋ฅผ ์ง€์ •ํ•˜๋ฏ€๋กœ ํ•ด๋‹น ์นด์šดํ„ฐ๋ฅผ ๋†’๊ฒŒ ์„ค์ •ํ•˜๋ฉด ํฐ ๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  "๊ตฌ๋…"์„ ํด๋ฆญํ•˜๋ฉด ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๋งก์€ ์ฝ”๋“œ ํ‘ธ์‹œ ํ”„๋กœ์ ํŠธ๋Š” ์ž˜ ์ง„ํ–‰๋˜๊ณ  ์žˆ์ง€๋งŒ ์ฝ”๋“œ ํ‘ธ์‹œ ์š”๊ตฌ ์‚ฌํ•ญ์˜ ๋ช‡ ๊ฐ€์ง€ ์˜ˆ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ฝ”๋“œ ํ‘ธ์‹œ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•ฉ๋‹ˆ๊นŒ? ๊ณ ์œ ํ•œ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ์ƒˆ ๋ฌธ์ œ๋กœ ๊ฒŒ์‹œํ•ฉ๋‹ˆ๋‹ค. https://github.com/ canewsin/flutter-code-push-timeline์„ ์‚ฌ์šฉ ํ•˜์—ฌ ๊ฐœ๋ฐœ์ด ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉํ–ฅ์œผ๋กœ ์ง„ํ–‰๋˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
์ง€๊ธˆ๊นŒ์ง€ ์ฐพ์€ ์ œํ•œ ์‚ฌํ•ญ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
๊ธฐ๋ณธ ํ”Œ๋žซํผ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†์ง€๋งŒ ffi ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
codepush ์ฝ”๋“œ๋Š” ์ผ๋ถ€ ๋ณด์•ˆ ๋ฌธ์ œ๋ฅผ ์œ„ํ•ด ์ƒŒ๋“œ๋ฐ•์Šค์—์„œ ์‹คํ–‰๋˜๋ฏ€๋กœ ์žฅ์น˜์— ํ•ด๋ฅผ ๋ผ์น  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”, ์ œ๊ฐ€ ์ผ์„ ์‹œ์ž‘ํ–ˆ๋‹ค๊ณ  ๋งํ–ˆ๋“ฏ์ด ๋ฒŒ์จ 11์›”์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ˆœ์กฐ๋กญ๊ฒŒ ์ง„ํ–‰๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋น„๊ณต๊ฐœ ํ”„๋กœ์ ํŠธ์ด๋ฏ€๋กœ ๋ผ์ด์„ผ์Šค ํ‚ค๋ฅผ ์ฒญ๊ตฌํ•˜์—ฌ ์‚ฌ์šฉํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋ฌด๋ฃŒ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์ˆ˜์ž…์›์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ ‡๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ด€์‹ฌ์ด ์žˆ์œผ์‹œ๋ฉด ์ž‘์—…์— ๋Œ€ํ•œ ํ›„์† ์ €์žฅ์†Œ๋ฅผ ๋งŒ๋“ค๊ณ  ์—…๋ฐ์ดํŠธ๋ฅผ ์œ„ํ•ด ํŒ”๋กœ์šฐํ•˜์‹ญ์‹œ์˜ค. ํƒ€์ž„ ๋ผ์ธ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“ค๋ฉด ์—ฌ๋Ÿฌ๋ถ„์—๊ฒŒ ์•Œ๋ ค ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

๋งค์šฐ ํฅ๋ฏธ๋กœ์šด!
์•ˆ๋…•ํ•˜์„ธ์š”, ์•„์ง ์˜ˆ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๋ฆฌ๊ณ  iOS ์„น์…˜์„ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๊นŒ? Apple์€ ์ด ๋ถ„์•ผ์—์„œ ๋งค์šฐ ์—„๊ฒฉํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ฐ์‚ฌ ํ•ด์š”

์•ˆ๋…•ํ•˜์„ธ์š”, ์ œ๊ฐ€ ์ผ์„ ์‹œ์ž‘ํ–ˆ๋‹ค๊ณ  ๋งํ–ˆ๋“ฏ์ด ๋ฒŒ์จ 11์›”์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ˆœ์กฐ๋กญ๊ฒŒ ์ง„ํ–‰๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋น„๊ณต๊ฐœ ํ”„๋กœ์ ํŠธ์ด๋ฏ€๋กœ ๋ผ์ด์„ผ์Šค ํ‚ค๋ฅผ ์ฒญ๊ตฌํ•˜์—ฌ ์‚ฌ์šฉํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋ฌด๋ฃŒ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์ˆ˜์ž…์›์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ ‡๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ด€์‹ฌ์ด ์žˆ์œผ์‹œ๋ฉด ์ž‘์—…์— ๋Œ€ํ•œ ํ›„์† ์ €์žฅ์†Œ๋ฅผ ๋งŒ๋“ค๊ณ  ์—…๋ฐ์ดํŠธ๋ฅผ ์œ„ํ•ด ํŒ”๋กœ์šฐํ•˜์‹ญ์‹œ์˜ค. ํƒ€์ž„ ๋ผ์ธ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“ค๋ฉด ์—ฌ๋Ÿฌ๋ถ„์—๊ฒŒ ์•Œ๋ ค ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

๋งค์šฐ ํฅ๋ฏธ๋กœ์šด!
์•ˆ๋…•ํ•˜์„ธ์š”, ์•„์ง ์˜ˆ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๋ฆฌ๊ณ  iOS ์„น์…˜์„ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๊นŒ? Apple์€ ์ด ๋ถ„์•ผ์—์„œ ๋งค์šฐ ์—„๊ฒฉํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ฐ์‚ฌ ํ•ด์š”

ํ˜„์žฌ ์•ˆ๋“œ๋กœ์ด๋“œ ์ชฝ์—์„œ ์ž‘์—…ํ•˜๊ณ  ์žˆ์ง€๋งŒ ios ์ชฝ์€ ๋ฐ˜์‘ํ˜• js ์•ฑ์˜ ์ƒŒ๋“œ๋ฐ•์Šค ๋ฒ„์ „๊ณผ ์œ ์‚ฌํ•˜์ง€๋งŒ ํ”Œ๋žซํผ API์— ์•ก์„ธ์Šคํ•˜์ง€ ์•Š๊ณ  ์ƒŒ๋“œ๋ฐ•์Šค์—์„œ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋ฏ€๋กœ ios ์ชฝ์—์„œ ์ค€๋น„๋  ๋•Œ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” @eseidelGoogle
์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ํƒ€์ž„๋ผ์ธ?

์•ˆ๋…•ํ•˜์„ธ์š” @eseidelGoogle
์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? 12์›”์ž…๋‹ˆ๋‹ค 2019๋…„์— ์ถœ์‹œ๋˜๋Š” ๊ธฐ๋Šฅ์ธ๊ฐ€์š”?

์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด AMA ์ฃผ์ œ์— ์งˆ๋ฌธํ–ˆ์Šต๋‹ˆ๋‹ค. ์œ ์šฉํ•œ ์ •๋ณด๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
https://www.reddit.com/r/FlutterDev/comments/d51o4w/were_the_flutter_team_at_google_ask_us_anything/f0ium5w?utm_source=share&utm_medium=web2x

@Hixie Reddit์—์„œ ๊ท€ํ•˜์˜ ๊ธฐ์‚ฌ๋ฅผ ์ฝ์—ˆ์Šต๋‹ˆ๋‹ค.
https://www.reddit.com/r/FlutterDev/comments/d51o4w/were_the_flutter_team_at_google_ask_us_anything/f0ium5w/?utm_source=share&utm_medium=web2

Google Play์—์„œ ab "Android App Bundle"๋กœ ๊ฒŒ์‹œํ•˜๊ฑฐ๋‚˜ ๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ ์ „์šฉ์œผ๋กœ ๊ฒŒ์‹œํ•˜๋ฉด Flutter ์•ฑ ์—…๋ฐ์ดํŠธ์˜ ํฌ๊ธฐ๊ฐ€ ์ž‘์•„์ง€๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

์ด๋Š” ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๋นŒ๋“œ(์˜ˆ: ์›น ํฌํ„ธ์„ ํ†ตํ•ด ์Šคํ† ์–ด ์™ธ๋ถ€์— ๋ฐฐํฌ๋˜๋Š” ์•ฑ)์˜ ์ค‘์š”ํ•œ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

๋งค์šฐ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ์™œ ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ๊ณต์‹์ ์œผ๋กœ ๊ฐ€์งˆ ์ˆ˜ ์—†์Šต๋‹ˆ๊นŒ? ์ด ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์ง€ ๋ชปํ•˜๋„๋ก ๋ง‰๋Š” ๊ฒƒ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์ด๊ฒƒ์€ 2020 ๋กœ๋“œ๋งต์— ์žˆ์Šต๋‹ˆ๊นŒ?

์•„๋‹ˆ์š”

2020๋…„, ๊ทธ๋ฆฌ๊ณ  ์•„์ง ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋‹ค

์•„๋ž˜์— ๊ฒŒ์‹œํ•˜๊ธฐ ์ „์— ์ด๊ฒƒ์„ ์ฝ์œผ์‹ญ์‹œ์˜ค.

๋‹ค์Œ์€ ์ดํ•ด๋ฅผ ์œ„ํ•ด ์œ„๋กœ ์Šคํฌ๋กคํ•˜๊ณ  ์‹ถ์ง€ ์•Š์€ ๊ฒฝ์šฐ์— ๋Œ€ํ•œ ๊ฐ„๋žตํ•œ ์š”์•ฝ์ž…๋‹ˆ๋‹ค.

์ด ์˜๊ฒฌ์—์„œ ์ง€์ ํ–ˆ๋“ฏ์ด ์„ธ ๊ฐ€์ง€ ํฐ ๊ณผ์ œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๋ฐ€๋ฆฐ ๊ฒƒ
  • ์‚ฌ์šฉ์ž์—๊ฒŒ ์•ˆ์ „ํ•œ๊ฐ€์š”?
  • ๋ฐ€์–ด๋‚ด๋Š” ๊ณณ์—์„œ

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

Google์˜ ์ž์ฒด ํ”Œ๋ ˆ์ด ์Šคํ† ์–ด ๊ฐ€์ด๋“œ๋ผ์ธ๋„ ์ปดํŒŒ์ผ๋œ ์ฝ”๋“œ ๋‹ค์šด๋กœ๋“œ๋ฅผ ๊ธˆ์ง€ํ•ฉ๋‹ˆ๋‹ค. _์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ_๋ฅผ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์—†๋‹ค๊ณ  ๋ช…์‹œ๋˜์–ด ์žˆ์ง€๋งŒ "dex ํŒŒ์ผ ๋˜๋Š” ๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ"๋ผ๊ณ  ๋ช…์‹œ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์•ˆ์ „ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ˆœ์ˆ˜ dart ์†Œ์Šค๋„ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Flutter๋Š” ์ ์–ด๋„ ๋ฆด๋ฆฌ์Šค ๋ชจ๋“œ์—์„œ ์ปดํŒŒ์ผ ๋˜๋ฉฐ, ๋˜์ง€ ์•Š๋”๋ผ๋„ javascript๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ "JIT ์—†์Œ" ์š”๊ตฌ ์‚ฌํ•ญ์„ ์œ„๋ฐ˜ํ•˜๊ฑฐ๋‚˜ ๋งค์šฐ ๋Š๋ฆฌ์ง€ ์•Š๊ณ ๋Š” iOS์—์„œ ํ•ด์„๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

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

์ฝ”๋“œ ํ‘ธ์‹œ๋Š” ์ค‘ ์ž˜๋ชป ์›๋ž˜ ์‘์šฉ ํ—ˆ์šฉํ•˜๋Š” ํ™•์ธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ฑธ๋ ธ์„ ๊ฒƒ ์ž…๋‹ˆ๋‹ค.

๋‹น์‹ ์€ ์„ธ์ƒ์—์„œ ๊ฐ€์žฅ ์ข‹์€ ์˜๋„๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ญ์ƒ ๋‹น์‹ ์„ ๋ฐฑ์Šคํƒญํ•  ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ง€๊ธˆ์€ Android์—์„œ ํ”Œ๋ ˆ์ด ์Šคํ† ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐํฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ APK๋ฅผ ๊ฐ€์ ธ์™€ ์‚ฌ์šฉ์ž์—๊ฒŒ ์„ค์น˜ํ•˜๋ผ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๋‹ค์šด๋กœ๋”๋ฅผ ๋นŒ๋“œํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. iOS์—์„œ๋Š” ๋งŽ์€ ๊ณ ํ†ต ์—†์ด๋Š” ์‚ฌ์ด๋“œ๋กœ๋“œ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ํ•  ์ˆ˜ ์—†์œผ๋ฉฐ JB๋œ ์žฅ์น˜๋Š” ์•ฑ ์Šคํ† ์–ด์˜ ์ œํ•œ ์‚ฌํ•ญ์— ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด์ œ iOS๋‚˜ Android ์ด์™ธ์˜ ๋‹ค๋ฅธ ํ”Œ๋žซํผ์—์„œ๋„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ํ™•์‹ ํ•˜๋Š”! ๊ทธ๋Ÿฌ๋‚˜ ๋ฐ์Šคํฌํ†ฑ์€ ์•„์ง ๋ฒ ํƒ€ ๋ฒ„์ „์ด ์•„๋‹ˆ๋ฉฐ(๊ฒŒ๋‹ค๊ฐ€ ๋ฐ์Šคํฌํ†ฑ์—์„œ ์ง์ ‘ ์ž๋™ ์—…๋ฐ์ดํŠธ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ์Œ) ์›น์—์„œ๋Š” ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ ๊ณ ์น˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ง€๊ธˆ, ํŒ€์˜ ๋ชจ์Šต์„ ๋ณด๊ณ  ์‹ถ๋‹ค๋ฉด ์ฒซ ๋ฒˆ์งธ ํฌ์ŠคํŠธ๋กœ ์ด๋™ ํ•˜์—ฌ ๐Ÿ‘๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ์„ธ์š”.

๊ท€ํ•˜์˜ ์˜๊ฒฌ์ด ์•„๋ž˜ ๋ชฉ๋ก์— ํ•ด๋‹นํ•˜๋Š” ๊ฒฝ์šฐ ๊ฒŒ์‹œ ๋ฅผ ๋‹ค์‹œ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค.

  • ๋กœ๋“œ๋งต์— ์–ธ์ œ/์žˆ๋Š”์ง€ ๋ฌป๊ธฐ
  • "๊ทธ๊ฒƒ์€ ๊ฑฐ๊ธฐ์— ์—†๋‹ค"(๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์— ๋Œ€ํ•œ ์ด์ „ ์ฝ”๋ฉ˜ํŠธ์™€ ๊ฐ™์€ ๋ณ€ํ˜•)
  • "์ฝ”๋“œ ํ‘ธ์‹œ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋ ˆ์ž„์›Œํฌ X๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค."
  • "์ฝ”๋“œ ํ‘ธ์‹œ ๋•Œ๋ฌธ์— ํ”„๋ ˆ์ž„์›Œํฌ X๊ฐ€ ๋” ์ข‹์Šต๋‹ˆ๋‹ค"
  • "์ฝ”๋“œ ํ‘ธ์‹œ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค"
  • "์—…๋ฐ์ดํŠธ?"
  • ์ฝ”๋“œ ํ‘ธ์‹œ์— ๋Œ€ํ•œ ์ธ์ˆ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    • ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ/์‚ฌ์ด๋“œ๋กœ๋“œ ์•ฑ

    • ๊ธด๊ธ‰ ํŒจ์น˜

    • ๊ธฐ๋Šฅ ์ถ”๊ฐ€

  • ์ฝ”๋“œ ํ‘ธ์‹œ์— ๋Œ€ํ•œ ์ธ์ˆ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    • ์ด์ œ Play/์•ฑ ์Šคํ† ์–ด ๊ฒ€ํ†  ๊ธฐ๊ฐ„์ด ๋” ์งง์•„์กŒ์Šต๋‹ˆ๋‹ค.

    • ํ”Œ๋ ˆ์ด/์•ฑ ์Šคํ† ์–ด forbirds it

    • ๋‹น์‹ ์€ ๊ทธ๊ฒƒ์„ ํ•„์š”๋กœํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค

์ด ๋ฌธ์ œ๋Š” ์ด๋ฏธ ์ถฉ๋ถ„ํžˆ ์˜๊ฒฌ ์ถฉ์ „ ํ•œ, ๊ทธ๋ž˜์„œ ๋Œ€ํ™”์— ์•„๋ฌด๊ฒƒ๋„ ์ถ”๊ฐ€ํ•˜์ง€ ์ฃผ์„์„ ์ถ”๊ฐ€ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ํŒ€์—์„œ ํ•  ๋ง์ด ์žˆ์œผ๋ฉด ์—ฌ๊ธฐ์— ๊ฒŒ์‹œํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๊ฒŒ์‹œ๋ฌผ์—๋Š” ํ˜„์žฌ ๊ฑฐ์˜ 100๋ช…์˜ ์ฐธ๊ฐ€์ž๊ฐ€ ์žˆ๊ณ  500๊ฐœ๊ฐ€ ๋„˜๋Š” ์—„์ง€์†๊ฐ€๋ฝ์ด ์žˆ์œผ๋ฏ€๋กœ ๋ฌด์‹œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์†”์งํžˆ ๋งํ•ด์„œ ๋‚˜๋Š” ์ด๊ฒƒ์ด ๋‹น์‹ ์˜ ๊ด€์‹ฌ์‚ฌ๊ฐ€ ๋˜์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” ์ž์‹ ์˜ ์ฑ…์ž„ํ•˜์— ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. Apple์ด ๊ฐ‘์ž๊ธฐ ์ฝ”๋“œ ํ‘ธ์‹œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ์•ฑ์„ ๊ธˆ์ง€ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•˜๋ฉด ์•ฑ์€ ๋‹ค๋ฅธ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ JavaScript์—์„œ๋Š” ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ช‡ ๋…„ ๋™์•ˆ ๊ทธ๋Ÿฐ ์ผ์ด ์ผ์–ด๋‚˜์ง€ ์•Š์•˜๋Š”๋ฐ, ์™œ Flutter์— ์ด๋Ÿฐ ์ผ์ด ์ผ์–ด๋‚˜์•ผ ํ•ฉ๋‹ˆ๊นŒ? ํ™•์ธ์กฐ์ฐจ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์€ ์ด ๊ธฐ๋Šฅ์ด ์œ ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด ๊ธฐ๋Šฅ์„ ์š”๊ตฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ž‘์€ ๋ชจ๋“ˆ์„ ์ž‘์„ฑํ•˜๊ณ  ๋™์ ์œผ๋กœ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒŒ์ž„ ์ฒด์ธ์ €์ž…๋‹ˆ๋‹ค. ๋ชจ๋“ˆ์˜ ๋ฒ„๊ทธ๋ฅผ ์ฆ‰์„์—์„œ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ Apple์€ ์•ฑ์ด ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—…์„ ์‹ค์ œ๋กœ ํ™•์ธํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ๋ฆฌ์†Œ์Šค๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‹น์‹ ์ด ๊ทธ๊ฒƒ์„ ๊นจ๋‹ซ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ ์š”์ ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? REST ํ˜ธ์ถœ์˜ ๊ฒฐ๊ณผ๋กœ ํŠน์ • JSON์„ ์ œ๊ณตํ•  ๋•Œ ํŠธ๋ฆฌ๊ฑฐ๋˜๋Š” ๋ชจํ˜ธํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋ฐฑ๋„์–ด๋ฅผ ์‚ฝ์ž…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Apple์€ ์ด๋ฅผ ์–ด๋–ป๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๊ฒƒ์€ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ๋ง‰๊ธฐ ์œ„ํ•ด Apple์ด๋‚˜ Android๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ์ผ์€ ์—†์Šต๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์€ ์ด ๊ธฐ๋Šฅ์„ ํ•„์š”๋กœ ํ•˜๋ฉฐ ์ด๋ฅผ ๊ตฌํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์œผ๋กœ ์šฐ๋ฆฌ๊ฐ€ ํ•˜๋Š” ์ผ์€ ๋‹น์‹ ์˜ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์šฐ๋ฆฌ์˜ ์ผ์ž…๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์—๋Š” 500๋ช…์ด ๋„˜๋Š” ์ถ”์ฒœ๊ณผ 100๋ช…์ด ๋„˜๋Š” ์ฐธ๊ฐ€์ž๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ปค๋ฎค๋‹ˆํ‹ฐ ์š”์ฒญ์— ๋”ฐ๋ผ ๊ตฌํ˜„ํ•ด์•ผ ํ•  ๋•Œ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@dedalozzo ์•„์ฃผ ์‹ ์„ ํ•œ ์ฃผ์žฅ์ž…๋‹ˆ๋‹ค!

์ €๋Š” flutter ํŒ€์˜ ์ผ์›์ด ์•„๋‹ˆ๋ฏ€๋กœ ๊ตฌํ˜„์„ ์š”์ฒญํ•˜๊ธฐ ์œ„ํ•ด ์ €๋ฅผ ๋Œ€์ƒ์œผ๋กœ ์‚ผ์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  Apple๊ณผ Google์ด ์ด๋ฅผ ๊ฐ์ง€ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฆฌ์†Œ์Šค๊ฐ€ ์—†๋Š” ๊ฒƒ์€ ์‚ฌ์‹ค์ž…๋‹ˆ๋‹ค(Play Protect ํŒ€์ด ํ•ญ์ƒ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์œผ๋ฉฐ ์œ„ํ—˜ํ•œ ํ–‰๋™์„ ์ž๋™์œผ๋กœ ๊ฐ์ง€ํ•  ์ˆ˜ ์žˆ์Œ ). ๊ทธ๋Ÿฌ๋‚˜ "๋’ค์—์„œ" ๊ตฌํ˜„ํ•˜๋ฉด ์ด์ œ Apple์— ์‹ค์ œ ์ด์œ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. Flutter์—๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ช…์‹œ์ ์œผ๋กœ ์ •์ฑ…์— ์œ„๋ฐฐ๋˜๋Š” ๋„๊ตฌ๊ฐ€ _ํฌํ•จ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ „๋ฉด ๊ธˆ์ง€๋ฅผ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

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

๊ทธ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์‹ค์ˆ˜๋กœ Play ์Šคํ† ์–ด ์ •์ฑ…์„ ์œ„๋ฐ˜ํ•˜๊ฑฐ๋‚˜ Play ์Šคํ† ์–ด ์ •์ฑ…์„ ์œ„๋ฐ˜ํ•œ ์‚ฌ๋žŒ๊ณผ ๊ด€๋ จ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ณ„์ •์ด ์ฐจ๋‹จ๋˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๋ฏ€๋กœ ๋ถˆ์žฅ๋‚œ์ด ๋˜์–ด ์‚ฌ์šฉ์ž๊ฐ€ _๋”์šฑ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์ค„์–ด๋“ญ๋‹ˆ๋‹ค.

๋˜ํ•œ ์œ„์—์„œ ์„ค๋ช…ํ•œ ๋Œ€๋กœ Play ์Šคํ† ์–ด ์™ธ๋ถ€์— ๋ฐฐํฌํ•˜๋ฉด ์—…๋ฐ์ดํŠธ๋œ APK๋ฅผ ํ‘ธ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‹น์‹ ์ด Flutter ํŒ€ ์ค‘ ํ•œ ๋ช…์ธ ์ค„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰ ๋Œ“๊ธ€์— ๋ง์”€ํ•˜์‹  ๋‚ด์šฉ์ด ๋งž์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค, ์ฝ”๋“œ ํ‘ธ์‹œ๋Š” ๊ฒฝ๊ณ„์„ ์— ์žˆ๊ณ  ๊ทœ์น™์— ์–ด๊ธ‹๋‚˜๋”๋ผ๋„ Apple๊ณผ Google์—์„œ ์šฉ์ธ๋˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

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

๋งŽ์€ ์ž‘์—…์ด ์ง„ํ–‰ ์ค‘์ด์ง€๋งŒ ์ฝ”๋“œ ํ‘ธ์‹œ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. https://github.com/chgibb/hydro-sdk

@chgibb ์ž ๊น๋งŒ... ์ฝ”๋“œ ํ‘ธ์‹œ๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜์ง€๋งŒ ์ „์ฒด๋ฅผ Dart์—์„œ Typescript๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๊นŒ?

์ด ๋‘ ๊ฐ€์ง€๋ฅผ ๋ถ„๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ? ํ‰์†Œ์ฒ˜๋Ÿผ Dart๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋™์•ˆ codepush๋ฅผ ๋ฐ›์œผ๋ ค๋ฉด?

@SpajicM ์€ Dart๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋งŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€์‹  Apple์ด ์†Œ์œ ํ•œ JavascriptCore์™€ ๊ฐ™์€ JS ์—”์ง„์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์ฝ”๋“œ ํ‘ธ์‹œ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ๋•Œ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ๋ณด์ด๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์Šคํฌ๋ž˜์น˜, ๊ทธ๊ฒƒ์€ ๋ชจ๋“  ํ˜•ํƒœ๋‚˜ ํ˜•ํƒœ์—์„œ ์Šคํ† ์–ด ์ •์ฑ… ์—

@miyoyo ๊ทธ๊ฒŒ ์™œ ๋งค์žฅ ์ •์ฑ…์—
@SpajicM ์ˆœ์ „ํžˆ ๋ถ€๊ฐ€์ ์ž…๋‹ˆ๋‹ค. Typescript ์กฐ๊ฐ์€ ๋” ํฐ Dart ์•ฑ์— ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹จ์ผ ํ…์ŠคํŠธ ๋˜๋Š” ์ „์ฒด ํ™”๋ฉด๋งŒํผ ์ž‘์Šต๋‹ˆ๋‹ค.

.hc ํŒŒ์ผ์ด ์ปดํŒŒ์ผ๋œ lua ๋ฐ”์ดํŠธ์ฝ”๋“œ(ํ™•์žฅ์ž๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ ํ™•์ธ๋˜์ง€ ์•Š์Œ)์ธ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ๋ชจ๋“  ์ข…๋ฅ˜์˜ ์ปดํŒŒ์ผ๋œ ์ฝ”๋“œ๋ฅผ ํ‘ธ์‹œํ•˜๋Š” ๊ฒƒ์€ ์ƒ์  ์ •์ฑ…์— ์˜ํ•ด ๊ธˆ์ง€๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

_compiled_ ์ฝ”๋“œ๋ฅผ ์•ฑ์— ํ‘ธ์‹œํ•˜๋Š” ๊ตฌ์ฒด์ ์ธ ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” Play ์Šคํ† ์–ด ์ •์ฑ…์— ๋ช…์‹œ์ ์œผ๋กœ ๋ฐ˜๋Œ€ ๋˜๋ฉฐ, CodePush์—์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ _ํ•  ์ˆ˜ ์žˆ๋Š”_ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋Š” "์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ์ œ๊ณต๋˜์ง€ ์•Š์Œ" ์š”์†Œ๋Š” ์ ์šฉ๋˜์ง€ ์•Š์•„ Apple ์ง€์นจ์„ ์œ„๋ฐ˜ ํ•ฉ๋‹ˆ๋‹ค.

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

๊ฒŒ์ž„ ๋‚ด ์—…๋ฐ์ดํŠธ๊ฐ€ ํฌํ•จ๋œ ์ด ๋ชจ๋“  ๋ชจ๋ฐ”์ผ ๊ฒŒ์ž„์€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๊นŒ? ์ž์‚ฐ๋งŒ ํ‘ธ์‹œ/๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๊นŒ?

๊ตฌ๊ธ€ ํ”Œ๋ ˆ์ด์˜ ploicy์—์„œ @miyoyo; https://play.google.com/about/privacy-security-deception/malicious-behavior/
...This restriction does not apply to code that runs in a virtual machine and has limited access to Android APIs...
Hydro-SDK์˜ .hc ํŒŒ์ผ์€ ํ™•์žฅ์ž๋‚˜ ํŠน์ˆ˜ ๊ธฐ๋Šฅ์ด ์—†๋Š” ์ˆœ์ˆ˜ํ•œ Lua 5.2 ๋ฐ”์ดํŠธ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. ์ž์ฒด ๋Œ์—ฐ๋ณ€์ด ๋˜๋Š” ์ฝ”๋“œ ์ƒ์„ฑ ๊ธฐ๋Šฅ์ด ์—†๋Š” ์ธํ„ฐํ”„๋ฆฌํ„ฐ์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. dart:io ์–ด๋–ค ๊ฒƒ๋„ ๊ทธ๋“ค์—๊ฒŒ ๋…ธ์ถœ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์˜ˆ๋ฅผ ๋“ค์–ด ์ž„๋ฒ ๋”๊ฐ€ dart:io ์˜ File ํด๋ž˜์Šค๋ฅผ ๋…ธ์ถœํ•˜๊ฑฐ๋‚˜ PlatformChannel ๋ฅผ ๋…ธ์ถœํ•˜๋Š” ๊ฒƒ์„ ๋ง‰์„ ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.

Apples ์„น์…˜ 2.5.2๋Š” "์‹คํ–‰"์ด๋ผ๋Š” ๋‹จ์–ด์˜ ์˜๋ฏธ ๋ฐ ๊ธฐ๋Šฅ ๋ณ€๊ฒฝ๊ณผ ๊ด€๋ จํ•˜์—ฌ ์กฐ๊ธˆ ๋” ๋ชจํ˜ธํ•ฉ๋‹ˆ๋‹ค.

https://developer.apple.com/app-store/review/guidelines/#2.5.2

...
2.5.2 Apps should be self-contained in their bundles, and may not read or write data outside the designated container area, nor may they download, install, or execute code which introduces or changes features or functionality of the app, 
...

@chgibb ์ข‹์Šต๋‹ˆ๋‹ค. Android์—์„œ๋Š” ํ†ต๊ณผํ•  ์ˆ˜ ์žˆ์ง€๋งŒ App Store์—์„œ๋Š” ์—ฌ์ „ํžˆ ๊ฑฐ๋ถ€๋  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋ฉ๋‹ˆ๋‹ค. (์ตœ๊ณ  ์„ฑ๋Šฅ์˜ ๊ฐ์†Œ๋ฅผ ๋งํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ ์•„๋งˆ๋„ ๊ณ ๊ธ‰ํ˜• ์ „ํ™”๊ธฐ์˜ ์„ธ๋ถ€ ์‚ฌํ•ญ ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค)

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

๊ณ ๊ฐ๊ณผ์˜ ๋Œ€ํ™”: ์ด๊ฒƒ์ด ๋” ์ด์ƒ ๊ณ ๊ฐ์—๊ฒŒ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ์•„๋‹ˆ๋ผ๋Š” ํ—ค๋“œ๋ผ์ธ์ž…๋‹ˆ๋‹ค.

ํ…์ŠคํŠธ/๋ฒˆ์—ญ์˜ ๋ฌด์„  ์—…๋ฐ์ดํŠธ๋ฅผ ์œ„ํ•ด Localizely๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: https://localizely.com/flutter-over-the-air

ํ”Œ๋Ÿฌํ„ฐ๋ฅผ ์œ„ํ•ด ์ด ๊ธฐ๋Šฅ์„ ๊ตฌ์ถ•ํ•˜๊ฑฐ๋‚˜ ๊ตฌ์ถ• ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค์ฃผ์„ธ์š”. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค .

์—ฌ๋Ÿฌ๋ถ„ _์ œ๋ฐœ_, ์„ธ ๋ฒˆ์งธ๋กœ ๊ฒŒ์‹œ๋˜์ง€๋งŒ ์‹ค์ œ๋กœ ์ถ”๊ฐ€ํ•  ๋‚ด์šฉ์ด ์—†์œผ๋ฉด _๋Œ“๊ธ€์„ ๋ณด๋‚ด์ง€ ๋งˆ์‹ญ์‹œ์˜ค_ .

์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ด ๊ฒŒ์‹œ๋ฌผ์„ ์ฐธ์กฐ ํ•˜๊ณ  ์ฒซ ๋ฒˆ์งธ ๊ฒŒ์‹œ๋ฌผ์— ์—„์ง€์†๊ฐ€๋ฝ์„ ์˜ฌ๋ ค์ฃผ์„ธ์š”.

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

ํ•œํŽธ ์ฝ”๋“œ ํ‘ธ์‹œ์— ๋Œ€ํ•œ ๋Œ€์•ˆ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

ํ•œํŽธ ์ฝ”๋“œ ํ‘ธ์‹œ์— ๋Œ€ํ•œ ๋Œ€์•ˆ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋‚ด ๊ฒฝํ—˜์— ๋”ฐ๋ฅด๋ฉด ๋Œ€์•ˆ์ด ์—†์Šต๋‹ˆ๋‹ค.

@samerdernaika @mfenej ์•„์ง ํ”„๋กœ๋•์…˜ ์ค€๋น„๊ฐ€ ๋˜์ง€ ์•Š์•˜์ง€๋งŒ ์ด ํ”„๋กœ์ ํŠธ๋Š” ์ฝ”๋“œ ํ‘ธ์‹œ๋ฅผ ๋ช…์‹œ์ ์ธ ๋ชฉํ‘œ๋กœ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. https://github.com/chgibb/hydro-sdk

@๋ฏธ์š”์š”

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

๊ทธ๊ฑด ์‚ฌ์‹ค์ด ์•„๋‹ˆ๋‹ค. ๋‹ค์‹œ ํ•œ ๋ฒˆ ํ™•์ธํ•˜๊ณ  ์ž˜๋ชป๋œ ์ •๋ณด๋ฅผ ํผ๋œจ๋ฆฌ์ง€ ๋งˆ์‹ญ์‹œ์˜ค!

Apple ๊ฐœ๋ฐœ์ž ๋ผ์ด์„ ์Šค ๊ณ„์•ฝ์˜ ์„น์…˜ 3.3.2์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ช…์‹œ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

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

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ฃผ์š” ๋ชฉ์ ์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๋Š” ํ•œ JS์™€ ๊ฐ™์€ ํ•ด์„๋œ ์ฝ”๋“œ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งค์šฐ ๊ตฌ์ฒด์ ์œผ๋กœ

codepush ๋ฐ ์ƒ์  ์ง€์นจ ์ค€์ˆ˜์— ๋Œ€ํ•œ AppCenter ์„น์…˜์„ ์‚ดํŽด๋ณด์‹ญ์‹œ์˜ค. AppCenter codepush(Microsoft ์ง€์›)๋Š” ์Šคํ† ์–ด ๊ทœ์ • ์ค€์ˆ˜ ๋ฌธ์ œ๊ฐ€ ์—†๋Š” ๋งŽ์€ ์•ฑ์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. https://github.com/microsoft/react-native-code-push#store -guideline-compliance

๋‚ด๊ฐ€ ๋ณด๊ธฐ์— codepush์˜ ๊ฐ€์žฅ ํฐ ๋ฐฉํ•ด ์š”์†Œ๋Š” ๋ฏธ๋ฆฌ ์ปดํŒŒ์ผ๋˜๋Š” ๋Œ€์‹  iOS์—์„œ compile-to-js๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ iOS์—์„œ ํ•ด์„๋œ Dart๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ๊ฐ•์š”๋ฐ›๋Š” ์„ฑ๋Šฅ ์ ˆ์ถฉ์˜ ๊ฐ€์น˜๊ฐ€ ์—†์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Flutter๊ฐ€ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋ชฉํ‘œ๋กœ ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— compile-to-js perf๊ฐ€ ์ถฉ๋ถ„ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ Flutter ํŒ€์—๊ฒŒ ํ—ˆ์šฉ ๊ฐ€๋Šฅํ•œ ์„ฑ๋Šฅ ์ ˆ์ถฉ์•ˆ์€ ์•„๋‹ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•„๋งˆ๋„ AppCenter for React Native์™€ ๊ฐ™์€ ํƒ€์‚ฌ ์†”๋ฃจ์…˜์ด ์ด ๊ฒฉ์ฐจ๋ฅผ ๋ฉ”์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. CodePush๋Š” ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค!

ํ , ๋น ๋ฅธ Google ๊ฒ€์ƒ‰์€ Apple์ด ์ฝ”๋“œ ํ‘ธ์‹œ ๊ธฐ๋Šฅ์ด ํฌํ•จ๋œ ์•ฑ์„ ๊ฑฐ๋ถ€ํ•˜๋Š” ๋งŽ์€ ์˜ˆ๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

https://github.com/microsoft/react-native-code-push/issues/1297

์ด์ œ App Store ๊ฒ€ํ†  ์‹œ๊ฐ„์ด ๊ฑฐ์˜ ํ•ญ์ƒ ๋ฉฐ์น ์ด ์•„๋‹Œ ๋ช‡ ์‹œ๊ฐ„์œผ๋กœ ์ธก์ •๋œ๋‹ค๋Š” ์ ์„ ๊ฐ์•ˆํ•  ๋•Œ ์™œ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์œ„ํ—˜์„ ๊ฐ์ˆ˜ํ•˜๋Š”์ง€ ์ดํ•ด๊ฐ€ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ ํ‘ธ์‹œ๊ฐ€ Flutter ์—”์ง„์— ํ†ตํ•ฉ๋˜๋ฉด Apple์€ ๋ชจ๋“  Flutter ์•ฑ์„ ๊ธˆ์ง€ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@matthewlloyd ๊ฒ€ํ†  ์‹œ๊ฐ„์ด ๋‹จ์ถ•

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

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

๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ 24์‹œ๊ฐ„ ๋ฏธ๋งŒ์ด๋ฉด ๊ฑฐ์˜ ๋ชจ๋“  ์‚ฌ๋žŒ์—๊ฒŒ ์ถฉ๋ถ„ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ธด๊ธ‰ํ•œ ๋ฒ„๊ทธ ์ˆ˜์ •๊ณผ ๊ฐ™์ด Apple์˜ ๊ฒ€ํ†  ํ”„๋กœ์„ธ์Šค๋ฅผ ํ†ตํ•ด ๋” ๋นจ๋ฆฌ ์—…๋ฐ์ดํŠธ๋ฅผ ๋ฐ›์•„์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์‹ ์† ๊ฒ€ํ† ๋ฅผ ์š”์ฒญํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•œ ๋ฒˆ ํ•ด๋ณธ ์ ์ด ์žˆ๋Š”๋ฐ, ์‹ ์ฒญํ•œ ์ง€ 10๋ถ„ ๋งŒ์— ์•ฑ ๋ฆฌ๋ทฐ๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ฐฐ์†ก ๊ณต๊ธ‰๋ง์˜ ์†Œ์œ ๊ถŒ์„ ๊ฐ–๋Š” ๊ฒƒ์€ ์ž์‹ ์˜ ์œ„ํ—˜์„ ๋ฌด๋ฆ…์“ฐ๊ณ  ํ•˜๋Š” ์ผ์ž…๋‹ˆ๋‹ค...

Apple์˜ App Store ์ง€์นจ, ์„น์…˜ 2.5.2(https://developer.apple.com/app-store/review/guidelines/#software-requirements):

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

Apple์˜ ๊ฐœ๋ฐœ์ž ํ”„๋กœ๊ทธ๋žจ ์š”๊ตฌ ์‚ฌํ•ญ, ์„น์…˜ 3.3.2:

3.3.2 ๋‹ค์Œ ๋‹จ๋ฝ์— ๋ช…์‹œ๋œ ๊ฒฝ์šฐ๋ฅผ ์ œ์™ธํ•˜๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์‹คํ–‰ ์ฝ”๋“œ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ฑฐ๋‚˜ ์„ค์น˜ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

@AndrewMorsillo ๊ฐ ๊ฐ€์ด๋“œ๋ผ์ธ์— ๋ฌด์—‡์ด ์žˆ๋“ , ๊ทธ๋ฆฌ๊ณ  ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ์ •๋ณด๊ฐ€ ์ œ์‹œ๋˜๋“ , ์šฐ๋ฆฌ๊ฐ€ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ตœ์„ ์€ "๊ธˆ์ง€๋  ์ˆ˜ ์žˆ๋Š” ๋ฒ”์ฃ„๊ฐ€ ์•„๋‹Œ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์šฐ๋ฆฌ๊ฐ€ ํ™•์‹ ํ•  ์ˆ˜ ์—†์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค"์ž…๋‹ˆ๋‹ค. .

๊ฒฝ์šฐ๊ฐ€ ๋ฌด์—‡์ด๋“  Flutter๋Š” ํ˜„์žฌ iOS์—์„œ ํ•ด์„๋œ ๋‹คํŠธ๋ฅผ ์‹คํ–‰ํ•˜์ง€ ์•Š์œผ๋ฉฐ, ์ถ”๊ฐ€ํ•˜๋ฉด ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ท€ํ•˜๊ฐ€ ์ง์ ‘ ์–ธ๊ธ‰ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ๋‚ด ์ด์ „ ๊ฒŒ์‹œ๋ฌผ๊ณผ ๋งค์šฐ ํšŒ์ƒ‰ ์˜์—ญ์ด๋ฉฐ ์ตœ์•…์˜ ๊ฒฝ์šฐ ๊ธˆ์ง€๋ฉ๋‹ˆ๋‹ค.

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

๊ฒ€ํ†  ํ”„๋กœ์„ธ์Šค๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ž๋™ ์—…๋ฐ์ดํŠธ๋ฅผ ๊ป์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด์ „ ๋ฒ„์ „์˜ ์•ฑ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ๊ฒƒ์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

๋ฌผ๋ก  ์ตœ์†Œ ๋ฒ„์ „ ํ™•์ธ์„ ์ง์ ‘ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋‹ค์‹œ Play ์Šคํ† ์–ด๋ฅผ ๊ฑฐ์ณ์•ผ ํ•˜๊ณ  ์‚ฌ๋žŒ๋“ค์€ ๋ถˆํ–‰ํžˆ๋„ ๊ฒŒ์œผ๋ฆ…๋‹ˆ๋‹ค. ์ฝ”๋“œ ํ‘ธ์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์‹คํ–‰ํ•  ๋•Œ๋งˆ๋‹ค ์•ฑ์„ ๋น ๋ฅด๊ฒŒ ์—…๋ฐ์ดํŠธํ•˜๊ณ (ํฌ๋ง) ์‚ฌ์šฉ์ž๊ฐ€ ๋” ์›ํ™œํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@miyoyo ์—ฌ๊ธฐ ๋‚˜์˜ค๋Š” ๋ชจ๋“  ์˜๊ฒฌ์ด๋‚˜ ์•„์ด๋””์–ด์— ์‘๋‹ตํ•ด์•ผ ํ•  ํ•„์š”์„ฑ์„ ๋Š๋ผ๋Š” ์ด์œ ๋ฅผ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์€ ์ด๊ฒƒ์„ ์›ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„์€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์ด ๋ฌธ์ œ์— ์ฐฌ์„ฑ ํˆฌํ‘œ๋ฅผ ํ•˜๋ผ๊ณ  ํ–ˆ๊ณ  ์šฐ๋ฆฌ๋Š” ๋๊นŒ์ง€ ์ฐฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€ ์ ๊ทน์ ์œผ๋กœ ๊ณ ๋ฏผํ•˜๊ณ  ๋ฐ€์–ด๋ถ™์ด์ง€ ์•Š๋Š” ํ•œ ์ ˆ๋Œ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŽ์€ ์•ฑ์ด ๊ทธ๋ ‡๊ฒŒ ํ•˜๋Š” ๊ฒƒ์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์™ธ์ถœ ์‹œ ์•ฑ
๋‚ ์งœ๊ฐ€ ํ‘œ์‹œ๋˜๋ฉด ๋ฉ”์‹œ์ง€๋ฅผ ํ‘œ์‹œํ•˜๊ณ  ๋‹ซ๊ฑฐ๋‚˜ ์•ฑ์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ๋ชจ๋“ .

2020๋…„ 8์›” 7์ผ ๊ธˆ์š”์ผ 07:38 SpajicM [email protected]์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

๊ฒ€ํ†  ํ”„๋กœ์„ธ์Šค๋ฟ๋งŒ ์•„๋‹ˆ๋ผ
์•ฑ์ด ๊บผ์ ธ ์žˆ์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด์ „ ๋ฒ„์ „์˜ ์•ฑ์—์„œ ๋ฉˆ์ท„์Šต๋‹ˆ๋‹ค.
์ž๋™ ์—…๋ฐ์ดํŠธ.

๋ฌผ๋ก  ์ตœ์†Œ ๋ฒ„์ „ ํ™•์ธ์„ ์ง์ ‘ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ
๋‹ค์‹œ Play ์Šคํ† ์–ด๋ฅผ ๊ฑฐ์ณ์•ผ ํ•˜๊ณ  ์‚ฌ๋žŒ๋“ค์€ ๋ถˆํ–‰ํžˆ๋„ ๊ฒŒ์œผ๋ฆ…๋‹ˆ๋‹ค. ์™€ ํ•จ๊ป˜
์ฝ”๋“œ ํ‘ธ์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์‹คํ–‰ํ•  ๋•Œ๋งˆ๋‹ค ์•ฑ์„ ๋น ๋ฅด๊ฒŒ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ(ํฌ๋ง)
๋” ์›ํ™œํ•˜๊ฒŒ ์‚ฌ์šฉ์ž๋ฅผ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.

@miyoyo https://github.com/miyoyo ์™œ ๊ธฐ๋ถ„์ด ์ข‹์€์ง€ ๋ชจ๋ฅด๊ฒ ์–ด
์—ฌ๊ธฐ์— ์ œ์‹œ๋œ ๋ชจ๋“  ์˜๊ฒฌ์ด๋‚˜ ์•„์ด๋””์–ด์— ์‘๋‹ตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์‚ฌ๋žŒ๋“ค์€ ์ด๊ฒƒ์„ ์›ํ•ฉ๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์ด ๋ฌธ์ œ์— ์ฐฌ์„ฑํ‘œ๋ฅผ ๋˜์กŒ๊ณ  ์šฐ๋ฆฌ๋Š” ์ฐฌ์„ฑํ‘œ๋ฅผ ๋˜์กŒ์Šต๋‹ˆ๋‹ค.
๋ชจ๋“  ๋ฐฉ๋ฒ•์„ ์ •์ƒ์—. ์ด๊ฒƒ์€ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์•„๋‹ˆ๋ฉด ์ ˆ๋Œ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค
์ ๊ทน์ ์œผ๋กœ ์ƒ๊ฐํ•˜๊ณ  ๋ฐ€์–ด๋ถ™์ธ๋‹ค.

โ€”
์ด ์Šค๋ ˆ๋“œ์— ๊ฐ€์ž…ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/flutter/flutter/issues/14330#issuecomment-670242698 ,
๋˜๋Š” ๊ตฌ๋… ์ทจ์†Œ
https://github.com/notifications/unsubscribe-auth/ADS5AJFUU2V6MHQIP7AMZKLR7M5HPANCNFSM4EOFIZRA
.

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŽ์€ ์•ฑ์ด ๊ทธ๋ ‡๊ฒŒ ํ•˜๋Š” ๊ฒƒ์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์˜ค๋ž˜๋œ ์•ฑ์ธ ๊ฒฝ์šฐ ๋ฉ”์‹œ์ง€๋ฅผ ํ‘œ์‹œํ•˜๊ณ  ์•ฑ์„ ๋‹ซ๊ฑฐ๋‚˜ ์•ฑ์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ๋ชจ๋“ .

์•„๋งˆ๋„ ์ตœ์•…์˜ UX ๋ฐฉ์‹์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค... :/

@SpajicM

๊ฒ€ํ†  ํ”„๋กœ์„ธ์Šค๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ž๋™ ์—…๋ฐ์ดํŠธ๋ฅผ ๊ป์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด์ „ ๋ฒ„์ „์˜ ์•ฑ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ๊ฒƒ์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

๋ฌผ๋ก  ์ตœ์†Œ ๋ฒ„์ „ ํ™•์ธ์„ ์ง์ ‘ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋‹ค์‹œ Play ์Šคํ† ์–ด๋ฅผ ๊ฑฐ์ณ์•ผ ํ•˜๊ณ  ์‚ฌ๋žŒ๋“ค์€ ๋ถˆํ–‰ํžˆ๋„ ๊ฒŒ์œผ๋ฆ…๋‹ˆ๋‹ค. ์ฝ”๋“œ ํ‘ธ์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์‹คํ–‰ํ•  ๋•Œ๋งˆ๋‹ค ์•ฑ์„ ๋น ๋ฅด๊ฒŒ ์—…๋ฐ์ดํŠธํ•˜๊ณ (ํฌ๋ง) ์‚ฌ์šฉ์ž๊ฐ€ ๋” ์›ํ™œํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

UX ์ธก๋ฉด์—์„œ ์ด๊ฒƒ์€ ์—…๋ฐ์ดํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” _๋‚˜์œ_ ๋ฐฉ๋ฒ•์ด ์•„๋‹™๋‹ˆ๊นŒ? ๋ˆ„๊ตฐ๊ฐ€ ์ˆ˜๋™์œผ๋กœ ์ž๋™ ์—…๋ฐ์ดํŠธ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ฉด Flutter๊ฐ€ ์ด๋ฅผ ์žฌ์ •์˜ํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์–ด๋–ค ์•ฑ์ด ๊ทธ๋Ÿฐ ๋Šฅ๋ ฅ์„ ๊ฐ€์ ธ์•ผ ํ•˜๋Š”์ง€๋Š” ๋…ผ์Ÿ์˜ ์—ฌ์ง€๊ฐ€ ์žˆ์ง€๋งŒ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ํ™•์‹คํžˆ ์•„๋‹™๋‹ˆ๋‹ค.

์•ฑ ์Šคํ† ์–ด๋ฅผ ํ†ตํ•ด ์—…๋ฐ์ดํŠธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ค‘์•™ ์ง‘์ค‘ํ™”ํ•˜๋Š” ๊ฒƒ์ด ์Šคํ† ์–ด๋ฅผ ํ†ตํ•ด ๋ชจ๋“  ์—…๋ฐ์ดํŠธ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— UX์— ๋” ๋‚ซ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž ์‹œ๊ฐ„์„ ํฌ์ƒํ•˜๋Š” UX๋Š” ์ผ์ข…์˜ ์•ฑ ๊ฐœ๋ฐœ์˜ ์š”์ง€์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ฆ‰๊ฐ์ ์ธ ์ˆ˜์ •์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ(์˜ˆ: ์ทจ์•ฝ์„ฑ) ๊ธด๊ธ‰ ์—…๋ฐ์ดํŠธ๋ฅผ ๋ฐ›๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธ๋  ๋•Œ๊นŒ์ง€ ์‚ฌ์šฉ์ž๊ฐ€ ์•ฑ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ฑฐ๋ถ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ํ›„์ž๋Š” ์ข‹์€ ์˜ต์…˜์ด ์•„๋‹ˆ๋ฉฐ ์ „์ž๋Š” ์„ฑ๊ฐ€์‹  ์ผ์ด์ง€๋งŒ Apple๊ณผ Google์ด ์‚ฌ์šฉ์ž๋ฅผ ์ตœ์šฐ์„ ์œผ๋กœ ์ƒ๊ฐํ•˜๊ณ  Flutter ์ž์ฒด์™€๋Š” ๊ฑฐ์˜ ๊ด€๋ จ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

@chgibb

๊ฐœ์ธ์ ์œผ๋กœ ๋งํ•˜์ž๋ฉด, ์ฝ”๋“œ ํ‘ธ์‹œ์— ๋Œ€ํ•œ ๋‚˜์˜ ์—ด์ •์€ ์—…๋ฐ์ดํŠธ ์ œ๊ณต ๊ณต๊ธ‰๋ง์— ๋Œ€ํ•œ ์†Œ์œ ๊ถŒ์„ ์žˆ๋Š” ๊ทธ๋Œ€๋กœ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์ด ์Šค๋ ˆ๋“œ์˜ ์ผ์ข…์˜ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. Apple๊ณผ Google์ด ๊ฐ•๋ ฅํ•˜๊ฒŒ ๊ฒฝ๊ณ ํ•˜๋Š” ๊ฒƒ์„ ํ•˜๋ ค๊ณ  ํ•˜๋Š” ๊ฒƒ์€ ๊ทธ๋“ค์˜ ์•ฑ ์Šคํ† ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ์ข‹์€ ์ƒ๊ฐ์ด ์•„๋‹™๋‹ˆ๋‹ค. @miyoyo๊ฐ€ ๋งํ–ˆ๋“ฏ์ด

Flutter๋Š” ์—ฌ์ „ํžˆ ์ฝ”๋“œ๋ฅผ ํ•ซ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์—†์ง€๋งŒ ์‹ค์ œ๋กœ ํ•ด๋‹น ๋งํฌ๋Š” ์ด๋ฏธ์ง€์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ–ˆ๊ณ  Firebase ์›๊ฒฉ ๊ตฌ์„ฑ์ด ์ค‘์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์ƒ๊ธฐ์‹œ์ผœ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹จ์ ์€ ๋ณ€๊ฒฝํ•ด์•ผ ํ•  ์ฝ”๋“œ ๋น„ํŠธ๋ฅผ ์„ ์ ํ•˜๊ณ  ์•ฑ์—์„œ ์ด๋Ÿฌํ•œ ๋ณ€๊ฒฝ์„ ์˜ˆ์ƒํ•ด์•ผ ํ•˜์ง€๋งŒ ์ผ๋‹จ ์™„๋ฃŒ๋˜๋ฉด ์•ฑ ์Šคํ† ์–ด ์—†์ด ์ƒˆ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋กค์•„์›ƒํ•˜๋Š” ๊ฒƒ์ด ๋งค์šฐ ๋นจ๋ผ์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(React Native Code Push๊ฐ€ ํ•˜๋Š” ๊ฒƒ๊ณผ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€)

@ardyfeb ๋‹น์‹  ๊ฐ™์€ ์‚ฌ๋žŒ๋“ค์€ ๋ฐ˜์‘ ์ปค๋ฎค๋‹ˆํ‹ฐ์— ๋‚˜์œ ํ‰ํŒ์„ ์ค๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๊ณณ์—์„œ ํŠธ๋กคํ•˜์„ธ์š”.

๊ฑฐ๊ธฐ; ๊ทธ๊ฒƒ์„ ํ•ด๊ฒฐํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•
ํ”Œ๋Ÿฌํ„ฐ ์›น์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ 

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŽ์€ ์•ฑ์ด ๊ทธ๋ ‡๊ฒŒ ํ•˜๋Š” ๊ฒƒ์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์˜ค๋ž˜๋œ ์•ฑ์ธ ๊ฒฝ์šฐ ๋ฉ”์‹œ์ง€๋ฅผ ํ‘œ์‹œํ•˜๊ณ  ์•ฑ์„ ๋‹ซ๊ฑฐ๋‚˜ ์•ฑ์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ๋ชจ๋“ .
โ€ฆ
2020๋…„ 8์›” 7์ผ ๊ธˆ์š”์ผ 07:38 SpajicM @ . * > ์ผ๋‹ค: ๊ทธ๊ฒƒ์€ ๋‹จ์ง€ ๊ฒ€ํ†  ๊ณผ์ •์— ๊ด€ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ž๋™ ์—…๋ฐ์ดํŠธ๋ฅผ ๊ป์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์•ฑ์˜ ์ด์ „ ๋ฒ„์ „์— ๊ฐ‡ํžŒ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ๊ฒƒ์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ตœ์†Œ ๋ฒ„์ „ ํ™•์ธ์„ ์ง์ ‘ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋‹ค์‹œ Play ์Šคํ† ์–ด๋ฅผ ๊ฑฐ์ณ์•ผ ํ•˜๊ณ  ์‚ฌ๋žŒ๋“ค์€ ๋ถˆํ–‰ํžˆ๋„ ๊ฒŒ์œผ๋ฆ…๋‹ˆ๋‹ค. ์ฝ”๋“œ ํ‘ธ์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์‹คํ–‰ํ•  ๋•Œ๋งˆ๋‹ค ์•ฑ์„ ๋น ๋ฅด๊ฒŒ ์—…๋ฐ์ดํŠธํ•˜๊ณ (ํฌ๋ง) ์‚ฌ์šฉ์ž๊ฐ€ ๋” ์›ํ™œํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. @miyoyo https://github.com/miyoyo ์—ฌ๊ธฐ์— ๋‚˜์˜ค๋Š” ๋ชจ๋“  ์˜๊ฒฌ์ด๋‚˜ ์•„์ด๋””์–ด์— ์‘๋‹ตํ•ด์•ผ ํ•  ํ•„์š”์„ฑ์„ ๋Š๋ผ๋Š” ์ด์œ ๋ฅผ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์€ ์ด๊ฒƒ์„ ์›ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„์€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์ด ๋ฌธ์ œ์— ์ฐฌ์„ฑ ํˆฌํ‘œ๋ฅผ ํ•˜๋ผ๊ณ  ํ–ˆ๊ณ  ์šฐ๋ฆฌ๋Š” ๋๊นŒ์ง€ ์ฐฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€ ์ ๊ทน์ ์œผ๋กœ ๊ณ ๋ฏผํ•˜๊ณ  ๋ฐ€์–ด๋ถ™์ด์ง€ ์•Š๋Š” ํ•œ ์ ˆ๋Œ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. โ€” ์ด ์Šค๋ ˆ๋“œ์— ๊ฐ€์ž…ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub < #14330 (comment) >์—์„œ ํ™•์ธํ•˜๊ฑฐ๋‚˜ https://github.com/notifications/unsubscribe-auth/ADS5AJFUU2V6MHQIP7AMZKLR7M5HPANCNFSM4EOFIZRA ๊ตฌ๋…์„ ์ทจ์†Œ

์€ํ–‰ ์•ฑ์„ ๊ตฌ์ถ•ํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ์ •๋ง ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋ˆ„๊ตฐ๊ฐ€ ์•ฑ ๋ฒˆ์—ญ์„ ์œ„ํ•ด ๋ฌด์„  ์—…๋ฐ์ดํŠธ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ƒ˜ํ”Œ Flutter ์•ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. https://github.com/localizely/flutter-ota-sample-app

์• ํ”Œ์˜ ๊ฐ€์ด๋“œ๋ผ์ธ์ด ์˜ˆ์ „๊ณผ ๋‹ค๋ฅธ ๊ฒƒ ๊ฐ™์€๋ฐ์š”?

์ด๊ฒƒ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹๋™์ผํ•˜๋‹ค

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

๊ทธ๋Ÿฌ๋‚˜ ํ•ด์„๋˜๊ฑฐ๋‚˜ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ์— ๋Œ€ํ•œ ๋‹ค๋ฅธ ์ฐธ์กฐ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

ํ•ด์„ ๋˜๋Š” ์ปดํŒŒ์ผ๋œ ์–ธ์–ด์— ๋Œ€ํ•ด ๋” ์ด์ƒ ๊ตฌ์ฒด์ ์œผ๋กœ ์–ธ๊ธ‰ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์œผ๋ฉด ์›๋ž˜ ๊ฒŒ์‹œ๋ฌผ์˜ ์‚ฌ๊ณผ ์ƒํƒœ๊ณ„์— ๋Œ€ํ•œ ์„ธ๋ถ€ ์ •๋ณด๊ฐ€ ๋” ์ด์ƒ ์‚ฌ์‹ค์ด ์•„๋‹ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰