React-native: ์ƒˆ Xcode ๋นŒ๋“œ ์‹œ์Šคํ…œ์œผ๋กœ ๋นŒ๋“œ ํ•  ๋•Œ '์—ฌ๋Ÿฌ ๋ช…๋ น์ด ์ƒ์„ฑ๋จ'์˜ค๋ฅ˜

์— ๋งŒ๋“  2018๋…„ 08์›” 01์ผ  ยท  69์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: facebook/react-native

์•ˆ๋…•ํ•˜์„ธ์š”,

ํ™˜๊ฒฝ:

React Native Environment Info:
    System OS: macOS High Sierra 10.13.6
    Binaries:
      Node: 8.11.3 - /usr/local/bin/node
      npm: 5.6.0 - /usr/local/bin/npm
    IDEs:
      Xcode: 10 Beta 3
    npmPackages:
      react: 16.4.1
      react-native: 0.56.0

์˜ค๋ฅ˜:

๊ฐ„๋‹จํ•œ RN 0.56 ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋นŒ๋“œํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๋‹ค์Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

warning: Skipping duplicate build file in Compile Sources build phase: <PATH_TO_PROJECT>/node_modules/react-native/React/Modules/RCTRedBoxExtraDataViewController.m (in target 'React-tvOS')
...
warning: duplicate output file '<HOME>/Library/Developer/Xcode/DerivedData/ReactNativeSimple-dpupkkuvhsslwxgngxzqgwsrazap/Build/Intermediates.noindex/ArchiveIntermediates/ReactNativeSimple/BuildProductsPath/Release-iphoneos/include/React/RCTResizeMode.h' on task: PBXCp <PATH_TO_PROJECT>/node_modules/react-native/Libraries/Image/RCTResizeMode.h <HOME>/Library/Developer/Xcode/DerivedData/ReactNativeSimple-dpupkkuvhsslwxgngxzqgwsrazap/Build/Intermediates.noindex/ArchiveIntermediates/ReactNativeSimple/BuildProductsPath/Release-iphoneos/include/React/RCTResizeMode.h (in target 'React')
...
error: Multiple commands produce '<PbxCp <HOME>/Library/Developer/Xcode/DerivedData/ReactNativeSimple-dpupkkuvhsslwxgngxzqgwsrazap/Build/Intermediates.noindex/ArchiveIntermediates/ReactNativeSimple/BuildProductsPath/Release-iphoneos/include/React/RCTScrollableProtocol.h>':
1) Target 'React-tvOS' has copy command from '<PATH_TO_PROJECT>/node_modules/react-native/React/Views/ScrollView/RCTScrollableProtocol.h' to '<HOME>/Library/Developer/Xcode/DerivedData/ReactNativeSimple-dpupkkuvhsslwxgngxzqgwsrazap/Build/Intermediates.noindex/ArchiveIntermediates/ReactNativeSimple/BuildProductsPath/Release-iphoneos/include/React/RCTScrollableProtocol.h'
2) Target 'React' has copy command from '<PATH_TO_PROJECT>/node_modules/react-native/React/Views/ScrollView/RCTScrollableProtocol.h' to '<HOME>/Library/Developer/Xcode/DerivedData/ReactNativeSimple-dpupkkuvhsslwxgngxzqgwsrazap/Build/Intermediates.noindex/ArchiveIntermediates/ReactNativeSimple/BuildProductsPath/Release-iphoneos/include/React/RCTScrollableProtocol.h'
error: Multiple commands produce '<HOME>/Library/Developer/Xcode/DerivedData/ReactNativeSimple-dpupkkuvhsslwxgngxzqgwsrazap/Build/Intermediates.noindex/ArchiveIntermediates/ReactNativeSimple/BuildProductsPath/Release-iphoneos/include/double-conversion/fast-dtoa.h':
1) Target 'double-conversion-tvOS' has copy command from '<PATH_TO_PROJECT>/node_modules/react-native/third-party/double-conversion-1.1.5/src/fast-dtoa.h' to '<HOME>/Library/Developer/Xcode/DerivedData/ReactNativeSimple-dpupkkuvhsslwxgngxzqgwsrazap/Build/Intermediates.noindex/ArchiveIntermediates/ReactNativeSimple/BuildProductsPath/Release-iphoneos/include/double-conversion/fast-dtoa.h'
2) Target 'double-conversion' has copy command from '<PATH_TO_PROJECT>/node_modules/react-native/third-party/double-conversion-1.1.5/src/fast-dtoa.h' to '<HOME>/Library/Developer/Xcode/DerivedData/ReactNativeSimple-dpupkkuvhsslwxgngxzqgwsrazap/Build/Intermediates.noindex/ArchiveIntermediates/ReactNativeSimple/BuildProductsPath/Release-iphoneos/include/double-conversion/fast-dtoa.h'
...

์žฌํ˜„ ๋‹จ๊ณ„ :

  • ๋ฐ˜์‘ ๋„ค์ดํ‹ฐ๋ธŒ ์ดˆ๊ธฐํ™”
  • xcodebuild -project <PATH_TO_PROJECT>/ios/ReactNativeSimple.xcodeproj -scheme ReactNativeSimple archive -sdk iphoneos -archivePath <PATH_TO_PROJECT>/output/build/archive/ReactNativeSimple CODE_SIGN_STYLE=Automatic

์„ธ๋ถ€:

" react-native init "๋ช…๋ น์œผ๋กœ ์ƒ์„ฑ ๋œ ๊ฐ„๋‹จํ•œ RN ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ํ…Œ์ŠคํŠธํ–ˆ์Šต๋‹ˆ๋‹ค.
Xcode 10 GUI๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•ฑ์„ ๋นŒ๋“œํ•˜๋ ค๊ณ ํ•˜๋ฉด ์„ฑ๊ณต์ ์œผ๋กœ ๋นŒ๋“œ๋ฉ๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ xcodebuild ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ๋นŒ๋“œํ•˜๋ ค๊ณ ํ•ฉ๋‹ˆ๋‹ค. ์œ„์˜ ์˜ค๋ฅ˜๋กœ ์ธํ•ด ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค.

Xcode 9.4.1์˜ ๋™์ผํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ (RN 0.56)์—์„œ ๋™์ผํ•œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๋ฉด ์„ฑ๊ณต์ ์œผ๋กœ ๋นŒ๋“œ๋ฉ๋‹ˆ๋‹ค.
xcodebuild ๋ช…๋ น์— -sdk param์„ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ์„ฑ๊ณต์ ์œผ๋กœ ๋นŒ๋“œ๋ฉ๋‹ˆ๋‹ค.
์ฐธ๊ณ  : _Xcode 10 ๋ฒ ํƒ€ ๋ฒ„์ „์— ๋”ฐ๋ผ ์˜ค๋ฅ˜๊ฐ€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ._

์งˆ๋ฌธ :

RN 0.56์€ Xcode 10 Beta๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๊นŒ?
์–ด๋–ป๊ฒŒ ๊ณ ์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
Xcode 10 Beta๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋นŒ๋“œํ•˜๋Š” ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

Bug iOS Locked

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

๋นŒ๋“œ ์‹œ์Šคํ…œ์„ Legacy๋กœ ๋ณ€๊ฒฝํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ํŒŒ์ผ> ์ž‘์—… ๊ณต๊ฐ„ ์„ค์ •> ๋นŒ๋“œ ์‹œ์Šคํ…œ> ๋ ˆ๊ฑฐ์‹œ ๋นŒ๋“œ ์‹œ์Šคํ…œ.

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

๋นŒ๋“œ ์‹œ์Šคํ…œ์„ Legacy๋กœ ๋ณ€๊ฒฝํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ํŒŒ์ผ> ์ž‘์—… ๊ณต๊ฐ„ ์„ค์ •> ๋นŒ๋“œ ์‹œ์Šคํ…œ> ๋ ˆ๊ฑฐ์‹œ ๋นŒ๋“œ ์‹œ์Šคํ…œ.

์ƒˆ๋กœ์šด ๋นŒ๋“œ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์ƒˆ ๋นŒ๋“œ ์‹œ์Šคํ…œ์ด ์ง€์›๋˜์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์ด ์ž‘์—…์—์„œ ์‚ฌ๋žŒ๋“ค์ด Xcode 10 ๋˜๋Š” ์ƒˆ๋กœ์šด ๋นŒ๋“œ ์‹œ์Šคํ…œ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ์ถ”์ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค : https://github.com/facebook/react-native/issues/19573

์–ธ๋œป๋ณด๊ธฐ์— ๊ท€ํ•˜์˜ ๋ฌธ์ œ๊ฐ€ ์ง€๊ธˆ๊นŒ์ง€ master์—์„œ ์ˆ˜์ • ํ•œ ์‚ฌํ•ญ์œผ๋กœ ํ•ด๊ฒฐ๋˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ชฉ๋ก์— ์ถ”๊ฐ€ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ libReact.a & libyoga.a ์—์„œ Multiple commands produce ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.
๋‚˜๋Š” ์‚ฌ์šฉํ•˜๊ณ ์žˆ๋‹ค :

  • Xcode 10
  • ๋ฐ˜์‘ ๋„ค์ดํ‹ฐ๋ธŒ 0.57.0
  • CocoaPods

