Language/React Native

React Native Mac Settings

conqueror-G 2022. 11. 27. 02:59

๋ชฉ์ฐจ

    ๐Ÿ•น Version

    ๐Ÿ”– ์„ค์น˜ ํŒŒ์ผ

    ํŒŒ์ผ๋ช… Homebrew node ruby yarn Xcode Android Studio watchman
    Version 3.6.6 16.15.1 2.7.5 1.22.19 14.0.1 2021.3.1 Patch -

    ๐Ÿ”– ๊ธฐ์ˆ  ์Šคํƒ

    ๊ธฐ์ˆ ์Šคํƒ๋ช… React-Native TypeScript react-navigation/native
    Version 0.70 4.8.3 6.0.13

     

    ๐Ÿ“Œ Environment Settings

    โœ๏ธ ๊ณตํ†ต

    1. homebrew ์„ค์น˜

      - ๊ณต์‹๋ฌธ์„œ ์ฐธ๊ณ ํ•˜๊ธฐ ๋˜๋Š” ๋ธ”๋กœ๊ทธ์—์„œ 2๋ฒˆ homebrew ์„ค์น˜ํ•˜๊ธฐ ์ฐธ๊ณ 

      - https://brew.sh/index_ko

      - https://conqueror-g.tistory.com/m/70

      - ์„ค์น˜ํ™•์ธ 

    brew -v
    

    2. node.js ์„ค์น˜

      - ํ•˜๋‹จ์˜ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  Enter๋ฅผ ๋ˆ„๋ฅธ๋‹ค.

      - ์ฃผ์˜์‚ฌํ•ญ : homebrew๊ฐ€ ์„ค์น˜๋˜์–ด์žˆ์–ด์•ผ ํ•œ๋‹ค.

    brew install node
    

      - ์„ค์น˜ ํ™•์ธ

    node -v
    

    3. watchman ์„ค์น˜ 

      - ํ•˜๋‹จ์˜ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  Enter๋ฅผ ๋ˆ„๋ฅธ๋‹ค.

      - ์ฃผ์˜์‚ฌํ•ญ : homebrew๊ฐ€ ์„ค์น˜๋˜์–ด์žˆ์–ด์•ผ ํ•œ๋‹ค.

    brew install watchman
    

      - ์„ค์น˜ ํ™•์ธ

    watchman -v
    

    4. yarn ์„ค์น˜

      - ํ•˜๋‹จ์˜ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  Enter๋ฅผ ๋ˆ„๋ฅธ๋‹ค.

      - ์ฃผ์˜์‚ฌํ•ญ : homebrew๊ฐ€ ์„ค์น˜๋˜์–ด์žˆ์–ด์•ผ ํ•œ๋‹ค.

    brew install yarn --ignore-dependencies
    

      - ์„ค์น˜ ํ™•์ธ

    yarn -v
    

    5. react-native ์„ค์น˜

    npm install -g react-native
    

    โœ๏ธ IOS

    ๐Ÿ”– Xcode

    1. ์—ํ”Œ ๊ฐœ๋ฐœ์ž ํ™ˆํŽ˜์ด์ง€์—์„œ ์„ค์น˜

      - https://idmsa.apple.com/IDMSWebAuth/signin?appIdKey=891bd3417a7776362562d2197f89480a8547b108fd934911bcbea0110d07f757&path=%2Fdownload%2F&rv=1

        -- Apple ID๋กœ ๋กœ๊ทธ์ธํ•˜๊ธฐ

        -- ์ƒ๋‹จ ํƒญ์— Applications ํƒญ ํด๋ฆญ

        -- ์••์ถ• ํŒŒ์ผ ๋‹ค์šด ๋ฐ›๊ธฐ (์ธํ„ฐ๋„ท ๋‹ค์šด์†๋„์— ๋”ฐ๋ผ ๋‹ค๋ฅด์ง€๋งŒ 5~10๋ถ„ ์†Œ์š”)

    2. ์••์ถ• ํ•ด์ œ(5~10๋ถ„ ์†Œ์š”)

    3. Xcode ์‹คํ–‰

      - ์ฃผ์˜์‚ฌํ•ญ : ๋งฅ OS 12.5 ์ด์ƒ์ด์–ด์•ผ ์‹คํ–‰ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹คํ–‰์ด ์•ˆ๋œ๋‹ค๋ฉด OS๋ฅผ ์—…๋ฐ์ดํŠธ ํ•ฉ์‹œ๋‹ค.

    4. Xcode and Apple SDKs Agreement

      - Agree ํด๋ฆญ

      - ๋งฅ ๊ณ„์ • ์•”ํ˜ธ ์ž…๋ ฅ

      - ์–ด๋–ค ํ”Œ๋žซํผ์„ ์„ค์น˜ํ• ์ง€ check

        -- ์•„๋ฌด๊ฒƒ๋„ ์ฒดํฌํ•˜์ง€ ์•Š๊ณ  install

      - Xcode ์‹คํ–‰ํ•˜๋ฉด ๋‚˜์˜ค๋Š” ํ™”๋ฉด์—์„œ

        -- ๋งฅ OS ์ƒ๋‹จ ํƒญ์—์„œ Xcode ํด๋ฆญ

          --- Preferences.. ํด๋ฆญ

          --- Locations Tab ํด๋ฆญ

          --- Command Line Tools์—์„œ ๊ณต๋ฐฑ์นธ ํด๋ฆญํ•˜๋ฉด ๋ฒ„์ „์ด ํ‘œ์‹œ๋จ

          --- ๊ณ„์ • ์•”ํ˜ธ ์ž…๋ ฅ

          --- ์…‹ํŒ… ์™„๋ฃŒ

    ๐Ÿ”– Cocoapods

    1. ํ„ฐ๋ฏธ๋„์—์„œ ์„ค์น˜

      - ํ•˜๋‹จ์˜ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  Enter๋ฅผ ๋ˆ„๋ฅธ๋‹ค.

        -- ๊ฒฝ๋กœ : ~

    sudo gem install cocoapods
    

        -- ๊ณ„์ • ์•”ํ˜ธ ์ž…๋ ฅ

    2. ์ž˜ ์„ค์น˜๋˜์—ˆ๋Š”์ง€ ํ™•์ธ

      - ํ•˜๋‹จ์˜ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  Enter๋ฅผ ๋ˆ„๋ฅธ๋‹ค.

    pod --version
    

      - ํ•˜๋‹จ์˜ ์‚ฌ์ง„์ฒ˜๋Ÿผ ๋‚˜์˜ค๋ฉด ์™„๋ฃŒ

    โœ๏ธ Android

    ๐Ÿ”– JAVA Development Kit

    1. homebrew/case-versions ์ถ”๊ฐ€ํ•˜๊ธฐ

      - ํ•˜๋‹จ์˜ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  Enter๋ฅผ ๋ˆ„๋ฅธ๋‹ค.

        -- ๊ฒฝ๋กœ : ~

          --- ์ฃผ์˜์‚ฌํ•ญ : homebrew๊ฐ€ ์„ค์น˜๋˜์–ด์žˆ์–ด์•ผ ํ•œ๋‹ค.

    brew tap homebrew/cask-versions
    
    brew install --cask zulu11
    

          --- ์ฃผ์˜์‚ฌํ•ญ : ๊ณต์‹ ๋ฌธ์„œ์—์„œ ์„ค์น˜ํ•ด์•ผํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ๋ฐ”๋€Œ์ง€๋Š” ์•Š์•˜๋Š”์ง€ ์ฒดํฌํ•ด์ฃผ์„ธ์š”

          --- https://reactnative.dev/docs/environment-setup

    ๐Ÿ”–  ์•ˆ๋“œ๋กœ์ด๋“œ ์ŠคํŠœ๋””์˜ค

    1. ๊ณต์‹๋ฌธ์„œ๋กœ ์ด๋™ํ•ด์„œ ์ง์ ‘ ์„ค์น˜

      - https://developer.android.com/studio?hl=ko&gclid=Cj0KCQjw166aBhDEARIsAMEyZh6x_c_QPOeZUgVq--DPp9rGtnsiWJfGzjL6CVyBGEAKA4eiFgno1EcaAnX7EALw_wcB&gclsrc=aw.ds

        -- Download Android Studio ํด๋ฆญ

        -- Checkbox ํด๋ฆญ ๋ฐ ์ž์‹ ์˜ ๋…ธํŠธ๋ถ ๊ธฐ์ข…์— ๋”ฐ๋ผ intel or Apple ์„ ํƒํ•ด์„œ ํด๋ฆญํ•˜๊ธฐ

        -- dmgํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ๊ฐ€ ๋๋‚˜๋ฉด ์—ด๊ธฐ

        -- ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋“ฑ๋กํ•˜๊ธฐ

    2. ์•ฑ ์‹คํ–‰ํ•˜๊ธฐ

    3. Do not import ์„ ํƒํ•˜๊ณ  OK ๋ฒ„ํŠผ ํด๋ฆญ

    4. Welcome

      - Don’t send ํด๋ฆญ

    5. Welcome

      - Next ํด๋ฆญ

    6. Install Type

      - Custom์— ์ฒดํฌํ•˜๊ณ  Next ๋ฒ„ํŠผ ํด๋ฆญ

    7. Select default JDK Location

      - Next ํด๋ฆญ

    8. Select UI Theme

      - ํ…Œ๋งˆ ์ž์œ  ์„ ํƒํ•˜์—ฌ ํด๋ฆญ

      - Next ํด๋ฆญ

    9. SDK Components Setup

      - Next ํด๋ฆญ

    10. Verify Settings

      - Next ํด๋ฆญ

    11. License Agreement

      - Licenses ๋ชฉ๋ก์„ ํด๋ฆญํ•˜์—ฌ ๋ชจ๋‘ Accept

      - Finish

    12. Download

      - ๋‹ค์šด๋กœ๋“œ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด Finish

    13. ์•ฑ์ด ์žฌ์‹คํ–‰๋จ ( Welcome to Android Studio )

      - More Actions

        -- SDK Manager

    14. preferences

      - SDK Platforms

        -- ํ•˜๋‹จ ์ฒดํฌ๋ฐ•์Šค์— ‘Show Package Details’ ์ฒดํฌ

        -- Android Tiramisu๋ฅผ ์ฒดํฌ ํ•ด์ œ ํ•˜์ง€ ์•Š๋Š”๋‹ค. 

          --- ์ฃผ์˜์‚ฌํ•ญ : ์ฒดํฌ๋ฅผ ํ•ด์ œํ•˜๋ฉด ์—๋ฎฌ๋ ˆ์ดํ„ฐ๊ฐ€ ์‹คํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค.

        -- ๋Œ€ ๋ถ„๋ฅ˜ Android 12.0 (s) ํ•ญ๋ชฉ ์ฐพ๊ธฐ

          --- ์ฃผ์˜์‚ฌํ•ญ: ํ”Œ๋žซํผ์€ ๊ณต์‹๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

          --- https://reactnative.dev/docs/environment-setup

            ---- ์ค‘ ๋ถ„๋ฅ˜

              ----- Android SDK paltform 31 ์ฒดํฌ

               ----- Google APIs Intel x86 Atom System Image or Intel x86 Atom_64 System Image or Google APIs ARM 64v8a System Image ์ฒดํฌ

      - SDK Tools

        -- ์ฃผ์˜์‚ฌํ•ญ: ํ”Œ๋žซํผ์€ ๊ณต์‹๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

          --- https://reactnative.dev/docs/environment-setup

        -- ํ•˜๋‹จ ์ฒดํฌ๋ฐ•์Šค์— ‘Show Package Details’ ์ฒดํฌ

          --- 33.0.0 ์ฒดํฌ

          --- 31.0.0 ์ฒดํฌ

          --- 30.0.3 ์ฒดํฌ

          --- Apply ํด๋ฆญ

    15. Confirm Change ์•Œ๋ฆผ์ฐฝ ๋‚˜์˜ค๋ฉด OK ํด๋ฆญ

    16. SDK Component Installer

      - ์„ค์น˜๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด Finish ํด๋ฆญ

    17. OK

    18. ์„ค์น˜ํ•œ ํ”Œ๋žซํผ์— ๋งž๊ฒŒ ์—๋ฎฌ๋ ˆ์ดํ„ฐ ์„ค์ •ํ•˜๊ธฐ

      - more Actions ํด๋ฆญ

      - Virtual Device Manager ํด๋ฆญ

      - ๊ธฐ์กด์˜ ๊ฒƒ ์‚ญ์ œ

        -- … ํด๋ฆญ

        -- Delete ํด๋ฆญ

      - ๋‹ค์‹œ ํ•œ๋ฒˆ ๋ฌผ์–ด๋ณด๋ฉด Yes ํด๋ฆญ

      - Create Device ํด๋ฆญ

      - ์ด์ „์— SDK Manager์—์„œ ์„ค์น˜ํ•œ Android 12.0 s์— ๋งž๋Š” ๊ธฐ์ข… ์„ ํƒ

        -- ์„ ํƒ ํ–ˆ๋‹ค๋ฉด, Next ๋ฒ„ํŠผ ํด๋ฆญ

      - Recommened์—์„œ Android12์— ํ•ด๋‹นํ•˜๋Š” ๊ฒƒ์„ ์„ค์น˜

        -- ์˜†์— ๋‹ค์šด๋กœ๋“œ ์•„์ด์ฝ˜์ด ์žˆ๋‹ค๋ฉด ์„ค์น˜, ์—†๋‹ค๋ฉด ๋‹ค์Œ์œผ๋กœ ์ง„ํ–‰ 

      - x86 Image ํƒญ ํด๋ฆญ

        -- ์˜†์— ๋‹ค์šด๋กœ๋“œ ์•„์ด์ฝ˜์ด ํ‘œ์‹œ๋˜๋Š” ๊ฒƒ์ค‘ 12.0๋งŒ ์„ค์น˜ํ•œ๋‹ค.

        -- ์•„์ด์ฝ˜์„ ํด๋ฆญํ•˜๋ฉด ์„ค์น˜ ์‹œ์ž‘

      - ์„ค์น˜๊ฐ€ ๋๋‚˜๋ฉด ํ•ด๋‹น ๊ธฐ์ข… ์„ ํƒํ•˜๊ณ  Next ๋ฒ„ํŠผ ํด๋ฆญ

      - Finish ๋ฒ„ํŠผ ํด๋ฆญ

    19. ์•ˆ๋“œ๋กœ์ด๋“œ ์ŠคํŠœ๋””์˜ค ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •

      - ํ„ฐ๋ฏธ๋„ ์‹คํ–‰ํ•˜๊ธฐ

      - ๋ฃจํŠธ ๊ฒฝ๋กœ ํ™•์ธ

        -- ๊ฒฝ๋กœ : ~

      - ~/.zshrc ํŒŒ์ผ ์—ด๊ธฐ

        -- ํ•˜๋‹จ์˜ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  Enter๋ฅผ ๋ˆ„๋ฅธ๋‹ค.

          --- ์ฃผ์˜์‚ฌํ•ญ : zsh๊ฐ€ ์„ค์น˜๋˜์–ด์žˆ์ง€ ์•Š๋‹ค๋ฉด ~/.bash_profile๋กœ ์ด๋™

    code ~/.zshrc
    
    or
    
    code ~/.bash_profile
    

      - ์ œ์ผ ํ•˜๋‹จ์—์„œ ๋ฐ‘์— ๋‚˜์—ด๋œ ์ฝ”๋“œ ์ถ”๊ฐ€ํ•˜๊ธฐ

    # export ANDROID_HOME=$HOME/Library/Android/sdk
    export ANDROID_SDK_ROOT=$HOME/Library/Android/sdk
    export PATH=$PATH:$ANDROID_SDK_ROOT/emulator
    export PATH=$PATH:$ANDROID_SDK_ROOT/platform-tools
    

        -- ์ž์‹ ์˜ ์•ˆ๋“œ๋กœ์ด๋“œ SDK ์œ„์น˜๋Š” SDK Manager์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

          --- ์•ˆ๋“œ๋กœ์ด๋“œ ์ŠคํŠœ๋””์˜ค์—์„œ SDK Manager๋ฅผ ๋‹ค์‹œ ์‹คํ–‰

          --- ์ƒ๋‹จ์— ๋ณด๋ฉด Android SDK Location์— ๊ฒฝ๋กœ ํ‘œ์‹œ๋œ๋‹ค. Edit์„ ๋ˆ„๋ฅธ๋‹ค.

          --- ๊ฒฝ๋กœ๋ฅผ ๋ณต์‚ฌํ•œ๋‹ค.

          --- ์—๋””ํ„ฐ๋กœ ๋Œ์•„๊ฐ€์„œ ๊ฒฝ๋กœ๋ฅผ ์ˆ˜์ •ํ•œ๋‹ค.

            ---- ์ฃผ์˜์‚ฌํ•ญ : ๋ณต์‚ฌํ•ด์˜จ ๊ฒฝ๋กœ ๋’ค์— /Android/sdk๋ฅผ ๋˜ ๋ถ™์ด์ง€ ์•Š๋„๋ก ํ•œ๋‹ค

      - ์ €์žฅํ•˜๊ณ  ์—๋””ํ„ฐ๋ฅผ ์ข…๋ฃŒํ•œ๋‹ค.

        -- command + s ๋ฅผ ๋ˆ„๋ฅด๋ฉด ์ €์žฅ๋œ๋‹ค.

      - ํ„ฐ๋ฏธ๋„๋กœ ๋Œ์•„๊ฐ„๋‹ค.

      - ์ž‘์„ฑํ•œ ๋‚ด์šฉ ์ ์šฉํ•˜๊ธฐ

        -- ํ•˜๋‹จ์˜ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  Enter๋ฅผ ๋ˆ„๋ฅธ๋‹ค.

    source ~/.zshrc
    
    or
    
    source ~/.bash_profile
    

      - ์ž˜ ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ 

        -- ํ•˜๋‹จ์˜ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  Enter๋ฅผ ๋ˆ„๋ฅธ๋‹ค.

    adb
    

          --- ํ•˜๋‹จ ์ฒ˜๋Ÿผ ๋‚˜์˜ค๋ฉด ์™„๋ฃŒ

          --- ๋งŒ์•ฝ ํ•˜๋‹จ๊ณผ ๊ฐ™์ด ๋‚˜์˜ค์ง€ ์•Š๋Š”๋‹ค๋ฉด, 3๊ฐ€์ง€๋ฅผ ์ฒดํฌ ํ•œ๋‹ค.

            1. code ~/.zshrc ์—์„œ ๊ฒฝ๋กœ๋ฅผ ์ž˜๋ชป ์„ค์ •ํ•˜์ง€๋Š” ์•Š์•˜๋Š”์ง€ ?

            2. ์ €์žฅ ์•ˆํ•˜๊ณ  source ~/.zshrc ๋ฅผ ์‹คํ–‰ํ•˜์ง€๋Š” ์•Š์•˜๋Š”์ง€ ?

            3. source ~/.zshrc ๋ฅผ ์‹คํ–‰ ์•ˆํ•˜์ง€ ์•Š์•˜๋Š”์ง€ ?

    Android Debug Bridge verstion 1.0.41
    Version 33.0.3-8952118
    Installed as /์ž์‹ ์˜ ์•ˆ๋“œ๋กœ์ด๋“œSDK ์œ„์น˜/platform-tools/adb
    

    ๐Ÿ“Œ Create React-Native

    โœ๏ธ React_Native + TypeScript ( ํ•„์ˆ˜ )

    ๐Ÿ”–  ์„ค์น˜

    npx react-native init MyApp --version 0.70 --template react-native-template-typescript
    

      - ๋งŒ์•ฝ cli.function error๋กœ ์•ฑ ์ƒ์„ฑ์— ์‹คํŒจํ•œ๋‹ค๋ฉด ์ด๊ฑธ ๋”ฐ๋ผํ•ด๋ณด์„ธ์š”

    npm uninstall -g react-native-cli or yarn global remove react-native-cli
    

      - ๋งŒ์•ฝ ruby version์ด ์•ˆ๋งž์•„์„œ CocaoPods install์— ์‹คํŒจํ•œ๋‹ค๋ฉด ์ด๊ฑธ ๋”ฐ๋ผํ•ด๋ณด์„ธ์š”

        -- https://conqueror-g.tistory.com/280

    ๐Ÿ”– ์‹คํ–‰

      - ์ฃผ์˜์‚ฌํ•ญ : ๋นŒ๋“œ 1~3๋ถ„ ์†Œ์š”

        -- ์•„๋ž˜์—์„œ ์„ธํŒ… ํ•˜์ง€ ์•Š๊ณ  ๋จผ์ € ๋นŒ๋“œ ๋˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ

          --- pod install

    cd ios
    pod install
    cd ..
    

          --- ์‹คํ–‰

            ---- IOS

    yarn react-native run-ios
    

            ---- Android

    yarn react-native run-android
    

    ๐Ÿ”– ์„ธํŒ…

      - ์กฐ๊ฑด

        -- Reactotron setting

        -- React-Navigation setting

        -- tsconfig ์ ˆ๋Œ€ ๊ฒฝ๋กœ src

      - ์ตœ์ข… ์ปดํฌ๋„ŒํŠธ ํŠธ๋ฆฌ 

        -- *์ฒดํฌ ๋˜์–ด์žˆ๋Š” ๋ถ€๋ถ„์€ ์ƒˆ๋กœ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ํŒŒ์ผ์„ ์˜ฎ๊ธฐ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

    |โ”€โ”€ ___test__
    |โ”€โ”€ .bundle
    |โ”€โ”€ .vscode (v)
    |  |โ”€โ”€ settings.json (v)
    |โ”€โ”€ android
    |โ”€โ”€ ios
    |โ”€โ”€ src (v)
    |  |โ”€โ”€ activities (v)
    |  |  |โ”€โ”€ pages (v)
    |  |  |  |โ”€โ”€ Home (v)
    |  |  |  |  |โ”€โ”€ HomePage.tsx (v)
    |  |  |  |  |โ”€โ”€ index.ts (v)
    |  |โ”€โ”€ assets (v)
    |  |โ”€โ”€ components (v)
    |  |โ”€โ”€ config (v)
    |  |  |โ”€โ”€ ReactotronConfig.ts (v)
    |  |  |โ”€โ”€ index.ts (v)
    |  |โ”€โ”€ navigators (v)
    |  |  |โ”€โ”€ RootNavigator.tsx (v)
    |  |  |โ”€โ”€ index.ts (v)
    |  |โ”€โ”€ routes (v)
    |  |โ”€โ”€ App.tsx (v)
    |โ”€โ”€ index.js

      - App.tsx

        -- ๊ฒฝ๋กœ : src

        -- ํŒŒ์ผ ์ด๋ฆ„ : App.tsx

        -- ์ฝ”๋“œ

    import { NavigationContainer } from '@react-navigation/native'
    
    import { AppContext, Context } from 'src/context'
    import { RootNavigator } from 'src/navigators'
    
    if (__DEV__) {
      import('src/config/ReactotronConfig').then(() => console.log('Reactotron Configured'))
    }
    
    const App = () => {
      return (
          <NavigationContainer>
            <Context.Provider value={new AppContext()}>
              <RootNavigator />
            </Context.Provider>
          </NavigationContainer>
      )
    }
    
    export default App
    

      - RootNavigator.tsx

        -- ๊ฒฝ๋กœ : src/navigator

        -- ํŒŒ์ผ ์ด๋ฆ„ : RootNavigator.tsx

        -- ์ฝ”๋“œ

    import { PageNavigator } from './PageNavigator'
    
    export const RootNavigator = () => {
      return <PageNavigator /> // ๋‹ค๋ฅธ ์ž„์˜์˜ ๋„ค๋น„๊ฒŒ์ดํ„ฐ๋กœ
    }
    

    โœ๏ธ Reactotron

    ๐Ÿ”– ์„ค์น˜

      - Reactotron App ์„ค์น˜

    brew install --cask reactotron
    

      - ํ”„๋กœ์ ํŠธ ํด๋”์—์„œ ์„ค์น˜

        -- ๊ฒฝ๋กœ : /

    yarn add -D reactotron-react-native @react-native-async-storage/async-storage
    

    ๐Ÿ”– ์„ธํŒ…

      - config ํŒŒ์ผ ๋งŒ๋“ค๊ธฐ

        -- ๊ฒฝ๋กœ : src/config

        -- ํŒŒ์ผ ์ด๋ฆ„ : ReactotronConfig.ts

        -- ์ฝ”๋“œ

    import Reactotron from 'reactotron-react-native'
    
    Reactotron
      .configure() // controls connection & communication settings
      .useReactNative() // add all built-in react native plugins
      .connect() // let's connect!
    

      - App.tsx์— ์ฝ”๋“œ ์ž‘์„ฑํ•˜๊ธฐ

        -- ๊ฒฝ๋กœ : src

        -- ํŒŒ์ผ ์ด๋ฆ„ : App.tsx

        -- ์ฝ”๋“œ

    if (__DEV__) {
      import('src/config/ReactotronConfig').then(() => console.log('Reactotron Configured'))
    }
    

    โœ๏ธ React Navigation

    ๐Ÿ”– ์„ค์น˜

    yarn add @react-navigation/native @react-navigation/stack react-native-reanimated react-native-gesture-handler react-native-screens react-native-safe-area-context @react-native-community/masked-view @react-navigation/native-stack
    

    โœ๏ธ Git

      - .gitignore

        -- ๊ฒฝ๋กœ : /

        -- ํŒŒ์ผ์ด๋ฆ„ : .gitignore

        -- ์ฝ”๋“œ

    # OSX
    #
    .DS_Store
    
    # Xcode
    #
    build/
    *.pbxuser
    !default.pbxuser
    *.mode1v3
    !default.mode1v3
    *.mode2v3
    !default.mode2v3
    *.perspectivev3
    !default.perspectivev3
    xcuserdata
    *.xccheckout
    *.moved-aside
    DerivedData
    *.hmap
    *.ipa
    *.xcuserstate
    
    # Android/IntelliJ
    #
    build/
    .idea
    .gradle
    local.properties
    *.iml
    
    # node.js
    #
    node_modules/
    npm-debug.log
    yarn-error.log
    
    # BUCK
    buck-out/
    \\.buckd/
    *.keystore
    !debug.keystore
    
    # fastlane
    #
    # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
    # screenshots whenever they are needed.
    # For more information about the recommended setup visit:
    # <https://docs.fastlane.tools/best-practices/source-control/>
    
    */fastlane/report.xml
    */fastlane/Preview.html
    */fastlane/screenshots
    
    # Bundle artifact
    *.jsbundle
    
    # CocoaPods
    /ios/Pods/
    
    # Environment Variables
    .env
    .env.development.local
    .env.production.local
    
    # .gitkeep
    .gitkeep
    

      - git remote

        -- git remote

    # connect
    git remote add origin {address}
    
    # confirm
    git remote -v
    

        -- ๋ณ€๊ฒฝ์‚ฌํ•ญ ์…‹ํŒ… ํ›„ add & commit

    # add
    git add .
    
    # commit
    git commit -m "commit message"
    

        -- branch create

    # master branch
    git branch {branch name}
    

        -- checkout

    git checkout {branch name}
    

        -- push

    git push origin {branch name}
    

    โœ๏ธ NPM Script ์„ค์ •

      - package.json์˜ scripts

      - pakage.json์— ์ƒ๋‹จ์˜ ์‚ฌ์ง„์ฒ˜๋Ÿผ ์ฝ”๋“œ ์ถ”๊ฐ€ ํ•˜๊ธฐ

        -- ํ•˜๋‹จ์˜ ์ฝ”๋“œ๋ฅผ ๋ณต์‚ฌํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค

    "nodemodule_clean": "rm -rf node_modules/ && yarn cache clean",
        "gradle-clean": "cd android && ./gradlew cleanBuildCache",
        "watchman-metro-clean": "watchman watch-del-all && rm -rf $TMPDIR/metro-*",
        "yarn-install": "yarn",
        "pod-install": "cd ios && pod install",
        "clean-start": "yarn start --reset-cache"
    

      - NPM ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์‹คํ–‰ํ•˜๊ธฐ

        -- NPM ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋น„ํ™œ์„ฑํ™”๋˜์–ด์žˆ๋‹ค๋ฉด ํ™œ์„ฑํ™”ํ•˜๊ธฐ

          --- ์‚ฌ์ง„ ๊ณต๊ฐ„์— ๋งˆ์šฐ์Šค ์šฐํด๋ฆญํ•˜๋ฉด ์…€๋ ‰ํŠธ ๋ฐ•์Šค๊ฐ€ ๋ณด์—ฌ์ง‘๋‹ˆ๋‹ค

      - ์‹คํ–‰ํ•  ๋•Œ๋Š” ํ‘œ์‹œ๋œ ์•„์ด์ฝ˜์„ ํด๋ฆญ