์ด๋ฅผ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•ด Podfile ์— ์ด๊ฒƒ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

  post_install do |installer|
    installer.pods_project.targets.each do |target|

      # The following is needed to ensure the "archive" step works in XCode.
      # It removes React & Yoga from the Pods project, as it is already included in the main project.
      # Without this, you'd see errors when you archive like:
      # "Multiple commands produce ... libReact.a"
      # "Multiple commands produce ... libyoga.a"

      targets_to_ignore = %w(React yoga)

      if targets_to_ignore.include? target.name
        target.remove_from_project
      end

    end
  end

๊ทธ๋Ÿฐ ๋‹ค์Œ ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ Pod ํ”„๋กœ์ ํŠธ๋ฅผ ๋‹ค์‹œ ๋นŒ๋“œํ•˜์‹ญ์‹œ์˜ค.

$ pod install

์ „์ฒด ํ™˜๊ฒฝ ์„ธ๋ถ€ ์ •๋ณด :

  React Native Environment Info:
    System:
      OS: macOS High Sierra 10.13.6
      CPU: x64 Intel(R) Core(TM) i9-8950HK CPU @ 2.90GHz
      Memory: 4.10 GB / 32.00 GB
      Shell: 3.2.57 - /bin/bash
    Binaries:
      Node: 10.9.0 - ~/.nvm/versions/node/v10.9.0/bin/node
      Yarn: 1.9.4 - /usr/local/bin/yarn
      npm: 6.4.1 - ~/.nvm/versions/node/v10.9.0/bin/npm
      Watchman: 4.9.0 - /usr/local/bin/watchman
    SDKs:
      iOS SDK:
        Platforms: iOS 12.0, macOS 10.14, tvOS 12.0, watchOS 5.0
    IDEs:
      Xcode: 10.0/10A255 - /usr/bin/xcodebuild
    npmPackages:
      react: 16.5.0 => 16.5.0
      react-native: 0.57.0 => 0.57.0
    npmGlobalPackages:
      create-react-native-app: 1.0.0
      react-native-cli: 2.0.1

@PaulMest ์˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธ Pods ํ”„๋กœ์ ํŠธ์˜ Targets์—์„œ Xcode์—์„œ Yoga๋ฅผ ์ˆ˜๋™์œผ๋กœ ์‚ญ์ œํ•˜๋ฉด RN 0.57 ์ด์ „์— ์ค‘๋ณต ๋Œ€์ƒ ๋นŒ๋“œ ์˜ค๋ฅ˜๋„ ๋ฐœ์ƒ์‹œํ‚จ React๋กœ ์ž‘์—…ํ–ˆ๋“ฏ์ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

xcodebuild ๊ฒฝ์šฐ์ด -UseModernBuildSystem=NO ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์ด์ „ ๋ ˆ๊ฑฐ์‹œ ๋นŒ๋“œ ์‹œ์Šคํ…œ์„ ์„ ํƒํ•˜์‹ญ์‹œ์˜ค.

@PaulMest ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์ œ ์ƒํ™ฉ์ด ๋ฌธ์ œ ํ•ด๊ฒฐ์— ๋„์›€์ด๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ์ „์ฒด ์ถœ๋ ฅ์ž…๋‹ˆ๋‹ค.

:-1: Multiple commands produce '/Users/ntomallen/Library/Developer/Xcode/DerivedData/zonder-bkcoqubqbalyhffxhurxhkuivvms/Build/Products/Debug-iphonesimulator/zonder.app/Roboto.ttf':
1) Target 'zonder' (project 'zonder') has copy command from '/Users/ntomallen/source/zonder-mobile-app/node_modules/native-base/Fonts/Roboto.ttf' to '/Users/ntomallen/Library/Developer/Xcode/DerivedData/zonder-bkcoqubqbalyhffxhurxhkuivvms/Build/Products/Debug-iphonesimulator/zonder.app/Roboto.ttf'
2) Target 'zonder' (project 'zonder') has copy command from '/Users/ntomallen/source/zonder-mobile-app/src/Resources/Fonts/Roboto.ttf' to '/Users/ntomallen/Library/Developer/Xcode/DerivedData/zonder-bkcoqubqbalyhffxhurxhkuivvms/Build/Products/Debug-iphonesimulator/zonder.app/Roboto.ttf'

:-1: Multiple commands produce '/Users/ntomallen/Library/Developer/Xcode/DerivedData/zonder-bkcoqubqbalyhffxhurxhkuivvms/Build/Products/Debug-iphonesimulator/zonder.app/Zocial.ttf':
1) Target 'zonder' (project 'zonder') has copy command from '/Users/ntomallen/source/zonder-mobile-app/node_modules/native-base/Fonts/Zocial.ttf' to '/Users/ntomallen/Library/Developer/Xcode/DerivedData/zonder-bkcoqubqbalyhffxhurxhkuivvms/Build/Products/Debug-iphonesimulator/zonder.app/Zocial.ttf'
2) Target 'zonder' (project 'zonder') has copy command from '/Users/ntomallen/source/zonder-mobile-app/node_modules/react-native-vector-icons/Fonts/Zocial.ttf' to '/Users/ntomallen/Library/Developer/Xcode/DerivedData/zonder-bkcoqubqbalyhffxhurxhkuivvms/Build/Products/Debug-iphonesimulator/zonder.app/Zocial.ttf'

:-1: Multiple commands produce '/Users/ntomallen/Library/Developer/Xcode/DerivedData/zonder-bkcoqubqbalyhffxhurxhkuivvms/Build/Products/Debug-iphonesimulator/zonder.app/Ionicons.ttf':
1) Target 'zonder' (project 'zonder') has copy command from '/Users/ntomallen/source/zonder-mobile-app/node_modules/native-base/Fonts/Ionicons.ttf' to '/Users/ntomallen/Library/Developer/Xcode/DerivedData/zonder-bkcoqubqbalyhffxhurxhkuivvms/Build/Products/Debug-iphonesimulator/zonder.app/Ionicons.ttf'
2) Target 'zonder' (project 'zonder') has copy command from '/Users/ntomallen/source/zonder-mobile-app/node_modules/react-native-vector-icons/Fonts/Ionicons.ttf' to '/Users/ntomallen/Library/Developer/Xcode/DerivedData/zonder-bkcoqubqbalyhffxhurxhkuivvms/Build/Products/Debug-iphonesimulator/zonder.app/Ionicons.ttf'

๊ธฐ๋ณธ์ ์œผ๋กœ react-native-vector-icons ๋ฐ native-base ๋ชจ๋‘ ๋™์ผํ•œ ๊ธ€๊ผด ํŒŒ์ผ์„ ๋ฒˆ๋“ค๋กœ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. (๊ทธ๋ฆฌ๊ณ  ์–ด๋–ค ์ด์œ ์—์„œ๋“  ์šฐ๋ฆฌ๋Š” ๊ทธ๋“ค ์ค‘ ํ•˜๋‚˜๋ฅผ ๋ฒˆ๋“ค๋กœ ๋ฌถ์–ด ๋†“์•˜์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์ œ๊ฑฐ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.) Xcode 10 / Mojave๋กœ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ ์ „์— ์•„๋ฌด๋Ÿฐ ๋ฌธ์ œ๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์œ ์ผํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ Xcode 9์—์„œ Xcode 10์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@ntomallen react-native-vector-icons ๋ฐ native-base ์ค‘๋ณต ๊ธ€๊ผด๊ณผ ๋˜‘๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์œผ๋ฉฐ ๊ฒฐ๊ตญ ๋Œ€์ƒ ์•ฑ์˜ Copy Resources To Bundle ์„น์…˜์—์„œ ์ค‘๋ณต ๋œ ๊ธ€๊ผด์„ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ํ›„, ๋‚ด ํ”„๋กœ์ ํŠธ๊ฐ€ ๋‹ค์‹œ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค (๊ธ€์Ž„์š”, ์—ฌ๊ธฐ์— ์„ค๋ช… ๋œ ๋‘ ๊ฐ€์ง€ ์˜ค๋ฅ˜๋กœ ์ด๋™ํ–ˆ์Šต๋‹ˆ๋‹ค .libfishhook.a๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Œ-์ˆ˜์ • ๋ฐ ์—ฌ๋Ÿฌ ๋ช…๋ น์œผ๋กœ libReact.a ๋ฐ libyoga.a ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์ง€๊ธˆ๊นŒ์ง€ ๋‚ด ์•ฑ์ด ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋˜๊ณ  ์žˆ์œผ๋ฉฐ XCode 10์˜ ์ƒˆ๋กœ์šด ๋นŒ๋“œ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปดํŒŒ์ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

_ ๋ฉด์ฑ… ์กฐํ•ญ : ์ €๋Š” ๊ฒฝํ—˜ ๋งŽ์€ iOS ๊ฐœ๋ฐœ์ž๊ฐ€ ์•„๋‹ˆ๋ฉฐ ์ด๋Ÿฌํ•œ ์†”๋ฃจ์…˜์„ ํ•จ๊ป˜ ํ•ดํ‚นํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋ชจ๋ฅด๋Š” ๊ฒƒ์„ ์—‰๋ง์œผ๋กœ ๋งŒ๋“ค ์—ˆ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ๋‹ค ._

๊ทธ๊ฒƒ์€ ๋‚˜์—๊ฒŒ๋„ ํšจ๊ณผ๊ฐ€ ์žˆ์—ˆ๋˜ ๊ฒƒ์ž…๋‹ˆ๋‹ค! ์ง€๊ธˆ์€ ์™œ ๊ฐ‘์ž๊ธฐ ์˜ค๋ฅ˜๊ฐ€ ๋‚ฌ์ง€๋งŒ ์ด์ „์—๋Š” ๊ทธ๋ ‡์ง€ ์•Š์€์ง€ ์—ฌ์ „ํžˆ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.
2018 ๋…„ 9 ์›” 26 ์ผ ์˜คํ›„ 2:49 -0400, Niels Bokmans [email protected] ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

@ntomallen ๋‚˜๋Š” react-native-vector-icons ๋ฐ native-base์˜ ์ค‘๋ณต ๊ธ€๊ผด๊ณผ ๋˜‘๊ฐ™์€ ๋ฌธ์ œ์—
์ง€๊ธˆ๊นŒ์ง€ ๋‚ด ์•ฑ์ด ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋˜๊ณ  ์žˆ์œผ๋ฉฐ XCode 10์˜ ์ƒˆ๋กœ์šด ๋นŒ๋“œ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปดํŒŒ์ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ฉด์ฑ… ์กฐํ•ญ : ์ €๋Š” ๊ฒฝํ—˜ ๋งŽ์€ iOS ๊ฐœ๋ฐœ์ž๊ฐ€ ์•„๋‹ˆ๋ฉฐ ์ด๋Ÿฌํ•œ ์†”๋ฃจ์…˜์„ ํ•จ๊ป˜ ํ•ดํ‚นํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋ชจ๋ฅด๋Š” ๊ฒƒ์„ ์—‰๋ง์œผ๋กœ ๋งŒ๋“ค ์—ˆ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ๋‹ค.
โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰ ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ๋ณด๊ฑฐ๋‚˜ ์Šค๋ ˆ๋“œ๋ฅผ ์Œ์†Œ๊ฑฐํ•˜์‹ญ์‹œ์˜ค.

@ntomallen ๊ธฐ๋ณธ์ ์œผ๋กœ ์ƒˆ๋กญ๊ณ  "๋” ์—„๊ฒฉํ•œ"๋นŒ๋“œ ์‹œ์Šคํ…œ์ด ์žˆ๊ณ  XCode 10์ด ๊ธฐ๋ณธ์ ์œผ๋กœ์ด๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด XCode 9์—์„œ๋Š” ์šฐ๋ฆฌ ๋ชจ๋‘๊ฐ€ ์‚ฌ์šฉํ•ด์˜จ "๋ ˆ๊ฑฐ์‹œ"๋นŒ๋“œ ์‹œ์Šคํ…œ๋ณด๋‹ค ์ ๊ทน์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋„๋ก ์„ ํƒํ•ด์•ผํ–ˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€.

ํ™•์ธ. ์ด๊ฒƒ์€ ๋ฏธ์นœ ์ง“์ž…๋‹ˆ๋‹ค. ๋ ˆ๊ฑฐ์‹œ ๋นŒ๋“œ ์‹œ์Šคํ…œ์œผ๋กœ ์ „ํ™˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๋‹ค๋ฅธ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

/Users/michaelstelly/Documents/projects/mobile_gtm/node_modules/react-native/React/../third-party/glog-0.3.4/src/base/mutex.h:105:10: fatal error: 'config.h' file not found
#include "config.h"           // to figure out pthreads support

๋‚˜๋Š” ์ด๊ฒƒ์ด ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ช…๋ฐฑํ•œ ๊ฒƒ ์™ธ์—๋Š” ํŒŒ์ผ์ด ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Xcode 10 ์ด์ „์—๋Š” ๋นŒ๋“œ ๋ฌธ์ œ๊ฐ€ ์ „ํ˜€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

@mjstelly ๋‹น์‹ ์€ 0.57์— ์žˆ์Šต๋‹ˆ๊นŒ? ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€์— glog-0.3.4 ๊ฐ€ ์–ธ๊ธ‰๋˜์–ด ์žˆ์ง€๋งŒ 0.57์€ glog-0.3.5 ํ•ฉ๋‹ˆ๋‹ค. ์ตœ์‹  ๋ฆด๋ฆฌ์Šค์—์„œ ๋ฌธ์ œ๋ฅผ ์ถ”์ ํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

@PaulMest ๋‚ด ์˜์›…! ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

์•ˆ๋…•ํ•˜์„ธ์š” @mjstelly

ํƒ€์‚ฌ์™€ ์œ ์‚ฌํ•œ ๋ฌธ์ œ์— ์ง๋ฉดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ .....
๋‚˜๋Š” xcode 10์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค

  1. /Users/ehs-mobile-app/node_modules/react-native/third-party/folly-2016.09.26.00/folly/json์— ํฌํ•จ ๋œ ํŒŒ์ผ. cpp : 17

Xcode 10.1์€ ๋‘ ์‹œ์Šคํ…œ ๋ชจ๋‘์—์„œ ์ž˜ ๋นŒ๋“œ๋˜๋Š” ๊ฒƒ ๊ฐ™์ง€๋งŒ ๋‘˜ ์ค‘ ํ•˜๋‚˜์—์„œ ๋งŽ์€ ๋นŒ๋“œ ์˜ค๋ฅ˜๋ฅผ ๋ณด๊ด€ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด์ œ ๋ฌด์—‡์„ํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ?

์ข€ ๋” ๊ตฌ์ฒด์ ์ด์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. Xcode 10์€ MacOS 10.12.6 ๋ฐ RN 0.57.0์—์„œ ์ž˜ ๋นŒ๋“œ ๋ฐ ์•„์นด์ด๋ธŒ๋ฉ๋‹ˆ๋‹ค (์ง€๊ธˆ ๊ธฐ์–ตํ•˜์ง€ ์•Š๋Š” ์ผ๋ถ€ ์˜ค๋ฅ˜๋ฅผ ํ•ด๊ฒฐ ํ•œ ํ›„).

๋‚ด Podfile post_install์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

post_install do |installer|
  installer.pods_project.targets.each do |target|
    if target.name == 'react-native-google-maps'
      target.build_configurations.each do |config|
        config.build_settings['CLANG_ENABLE_MODULES'] = 'No'
      end
    end
    if target.name == "React"
      target.remove_from_project
    end
    if target.name == 'yoga'
      target.remove_from_project
      target.build_configurations.each do |config|
          config.build_settings['GCC_TREAT_WARNINGS_AS_ERRORS'] = 'NO'
          config.build_settings['GCC_WARN_64_TO_32_BIT_CONVERSION'] = 'NO'
      end
    end
  end
end

@PaulMest ์˜ ์ œ์•ˆ์— ๋”ฐ๋ผ ๋‚˜๋ฅผ ์œ„ํ•ด ์ผํ–ˆ์Šต๋‹ˆ๋‹ค.

@njbmartin ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!
๋‹น์‹ ์˜ ์ˆ˜์ • ๋งŒ์ด ๋‚˜๋ฅผ ์œ„ํ•ด ์ผํ–ˆ์Šต๋‹ˆ๋‹ค

-UseModernBuildSystem = ์•„๋‹ˆ์š”

์ด๊ฒƒ์€ ๋‚˜๋ฅผ ์œ„ํ•ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฑธ ์ฐพ๋Š” ๋ฐ ๋„ˆ๋ฌด ์˜ค๋ž˜ ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌ.

๋ ˆ๊ฑฐ์‹œ ๋นŒ๋“œ ์‹œ์Šคํ…œ์œผ๋กœ ์ „ํ™˜ํ•˜๋ฉด ๋งŽ์€ ๋นŒ๋“œ ์˜ค๋ฅ˜๊ฐ€ ์ˆ˜์ •๋˜์ง€๋งŒ ํ–ฅํ›„ ์ตœ์‹  ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ์ถ•ํ•˜ ํ•ด์ฃผ์‹  ๋ถ„๋“ค๊ป˜ ์ฆ๊ฑฐ์šด ๊ฐ์‚ฌ๋ฅผ๋“œ๋ฆฝ๋‹ˆ๋‹ค!

์˜ˆ, ์ƒˆ ๋ฒ„์ „์€ ๋ฌผ๋ก  ์ข‹์ง€๋งŒ ๊ทธ๋ ‡๊ฒŒ ๋ถ€๋“œ๋Ÿฝ์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.
์œ„ํ—˜์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜์‹ญ์‹œ์˜ค.

@PaulMest ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ํ•ดํ‚น์ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค :)

@PaulMest ์˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธ Pods ํ”„๋กœ์ ํŠธ์˜ Targets์—์„œ Xcode์—์„œ Yoga๋ฅผ ์ˆ˜๋™์œผ๋กœ ์‚ญ์ œํ•˜๋ฉด RN 0.57 ์ด์ „์— ์ค‘๋ณต ๋Œ€์ƒ ๋นŒ๋“œ ์˜ค๋ฅ˜๋„ ๋ฐœ์ƒ์‹œํ‚จ React๋กœ ์ž‘์—…ํ–ˆ๋“ฏ์ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์ •ํ™•ํžˆ @fungilation ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์ด๊ฒƒ์€ # 19573์— ๋‚จ์•„์žˆ๋Š” ์œ ์ผํ•œ ์•Œ๋ ค์ง„ ์ฐจ๋‹จ์ œ์ž…๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์ด ์—ฌ์ „ํžˆ 0.57.8์—์„œ์ด ๋ฌธ์ œ๋ฅผ ๊ฒช๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

0.57.8 ์ดํ›„๋กœ ์ผ๋ฐ˜์ ์œผ๋กœ Xcode์— ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

@hramos ๋ถˆํ–‰ํžˆ๋„ ์•„๋‹™๋‹ˆ๋‹ค. ๋‚˜๋ฅผ ์œ„ํ•ด Xcode ๋ ˆ๊ฑฐ์‹œ ๋นŒ๋“œ ์˜ต์…˜์€ 0.57.8๊ณผ ์ƒˆ๋กœ์šด 0.58.0-rc.3 (ํŽธ์ง‘ : 0.58.3๋„ ํฌํ•จ)์—์„œ๋„ ์—ฌ์ „ํžˆ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฅผ ์žฌํ˜„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์ƒˆ๋กœ์šด ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค๊ณ  ๋กœ์ปฌ์—์„œ ํŠธ๋ž˜๋น„์Šค CI๋กœ ํ…Œ์ŠคํŠธํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜์˜ ์›๋ž˜ ํ”„๋กœ์ ํŠธ (ํ•˜์ง€๋งŒ react-native init๋กœ ๋ฐฉ๊ธˆ ์ƒ์„ฑ๋จ)์™€ travis์—์„œ ์„ฑ๊ณต์ ์ด๊ณ  ๊นจ์ง„ ๋นŒ๋“œ๋ฅผ ์—ฐ๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๋„์›€์ด ๋ ๊นŒ์š”? ์ตœ์†Œํ•œ ์ƒˆ ๋ฒ„์ „์ด ์žˆ์œผ๋ฉด์ด ์‹คํ—˜์„ ๋‹ค์‹œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@hramos yarn ios ์•„๋‹Œ detox ๋กœ ๋นŒ๋“œ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ์‹คํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค. ๋‚ด iOS ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ์˜ ๊ตฌ์„ฑ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

{
    "configurations": {
        "ios.sim.debug": {
            "binaryPath": "ios/build/Build/Products/Debug-iphonesimulator/reactipay.app",
            "build": "xcodebuild -project ios/reactipay.xcodeproj -scheme reactipay -configuration Debug -sdk iphonesimulator -derivedDataPath ios/build",
            "type": "ios.simulator",
            "name": "iPhone 6"
        },
        "android.emu.debug": {
            "binaryPath": "android/app/build/outputs/apk/debug/app-debug.apk",
            "build": "cd android && ./gradlew assembleDebug assembleAndroidTest -DtestBuildType=debug && cd ..",
            "type": "android.emulator",
            "name": "emulator-5554"
        }
    },
    "test-runner": "jest"
}

ํŠนํžˆ ์ด๊ฒƒ์„ ์‹คํ–‰ํ•˜๋ฉด xcodebuild -project ios/reactipay.xcodeproj -scheme reactipay -configuration Debug -sdk iphonesimulator -derivedDataPath ios/build ์›๋ž˜ ์˜ค๋ฅ˜๋กœ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ libReact.a & libyoga.a ์—์„œ Multiple commands produce ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.
๋‚˜๋Š” ์‚ฌ์šฉํ•˜๊ณ ์žˆ๋‹ค :

  • Xcode 10
  • ๋ฐ˜์‘ ๋„ค์ดํ‹ฐ๋ธŒ 0.57.0
  • CocoaPods

์ด๋ฅผ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•ด Podfile ์— ์ด๊ฒƒ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

  post_install do |installer|
    installer.pods_project.targets.each do |target|

      # The following is needed to ensure the "archive" step works in XCode.
      # It removes React & Yoga from the Pods project, as it is already included in the main project.
      # Without this, you'd see errors when you archive like:
      # "Multiple commands produce ... libReact.a"
      # "Multiple commands produce ... libyoga.a"

      targets_to_ignore = %w(React yoga)

      if targets_to_ignore.include? target.name
        target.remove_from_project
      end

    end
  end

๊ทธ๋Ÿฐ ๋‹ค์Œ ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ Pod ํ”„๋กœ์ ํŠธ๋ฅผ ๋‹ค์‹œ ๋นŒ๋“œํ•˜์‹ญ์‹œ์˜ค.

$ pod install

์ „์ฒด ํ™˜๊ฒฝ ์„ธ๋ถ€ ์ •๋ณด :

thnx ๋‚จ์ž!

์ผ๊ด€์„ฑ์ด ์—†์–ด ๋ณด์ด๋ฏ€๋กœ์ด ์˜ค๋ฅ˜์™€ ๋งค์šฐ ํ˜ผ๋™ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋นŒ๋“œ ๋ช…๋ น์„ 10 ๋ฒˆ ์‹คํ–‰ํ•˜๋ฉด ๊ฒฐ๊ตญ ์ž‘๋™์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ด๊ฒƒ์ด mu e2e ์Šคํฌ๋ฆฝํŠธ์˜ ๋ชจ์Šต์ž…๋‹ˆ๋‹ค.

detox build -c ios.sim.releas ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release

ํ•ด๋… ๋นŒ๋“œ๋Š” ์–ด๋””์— ์žˆ์Šต๋‹ˆ๊นŒ?

xcodebuild -project ios/deliverypoc.xcodeproj -scheme deliverypoc -configuration Release -sdk iphonesimulator -derivedDataPath ios/build

๋ฆฌ ์•กํŠธ ๋นŒ๋“œ์— ๋งค๋‹ฌ๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ๋ ˆ๊ฑฐ์‹œ ๋นŒ๋“œ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์œผ๋ฉฐ Cocoa Pod๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๋‹ค๋ฅธ ํ•ด๊ฒฐ์ฑ…์€ ๋ฌด์—‡์ผ๊นŒ์š”?
iOS๋ฅผ Cocoa๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ? ๊ทธ๊ฒƒ์ด ๊ฐ€์ ธ์˜ฌ ์˜๋ฏธ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

@ pavlof01 ํŠนํžˆ ๋ฒ„์ „ 0.57.8 ์ด์ƒ์—์„œ ์—ฌ์ „ํžˆ ๋ฐœ์ƒํ•˜๋Š” ๋ณด๊ณ ์„œ๋ฅผ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

@hramos 0.57.8 ๋ฐ 0.58.3์˜ Xcode 10.1์— ์—ฌ์ „ํžˆ ์ด๊ฒƒ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ ˆ๊ฑฐ์‹œ ๋นŒ๋“œ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹คํ–‰์„ ์‹œ๋„ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค (์ง€๊ธˆ์€ ๊ณต์‹์ ์ธ ์ˆ˜์ • ์‚ฌํ•ญ์ž…๋‹ˆ๊นŒ?). ๋Œ€์‹  name == "React" ๋˜๋Š” name == "yoga" name == "React" ๋•Œ target.remove_from_project Podfile์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. name == "yoga" . @jerolimov ๊ฐ€ ์œ„์™€ ๊ฐ™์ด Xcode 9 ๋“ฑ์„ ์‹œ๋„ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์šฐ๋ฆฌ์—๊ฒŒ ์ฐจ๋‹จ ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ์ง€๋งŒ ๋‚ด๊ฐ€ ์ฐจ์ž„ ํ• ์ง€๋ผ๋„! ๋” ๋„์›€์ด๋˜๋Š” ์ •๋ณด๋ฅผ ์ œ๊ณต ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด Lmk.

RN 0.57.8์—์„œ ๋” ์ด์ƒ ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค๊ณ  ๋งํ–ˆ์„ ๋•Œ Podfile์—์„œ๋„์ด ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

post_install do |installer|
  installer.pods_project.targets.each do |target|

    targets_to_ignore = %w(React yoga)

    if targets_to_ignore.include? target.name
      target.remove_from_project
    end

  end
end

์žŠ์–ด ๋ฒ„๋ ธ์–ด์š” ๐Ÿ˜›

@hramos 0.57.8 (๋™์ผํ•œ ์˜ค๋ฅ˜)์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ถ”๊ฐ€ ์ •๋ณด๊ฐ€ ํ•„์š”ํ•˜๋ฉด ์•Œ๋ ค์ฃผ์„ธ์š”.

๋‚˜๋Š” ํ•ด๋…์œผ๋กœ ์ด๊ฒƒ๋„ ๋งŒ๋‚ฌ์Šต๋‹ˆ๋‹ค. sdk ๋Œ€์‹  xcodebuild์— ๋Œ€์ƒ์„ ์ง€์ •ํ•˜์—ฌ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. -destination 'platform=iOS Simulator,name=iPhone 7'

์•„์นด์ด๋ธŒ ๋‹จ๊ณ„์—์„œ 0.58.3์—์„œ ๋ฐœ์ƒํ•˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด podfile์— remove_from_project ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ถ”๊ฐ€ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค. react-native info :

$ $(npm bin)/react-native info

  React Native Environment Info:
    System:
      OS: macOS 10.14
      CPU: (4) x64 Intel(R) Core(TM) i5-5257U CPU @ 2.70GHz
      Memory: 1.13 GB / 8.00 GB
      Shell: 3.2.57 - /bin/bash
    Binaries:
      Node: 11.0.0 - /usr/local/bin/node
      Yarn: 1.10.1 - /usr/local/bin/yarn
      npm: 6.4.1 - /usr/local/bin/npm
      Watchman: 4.9.0 - /usr/local/bin/watchman
    SDKs:
      iOS SDK:
        Platforms: iOS 12.1, macOS 10.14, tvOS 12.1, watchOS 5.1
      Android SDK:
        API Levels: 19, 21, 22, 23, 24, 25, 26, 27, 28
        Build Tools: 23.0.1, 25.0.0, 25.0.2, 26.0.1, 26.0.3, 27.0.3, 28.0.1, 28.0.2, 28.0.3
        System Images: android-19 | Google APIs Intel x86 Atom, android-21 | Google APIs Intel x86 Atom_64, android-22 | Google APIs Intel x86 Atom_64, android-23 | Google APIs Intel x86 Atom_64, android-24 | Google APIs Intel x86 Atom_64, android-24 | Google Play Intel x86 Atom, android-25 | Google APIs Intel x86 Atom, android-25 | Google APIs Intel x86 Atom_64, android-25 | Google Play Intel x86 Atom, android-26 | Google APIs Intel x86 Atom_64, android-27 | Google APIs Intel x86 Atom, android-27 | Google Play Intel x86 Atom, android-28 | Google APIs Intel x86 Atom_64, android-28 | Google Play Intel x86 Atom_64
    IDEs:
      Android Studio: 3.2 AI-181.5540.7.32.5056338
      Xcode: 10.1/10B61 - /usr/bin/xcodebuild
    npmGlobalPackages:
      react-native-cli: 2.0.1

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค @aaronjensen ์ด ์ด๊ฒƒ์— ๋งŽ์€ ์‹œ๊ฐ„์„ ๊ณ ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค ...

์ €๋Š” 58 ๋…„๋ถ€ํ„ฐ ๋ฌธ์ œ์—†์ด ์ƒˆ๋กœ์šด ๋นŒ๋“œ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์œ„์™€ ๊ฐ™์€ Multiple commands produce * ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์ง€๋งŒ ์ด๊ฒƒ์€ Pod๋กœ ์ „ํ™˜ํ•˜๊ธฐ ์ „์˜ ์ž”์—ฌ ๋ฌผ ๋•Œ๋ฌธ์ด์—ˆ์Šต๋‹ˆ๋‹ค (๋งํฌ). ์ด์ œ Pod๋ฅผ ์‚ฌ์šฉ์ค‘์ธ ๊ฒฝ์šฐ Xcode ํ”„๋กœ์ ํŠธ (์ƒ์„ฑ ๋œ ์ž‘์—… ๊ณต๊ฐ„ ์•„๋‹˜)์—์„œ ๋ชจ๋“  React Native ๊ด€๋ จ Linked Frameworks and Libraries ์ œ๊ฑฐํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์ •๋ฆฌํ•˜๊ณ  ํฌ๋“œ๋ฅผ ํ†ตํ•œ RN ์‚ฌ์šฉ์œผ๋กœ ์ „ํ™˜ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

image

๊ทธ๋ฆฌ๊ณ  ์ด๋ ‡๊ฒŒํ•˜์ง€ :
image

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

์˜ˆ๋ฅผ ๋“ค์–ด Detox๋ฅผ ์œ„ํ•ด xcodebuild ๋นŒ๋“œํ•˜๋Š” ๊ฒฝ์šฐ ์œ„์˜ @aaronjensen ์ œ์•ˆ์„ ๋นŒ๋“œ ๋ช…๋ น์— ์ ์šฉํ•˜์‹ญ์‹œ์˜ค.

@salakar Ive๋Š” ๋ฌธ์ œ์—†์ด ๋˜‘๊ฐ™์ดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ•œ ๊ฐ€์ง€์ฃผ์˜ ํ•  ์ ์€ pod์—†์ด ํƒ€์‚ฌ Libray๋ฅผ ์ˆ˜๋™์œผ๋กœ ์—ฐ๊ฒฐํ•˜๋ฉด React Native๋ฅผ ์ฐพ๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€์žˆ์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ชจ๋“  ๊ฒƒ์„ Pod๋กœ ์ „ํ™˜ํ•˜์‹ญ์‹œ์˜ค.

@Salakar ์˜ ์˜๊ฒฌ์— ๋”ฐ๋ผ

@cpojer IMHO react-native init ์œผ๋กœ ๊ฐ„๋‹จํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“  ํ›„ ์†”๋ฃจ์…˜์— ์ˆ˜๋™ ๋‹จ๊ณ„๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ƒˆ๋กœ์šด ์‚ฌ์šฉ์ž๊ฐ€ ๊ธฐ๋Œ€ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ Xcode๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  CocoaPods์—†์ด ์ž‘๋™ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. (CocoaPods๋Š” ํ›Œ๋ฅญํ•˜๊ณ  RN ๐Ÿ˜๊ณผ ์ž˜ ์ž‘๋™ํ•˜์ง€๋งŒ)

์•ž์—์„œ ์„ค๋ช…ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ react-native init ๋กœ ์ƒ˜ํ”Œ ์•ฑ์„ ๋งŒ๋“ค๊ณ  Travis CI์—์„œ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋นŒ๋“œ๊ฐ€ ๋ ˆ๊ฑฐ์‹œ ๋นŒ๋“œ ์‹œ์Šคํ…œ์˜ Xcode 9 ๋ฐ Xcode 10์—์„œ ์ž˜ ์ž‘๋™ ํ•จ์„ ์ž˜ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  Xcode 10 ์ƒˆ๋กœ์šด ๋นŒ๋“œ ์‹œ์Šคํ…œ์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ GitHub ์—์„œ ๋นŒ๋“œ ๊ธฐ๋ก์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์Šคํ„ฐ๋Š” ์ด๋ฏธ 0.59.0-rc.1์ด๋ฉฐ ์—ฌ์ „ํžˆ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜์˜ ๋นŒ๋“œ ๊ธฐ๋ก์€ Travis CI (๋งˆ์Šคํ„ฐ๋Š” Xcode 9์ด๊ณ  Xcode 10์—๋Š” ๋‘ ๊ฐœ์˜ ๋ธŒ๋žœ์น˜๊ฐ€ ์žˆ์Œ)์™€ GitHub Pull Request์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋งํ–ˆ๋“ฏ์ด. IMHO. ๐Ÿ˜

@jerolimov ๋นŒ๋“œ๊ฐ€ destination์„ ์ง€์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด tvOS ๋ฐ iOS ๋ชจ๋‘์— ๋Œ€ํ•œ ์•„ํ‹ฐํŒฉํŠธ ๋นŒ๋“œ๋ฅผ ์‹œ๋„ํ•˜๋ฏ€๋กœ ํ‘œ์‹œ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฏ€๋กœ ํ•„์ˆ˜๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

๋ช…ํ™•ํ•˜์ง€ ์•Š์€ ๊ฒƒ์€ RN์ด ์ˆ˜ํ–‰ ํ•  ์ˆ˜์žˆ๋Š” ์ž‘์—…์ด์žˆ์–ด โ€‹โ€‹์ƒˆ ๋นŒ๋“œ ์‹œ์Šคํ…œ์ด ์›ํ•˜๋Š” ๊ฒƒ์„ ์•”์‹œ ์ ์œผ๋กœ ์•Œ ์ˆ˜ ์žˆ๋Š”์ง€ ๋˜๋Š” ์ด๊ฒƒ์ด ์‹ค์ œ๋กœ xcode์˜ ๋ฒ„๊ทธ์ธ์ง€ (์ด ๊ฒฝ์šฐ ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ž˜๋ชป๋œ ์ €์žฅ์†Œ)์ž…๋‹ˆ๋‹ค. .

@Salakar ์˜ ์˜๊ฒฌ์„ ๊ฐ์•ˆํ•  ๋•Œ

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

Xcode์—์„œ React Native๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๋ชจ๋“  ํ•ญ๋ชฉ์„ ๋งˆ์šฐ์Šค ์˜ค๋ฅธ์ชฝ ๋ฒ„ํŠผ์œผ๋กœ ํด๋ฆญํ•˜๊ณ  (์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์ด๋“œ ๋ฐ”์˜ ํ”„๋ ˆ์ž„ ์›Œํฌ ๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์•„๋ž˜) "์ฐธ์กฐ ์ œ๊ฑฐ"๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋๋‚˜๋ฉด Linked Libraries and Frameworks ์„น์…˜์— React Native์— ๋Œ€ํ•œ ์ฐธ์กฐ๊ฐ€ ์—†๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒํ•˜๋ฉด React Native์— ์˜์กดํ•˜๋Š” ๋‹ค๋ฅธ ํƒ€์‚ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋„ Pod๋ฅผ ํ†ตํ•ด ์—ฐ๊ฒฐ๋˜์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. (๋Œ€๋ถ€๋ถ„์˜ ์ฃผ์š” ์ œํ’ˆ์ด์ด๋ฅผ ์ง€์›ํ•˜๋ฏ€๋กœ ์ข‹์Šต๋‹ˆ๋‹ค.)

๋‚˜๋Š” ํ•ด๋…์œผ๋กœ ์ด๊ฒƒ๋„ ๋งŒ๋‚ฌ์Šต๋‹ˆ๋‹ค. sdk ๋Œ€์‹  xcodebuild์— ๋Œ€์ƒ์„ ์ง€์ •ํ•˜์—ฌ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. -destination 'platform=iOS Simulator,name=iPhone 7'

@aaronjensen ์ „์ฒด ์ฝ”๋“œ๋ฅผ ์ƒ˜ํ”Œ๋กœ ์ œ๊ณตํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

"xcodebuild -project ios/AppName.xcodeproj -scheme AppName -configuration Debug -derivedDataPath ios/build -destination 'platform=iOS Simulator, name=iPhone 7'" ?

๋ฌผ๋ก , ๋‹น์‹ ์ด ๊ฐ€์ง€๊ณ ์žˆ๋Š” ๊ฒƒ์€ ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฑฐ์˜ ๋น„์Šทํ•ด ๋ณด์ž…๋‹ˆ๋‹ค.

xcodebuild -project ios/AppName.xcodeproj -scheme AppName -configuration Debug -destination 'platform=iOS Simulator,name=iPhone 7' -derivedDataPath ios/build

๋˜ํ•œ libReact.a & libyoga.a ์—์„œ Multiple commands produce ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.
๋‚˜๋Š” ์‚ฌ์šฉํ•˜๊ณ ์žˆ๋‹ค :

  • Xcode 10
  • ๋ฐ˜์‘ ๋„ค์ดํ‹ฐ๋ธŒ 0.57.0
  • CocoaPods

์ด๋ฅผ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•ด Podfile ์— ์ด๊ฒƒ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

  post_install do |installer|
    installer.pods_project.targets.each do |target|

      # The following is needed to ensure the "archive" step works in XCode.
      # It removes React & Yoga from the Pods project, as it is already included in the main project.
      # Without this, you'd see errors when you archive like:
      # "Multiple commands produce ... libReact.a"
      # "Multiple commands produce ... libyoga.a"

      targets_to_ignore = %w(React yoga)

      if targets_to_ignore.include? target.name
        target.remove_from_project
      end

    end
  end

๊ทธ๋Ÿฐ ๋‹ค์Œ ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ Pod ํ”„๋กœ์ ํŠธ๋ฅผ ๋‹ค์‹œ ๋นŒ๋“œํ•˜์‹ญ์‹œ์˜ค.

$ pod install

์ „์ฒด ํ™˜๊ฒฝ ์„ธ๋ถ€ ์ •๋ณด :

  React Native Environment Info:
    System:
      OS: macOS High Sierra 10.13.6
      CPU: x64 Intel(R) Core(TM) i9-8950HK CPU @ 2.90GHz
      Memory: 4.10 GB / 32.00 GB
      Shell: 3.2.57 - /bin/bash
    Binaries:
      Node: 10.9.0 - ~/.nvm/versions/node/v10.9.0/bin/node
      Yarn: 1.9.4 - /usr/local/bin/yarn
      npm: 6.4.1 - ~/.nvm/versions/node/v10.9.0/bin/npm
      Watchman: 4.9.0 - /usr/local/bin/watchman
    SDKs:
      iOS SDK:
        Platforms: iOS 12.0, macOS 10.14, tvOS 12.0, watchOS 5.0
    IDEs:
      Xcode: 10.0/10A255 - /usr/bin/xcodebuild
    npmPackages:
      react: 16.5.0 => 16.5.0
      react-native: 0.57.0 => 0.57.0
    npmGlobalPackages:
      create-react-native-app: 1.0.0
      react-native-cli: 2.0.1

ํ›Œ๋ฅญํ•œ ์ผ
rm -rf Pods; pod install ์ €์—๊ฒŒ ํšจ๊ณผ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

@Salakar Xcode ํ”„๋กœ์ ํŠธ์˜ Linked Frameworks and Libraries ์—์„œ ๋ชจ๋“  RCT * ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด iOS์—์„œ ์„ฑ๊ณต์ ์œผ๋กœ ๋นŒ๋“œ๋˜์ง€๋งŒ Native module cannot be null ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  libReact.a ๋ฐ ๊ธฐํƒ€ libRCT*.a ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ ํ•œ ํ›„์— ๋งŒ โ€‹โ€‹๋นŒ๋“œ๊ฐ€ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. Pods ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค๋ฅธ ์ข…์†์„ฑ์„ ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์•„๋ž˜๋Š” Podfile์˜ ๋ชจ์Šต์ž…๋‹ˆ๋‹ค.

```source ' https://github.com/CocoaPods/Specs.git '

ํ”„๋กœ์ ํŠธ๋ฅผ์œ„ํ•œ ๊ธ€๋กœ๋ฒŒ ํ”Œ๋žซํผ

ํ”Œ๋žซํผ : ios, '9.0'

CocoaPods ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋ชจ๋“  ๊ฒฝ๊ณ ๋ฅผ ์ˆ˜์‹ ํ•ฉ๋‹ˆ๋‹ค.

inhibit_all_warnings!
ํ”Œ๋Ÿฌ๊ทธ์ธ 'cocoapods-fix-react-native'

ํƒ€๊ฒŸ 'RNMobile'do
# Swift๋ฅผ ์‚ฌ์šฉ ์ค‘์ด๊ฑฐ๋‚˜ ๋™์  ํ”„๋ ˆ์ž„ ์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋‹ค์Œ ์ค„์˜ ์ฃผ์„ ์ฒ˜๋ฆฌ๋ฅผ ์ œ๊ฑฐํ•˜์‹ญ์‹œ์˜ค.
# use_frameworks!

# RNMobile ์šฉ ๊ธฐ๋ณธ ํฌ๋“œ
pod 'React', : path => '../node_modules/react-native', : subspecs => [
'ํ•ต์‹ฌ',
'CxxBridge',
'DevSupport',
# ๋‹ค์Œ์€ Xcode์˜ "Libraries"์—์„œ ๊ฐ€์ ธ์˜จ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
'RCTAnimation',
'RCTActionSheet',
'RCTBlob',
'RCTGeolocation',
'RCTImage',
'RCTLinkingIOS',
'RCTNetwork',
'RCT ์„ค์ •',
'RCTText',
'RCTVibration',
'RCTWebSocket'
]

# ๋‹ค์Œ ์˜์กด์„ฑ์€ React native ์ž์ฒด์˜ ์˜์กด์„ฑ์ž…๋‹ˆ๋‹ค.
pod 'yoga', : path => '../node_modules/react-native/ReactCommon/yoga/Yoga.podspec'
pod 'DoubleConversion', : podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec'
pod 'Folly', : podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'
pod 'glog', : podspec => '../node_modules/react-native/third-party-podspecs/GLog.podspec'

# WahedMobile ์šฉ ์ถ”๊ฐ€ ํฌ๋“œ
ํฌ๋“œ 'AppCenter / Crashes', '~> 1.13.0'
ํฌ๋“œ 'AppCenter / Analytics', '~> 1.13.0'
ํฌ๋“œ 'AppCenterReactNativeShared', '~> 1.12.0'
pod 'RNVectorIcons', : path => '../node_modules/react-native-vector-icons'
ํฌ๋“œ 'lottie-react-native', : path => '../node_modules/lottie-react-native'
ํฌ๋“œ 'lottie-ios', : path => '../node_modules/lottie-ios'
ํฌ๋“œ 'RNAWSCognito', : โ€‹โ€‹path => '../node_modules/amazon-cognito-identity-js'
pod 'TouchID', : path => '../node_modules/react-native-touch-id'
pod 'BVLinearGradient', : path => '../node_modules/react-native-linear-gradient'
pod 'RNGestureHandler', : path => '../node_modules/react-native-gesture-handler'
ํฌ๋“œ 'RNSVG', : path => '../node_modules/react-native-svg'
pod 'react-native-camera', : path => '../node_modules/react-native-camera'

ํฌ๋“œ 'CodePush', : path => '../node_modules/react-native-code-push'

ํฌ๋“œ 'RNAnalytics', : path => '../node_modules/@segment/analytics-react-native'

# Firebase ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
ํฌ๋“œ 'Firebase / Core', '~> 5.15.0'
ํฌ๋“œ 'Firebase / Messaging', '~> 5.15.0'

# Onfido Libs
pod 'Onfido', '10 .3.0 ', : configurations => ['Debug ']
pod 'Onfido-Release', '10 .3.0 ', : configurations => ['Release ']

ํฌ๋“œ 'RNKeychain', : path => '../node_modules/react-native-keychain'

์ข…๋ฃŒ
```

๋˜ํ•œ Linked Frameworks and Libraries libs๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด AppCenter์—์„œ ์ค‘๋ณต ๊ธฐํ˜ธ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

59๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ณ  ํฌ๋“œ๊ฐ€์žˆ๋Š” React ๋„ค์ดํ‹ฐ๋ธŒ ์‚ฌ์šฉ์ž๋ฅผ์œ„ํ•œ ์ฐธ๊ณ  ์ž๋ฃŒ :
์œ„์˜ @anandwahed ์†”๋ฃจ์…˜ ์œ„์— ๋‚˜๋Š” ๊ฒฐ๊ตญ 1 XCode์—์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ๋ถ„์„ํ•˜๊ณ  2๋Š” tvOS ๊ฐ€์žˆ๋Š” ๋ชจ๋“  ๋Œ€์ƒ์„ ์ˆ˜๋™์œผ๋กœ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚ด Podfile post_install์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

post_install do |installer|
  installer.pods_project.targets.each do |target|
    if target.name == 'react-native-google-maps'
      target.build_configurations.each do |config|
        config.build_settings['CLANG_ENABLE_MODULES'] = 'No'
      end
    end
    if target.name == "React"
      target.remove_from_project
    end
    if target.name == 'yoga'
      target.remove_from_project
      target.build_configurations.each do |config|
          config.build_settings['GCC_TREAT_WARNINGS_AS_ERRORS'] = 'NO'
          config.build_settings['GCC_WARN_64_TO_32_BIT_CONVERSION'] = 'NO'
      end
    end
  end
end

@PaulMest ์˜ ์ œ์•ˆ์— ๋”ฐ๋ผ ๋‚˜๋ฅผ ์œ„ํ•ด ์ผํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‹น์‹ ์˜ ์†”๋ฃจ์…˜์€ ์ €์—๊ฒŒ ํšจ๊ณผ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

https://github.com/facebook/react-native/issues/20492#issuecomment -464343895

๊ทธ๊ฒƒ๊ณผ ๋ฉ”ํŠธ๋กœ ํŒจํ‚ค์ €์˜ ์˜ค๋ž˜๋œ ์ธ์Šคํ„ด์Šค๋ฅผ ์ฃฝ์ด๋Š” ๊ฒƒ์ด ๋‚˜๋ฅผ ๋„์™”์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๊ฐ€ ์žˆ๊ณ  ์ฝ”์ฝ”์•„ ํฌ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. react-native-navigation์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ cocoapods๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ @MakhouT ๋ฐ˜์‘ - ๋„ค์ดํ‹ฐ๋ธŒ ํƒ์ƒ‰ cocoapods๋ฅผ ์‚ฌ์šฉ์—์„œ ๋‹น์‹ ์„ ์ œํ•œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค

@AngefloMusic React-native-navigation

@MakhouT ๊ทธ๋“ค์€ ์ถฉ๋Œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ react-native-navigation ์ €์žฅ์†Œ๋ฅผ ๋ณด๋ฉด podspec ํŒŒ์ผ์ด ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ ํ”„๋กœ์ ํŠธ์—์„œ ์ฝ”์ฝ”์•„ ํฌ๋“œ์™€ ํ•จ๊ป˜ RNN์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ํŒŒ์ผ์„ ๋‹ค์‹œ ์—ด์–ด์•ผํ•˜์ง€๋งŒ ๊ฐ€์žฅ ์„ ํ˜ธ๋˜๋Š” ์†”๋ฃจ์…˜ (์•„๋ž˜ Podfile ์ฐธ์กฐ)์€ ์•„์นด์ด๋ธŒ๋ฅผ ์ƒ์„ฑํ•˜๋ ค๊ณ  ํ•  ๋•Œ์ด ๊ณ ํ†ต์Šค๋Ÿฌ์šด ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.

immagine

์ด๊ฒƒ์€ ๋‚ด podfile์ž…๋‹ˆ๋‹ค

# Uncomment the next line to define a global platform for your project
platform :ios, '10.1'

target 'TVTips' do
  # Uncomment the next line if you're using Swift or would like to use dynamic frameworks
  #use_frameworks!

  # Pods for TVTips
  pod 'Firebase/Core', '~> 5.20.1'
  pod 'Firebase/Analytics', '~> 5.20.1'
  pod 'Firebase/Auth'
  pod 'GoogleSignIn', '~> 4.4.0'
  pod 'TwitterKit', '~> 3.3.0'
  pod 'React', :path => '../node_modules/react-native', :modular_headers => true
  pod 'yoga', :path => '../node_modules/react-native/ReactCommon/yoga'
  pod 'react-native-twitter-signin', :path => '../node_modules/react-native-twitter-signin'

  target 'TVTips-tvOSTests' do
    inherit! :search_paths
    # Pods for testing

    pod 'YouTubeSdk', :path => '../node_modules/react-native-youtube-sdk'

    pod 'ReactNativeLocalization', :path => '../node_modules/react-native-localization'

    pod 'RNShare', :path => '../node_modules/react-native-share'

  end

  target 'TVTipsTests' do
    inherit! :search_paths
    # Pods for testing
  end

  post_install do |installer|
    installer.pods_project.targets.each do |target|
      if target.name == "React"
        target.remove_from_project
      end

      targets_to_ignore = %w(React yoga)

      if targets_to_ignore.include? target.name
        target.remove_from_project
      end

    end
  end

end

Link Binary with ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ Linked Frameworks ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ชจ๋‘์—์„œ React๋ฅผ ๊ฐ€์ ธ ์™”์Šต๋‹ˆ๋‹ค.
๋„์›€๋ง :)

๋‚˜๋ฅผ ์œ„ํ•ด ๋‚ด๋ถ€์—์„œ ์ค‘๋ณต ๋œ ๋ฆฌ์†Œ์Šค๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ์ž‘์—…

๋นŒ๋“œ ๋‹จ๊ณ„
์˜ˆ๋ฅผ ๋“ค์–ด, Fonts์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

image

๋‚˜๋Š” ์ด๊ฒƒ์ด RN์„ Pod๋กœ ์˜ฎ๊ธด ์‚ฌ๋žŒ๋“ค ๋˜๋Š” RN> 0.60.x๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ํ•ด๊ฒฐ ๋œ ๋ฌธ์ œ๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ์•„์ง ์ค€๋น„๊ฐ€๋˜์ง€ ์•Š์•˜๊ฑฐ๋‚˜ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ๊ฒฝ์šฐ ์ด๊ฒƒ์ด ์šฐ๋ฆฌ์˜ ์ž„์‹œ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค (๊ธฐ๋ณธ์ ์œผ๋กœ React Native pbxproj ํŒŒ์ผ์—์„œ tvOS ๊ตฌ์„ฑ์„ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๋Œ€์ƒ์„ ์œ ๋ฐœํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.)

์„ค์น˜ ํ›„ ์Šคํฌ๋ฆฝํŠธ์—์„œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

const xcode = require('xcode');
const fs = require('fs');
const path = require('path');

const reactNativeProjectPath = path.resolve(__dirname, '../node_modules/react-native/React/React.xcodeproj/project.pbxproj');
const myProj = xcode.project(reactNativeProjectPath);

myProj.parse(err => {
    if (err) {
        throw err;
    }

    const nativeTargets = myProj.hash.project.objects.PBXNativeTarget;

    Object.keys(nativeTargets).forEach(nativeTargetKey => {
        const target = nativeTargets[nativeTargetKey];
        if (target.name && target.name.indexOf('-tvOS') !== -1) {
            console.log(`Removing ${target.name}:${nativeTargetKey} in React pbxproj`);
            delete nativeTargets[nativeTargetKey];
        }
    });

    fs.writeFileSync(reactNativeProjectPath, myProj.writeSync());
    console.log(`All mentioned of tvOS removed in React pbxproj`);
});

Fastlane์„ ์‚ฌ์šฉํ•˜๊ณ ์ด ๋ฌธ์ œ์— ์ง๋ฉด ํ•œ ์‚ฌ์šฉ์ž์˜ ๊ฒฝ์šฐ @PaulMest ์†”๋ฃจ์…˜์ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ํ•„์ˆ˜ ๋Œ€์ƒ์„ targets_to_ignore์— ์ถ”๊ฐ€ ํ•œ ๋‹ค์Œ Fastlane์„ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— rm -rf ios/Pods && pod install ์‹คํ–‰

๋‚˜๋ฅผ ์œ„ํ•ด ๋‚ด๋ถ€์—์„œ ์ค‘๋ณต ๋œ ๋ฆฌ์†Œ์Šค๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ์ž‘์—…

๋นŒ๋“œ ๋‹จ๊ณ„
์˜ˆ๋ฅผ ๋“ค์–ด, Fonts์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

image

@aerda ์˜ ๋‹ต๋ณ€์— ์ถ”๊ฐ€ํ•˜์—ฌ Build Phases> Copy Bundle Resources์—์„œ react-native-vector-icons์— ์‚ฌ์šฉ๋˜๋Š” ๋ชจ๋“  ๊ธ€๊ผด (.tff ํŒŒ์ผ)์„ ์ œ๊ฑฐํ–ˆ์œผ๋ฉฐ ํ”„๋กœ์ ํŠธ๊ฐ€ ํ˜„์žฌ ๋นŒ๋“œ ์ค‘์ž…๋‹ˆ๋‹ค.

๋‚ด ๊ฒฝ์šฐ์ด ์˜ค๋ฅ˜๋Š” XCode 11๋กœ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒƒ๊ณผ ๊ด€๋ จ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ๋งˆ์ง€๋ง‰ ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ๋Š” ๊ธ์ •์ ์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์˜ค๋Š˜ ์•ˆ์ •๋œ Xcode 11 (Mac 10.14.6)๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ ํ•œ ํ›„์— ๋งŒ โ€‹โ€‹์ค‘๋ณต๋˜๋Š” ๊ธ€๊ผด์— ๋Œ€ํ•ด์„œ๋„ ๋™์ผํ•˜๊ฒŒ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. Xcode ๋นŒ๋“œ ๋‹จ๊ณ„์˜ [CP] Copy Pods Resources ์„น์…˜์—์„œ ๊ธ€๊ผด์„ ์ œ๊ฑฐํ•˜๊ณ  ๋นŒ๋“œ๊ฐ€ ๋‹ค์‹œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์ƒˆ ๋นŒ๋“œ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. RN 0.60.5์—์„œ.

@fungilation ์€ ๋‚˜์™€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค (Xcode 11-์˜ค๋Š˜ ์—…๊ทธ๋ ˆ์ด๋“œ, ์ƒˆ๋กœ์šด ๋นŒ๋“œ ์‹œ์Šคํ…œ ๋ฐ RN 0.60.5). Copy Bundle Resources ์•„๋ž˜์˜ ๋ชจ๋“  ๊ธ€๊ผด์„ ์ œ๊ฑฐํ•ด์•ผํ•˜๊ณ  ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋‹ค์Œ์— pod install ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ฉด์ด ํ•ญ๋ชฉ์ด ๋‹ค์‹œ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค ๐Ÿ˜‚๏ธ

0.61.0-rc.3 ๋ฐ xcode 11 11A420a mojave 10.14.6๊ณผ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

react-native-vector-icons tff ๋งŒ ์ œ๊ฑฐํ–ˆ์œผ๋ฉฐ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  tff๋ฅผ ์‚ญ์ œํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์ด์ „ ํฌ๋“œ ์„ค์น˜ ํฌ๋“œ๋ฅผ ์‚ญ์ œํ•˜๊ณ  ์—…๋ฐ์ดํŠธ ํฌ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋‚ด podfile์— ์ถ”๊ฐ€ ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

post_install do |installer|
  installer.pods_project.targets.each do |target|
    if target.name == "React"
      target.remove_from_project
    end

    if target.name == "yoga"
      target.remove_from_project
    end
  end

  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['DEBUG_INFORMATION_FORMAT'] = 'dwarf'
    end
  end
end

์ด๊ฒƒ์€ ๋‚ด podfile์— ์ถ”๊ฐ€ ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

post_install do |installer|
  installer.pods_project.targets.each do |target|
    if target.name == "React"
      target.remove_from_project
    end

    if target.name == "yoga"
      target.remove_from_project
    end
  end

  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['DEBUG_INFORMATION_FORMAT'] = 'dwarf'
    end
  end
end

์ด ๋ช…๋ น (fastlane ์‚ฌ์šฉ)์„ ์‹œ๋„ํ–ˆ์ง€๋งŒ ์˜ค๋ฅ˜๊ฐ€ ๊ณ„์† ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ˜ข

error: Multiple commands produce '.../UninstalledProducts/iphoneos/libRNGestureHandler.a':

๋‚ด๊ฐ€ ์„ค์น˜ ํ•œ 4 ๊ฐœ์˜ ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•ด ์œ ์‚ฌํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
RNKeyChain, RNAsyncStorage, RNDeviceInfo ๋ฐ BVLinearGradient

์—ฌ๊ธฐ ๋‚ด ํ™˜๊ฒฝ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

System:
    OS: macOS 10.15.1
    CPU: (12) x64 Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz
    Memory: 1.54 GB / 16.00 GB
    Shell: 3.2.57 - /bin/bash
  Binaries:
    Node: 12.10.0 - /usr/local/bin/node
    Yarn: 1.17.3 - /usr/local/bin/yarn
    npm: 6.11.3 - /usr/local/bin/npm
    Watchman: 4.9.0 - /usr/local/bin/watchman
  SDKs:
    iOS SDK:
      Platforms: iOS 13.2, DriverKit 19.0, macOS 10.15, tvOS 13.2, watchOS 6.1
    Android SDK:
      API Levels: 23, 26, 27, 28, 29
      Build Tools: 27.0.3, 28.0.3, 29.0.1
      System Images: android-19 | Google APIs Intel x86 Atom, android-22 | Google APIs Intel x86 Atom, android-22 | Google APIs Intel x86 Atom_64, android-23 | Google APIs Intel x86 Atom, android-26 | Google APIs Intel x86 Atom, android-27 | Google Play Intel x86 Atom, android-28 | Google APIs Intel x86 Atom, android-28 | Google Play Intel x86 Atom, android-29 | Google Play Intel x86 Atom
  IDEs:
    Android Studio: 3.5 AI-191.8026.42.35.5977832
    Xcode: 11.2/11B52 - /usr/bin/xcodebuild
  npmPackages:
    react: 16.8.6 => 16.8.6 
    react-native: ^0.60.5 => 0.60.5 
  npmGlobalPackages:
    react-native-cli: 2.0.1

์•„์นจ๋ถ€ํ„ฐ ํ•ด๊ฒฐ์ฑ…์„ ์ฐพ์œผ๋ ค๊ณ  ๋…ธ๋ ฅํ–ˆ์ง€๋งŒ ์ง€๊ธˆ๊นŒ์ง€ ์•„๋ฌด๊ฒƒ๋„ ์ฐพ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ‘Ž
์—๋ฎฌ๋ ˆ์ดํ„ฐ์—์„œ ์‹คํ–‰ํ•  ๋•Œ๋„ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์˜ค๋Š˜ ์•ˆ์ •๋œ Xcode 11 (Mac 10.14.6)๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ ํ•œ ํ›„์— ๋งŒ โ€‹โ€‹์ค‘๋ณต๋˜๋Š” ๊ธ€๊ผด์— ๋Œ€ํ•ด์„œ๋„ ๋™์ผํ•˜๊ฒŒ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. Xcode ๋นŒ๋“œ ๋‹จ๊ณ„์˜ [CP] Copy Pods Resources ์„น์…˜์—์„œ ๊ธ€๊ผด์„ ์ œ๊ฑฐํ•˜๊ณ  ๋นŒ๋“œ๊ฐ€ ๋‹ค์‹œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์ƒˆ ๋นŒ๋“œ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. RN 0.60.5์—์„œ.

์ €์™€ ๊ฐ™์€ ์ดˆ๋ณด์ž : <PROJECT_FOLDER>/ios/<PROJECT_NAME>.xcodeproj/project.pbxproj ํŒŒ์ผ์„ ํŽธ์ง‘ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ธ€๊ผด ์ค„ (.ttf๋กœ ๋๋‚˜๋Š” ํŒŒ์ผ)์„ ์ฃผ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

inputPaths = ( "${PODS_ROOT}/Target Support Files/Pods-drawer2/Pods-drawer2-resources.sh", // "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf", // "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Entypo.ttf", // "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf", // "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Feather.ttf", // "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome.ttf", // "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Brands.ttf", // "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Regular.ttf", // "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Solid.ttf", // "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Fontisto.ttf", // "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Foundation.ttf", // "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Ionicons.ttf", // "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf", // "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialIcons.ttf", // "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Octicons.ttf", // "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf", // "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Zocial.ttf", ); name = "[CP] Copy Pods Resources"; outputPaths = ( // "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AntDesign.ttf", // "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Entypo.ttf", // "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EvilIcons.ttf", // "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Feather.ttf", // "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome.ttf", // "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Brands.ttf", // "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Regular.ttf", // "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Solid.ttf", // "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Fontisto.ttf", // "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Foundation.ttf", // "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Ionicons.ttf", // "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialCommunityIcons.ttf", // "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialIcons.ttf", // "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Octicons.ttf", // "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SimpleLineIcons.ttf", // "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Zocial.ttf", );

๊ทธ๋ฆฌ๊ณ  pod install ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ๋งˆ๋‹ค์ด ํ”„๋กœ์„ธ์Šค๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•ด์•ผํ–ˆ์Šต๋‹ˆ๋‹ค.

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