Por que o React (ausente) no esquema de xcode cria lista de alvos?

8

Estou tentando executar meu primeiro aplicativo React-Native em um dispositivo ios usando xcode e continuo recebendo este erro:

ld: warning: directory not found for option '-L/Users/XXXX/Library/Developer/Xcode/DerivedData/nigh-hktjvygosupgnoaafsvgyowhzsqi/Build/Products/Debug-iphoneos/React'

ld: library not found for -lReact
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Suponho que a causa esteja relacionada ao fato de o React estar ausente na lista de alvos de construção do meu esquema. O React é o primeiro da lista com todas as caixas marcadas, mas diz React (ausente) em vez de apenas React:

Captura de tela da lista de destinos de construção

Se eu clicar no botão '+' Reagir não é uma opção. Aqui está o meu podfile:

platform :ios, '10.0'

require_relative '../node_modules/react-native-unimodules/cocoapods'

target 'nigh' do
  # Pods for nigh
  pod 'React', :path => '../node_modules/react-native', :subspecs => [
    'Core',
    'CxxBridge',
    'DevSupport',
    'RCTActionSheet',
    'RCTAnimation',
    'RCTBlob',
    'RCTGeolocation',
    'RCTImage',
    'RCTLinkingIOS',
    'RCTNetwork',
    'RCTSettings',
    'RCTText',
    'RCTVibration',
    'RCTWebSocket',
  ]

  pod 'yoga', :path => '../node_modules/react-native/ReactCommon/yoga'

  pod 'DoubleConversion', :podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec'
  pod 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.podspec'
  pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'
  pod 'RNGestureHandler', :podspec => '../node_modules/react-native-gesture-handler/RNGestureHandler.podspec'
  pod 'RNReanimated', :podspec => '../node_modules/react-native-reanimated/RNReanimated.podspec'
  pod 'react-native-google-maps', path: '../node_modules/react-native-maps'  # Uncomment this line if you want to support GoogleMaps on iOS
  pod 'GoogleMaps'  # Uncomment this line if you want to support GoogleMaps on iOS
  pod 'Google-Maps-iOS-Utils' # Uncomment this line if you want to support GoogleMaps on iOS

  use_unimodules!


  pod 'RNVectorIcons', :path => '../node_modules/react-native-vector-icons'

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

  pod 'RNDeviceInfo', :path => '../node_modules/react-native-device-info'

  pod 'react-native-slider', :path => '../node_modules/@react-native-community/slider'

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

  pod 'react-native-cameraroll', :path => '../node_modules/@react-native-community/cameraroll'

  pod 'react-native-image-picker', :path => '../node_modules/react-native-image-picker'

  pod 'RNFS', :path => '../node_modules/react-native-fs'

end

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
  end
end

Tentei remover o bloco if target.name == "React" e ainda assim recebo o mesmo erro. Também estou abrindo o xcode do .xcworkspace em vez do .xcodeproject, pois estou usando cocoapods. Tentei remover tudo da pasta DerivedData e limpar a compilação e também tentei criar usando o Legacy Build System. O sistema Legacy Build mostra avisos em quase todas as bibliotecas que lêem "Destino de dependência ausente 'React'".

Eu precisava alterar o nome do meu pacote de org.reactjs.native.example.nigh para org.reactjs.native.name.nigh, então isso poderia ser responsável? Eu sei que em algum momento o React não estava faltando na lista de alvos. Apesar do React estar ausente, o aplicativo ainda funciona bem no emulador do iphone xcode.

Também no arquivo Pods / Products, libReact.a não possui um ícone como os outros arquivos .a

Alguém pode me dizer por que isso está acontecendo e / ou como consertar / contornar isso?

Ben d'Straw
fonte
Se você estiver usando o React Native mais recente, o Podfile não deve ser assim. Consulte o assistente de atualização .
Ziyo 8/11/19
Eu estou usando 0.59.10. Não há como executar o projeto em um dispositivo usando esta versão ou preciso atualizar e alterar todos os meus arquivos?
Ben d'Straw
Meu produto -> O esquema de edição é exibido como React Missing. Alguma solução para isso?
sejn 25/11/19
Acho que o problema estava realmente relacionado ao uso da Expo, já que a Expo não parece usar a versão mais recente do react native (obrigado @Ziyo). Também requer mais trabalho a longo prazo e falta alguma funcionalidade nativa; portanto, no futuro, a menos que o que estou construindo seja agradável e leve, evitarei a Expo. Acabei criando um novo projeto com o reag nat cli e tudo funciona como um relógio. Para aqueles que desejam experimentar a minha solução, reiniciando o sans Expo, selecione Início Rápido do React Native Cli em [ facebook.github.io/react-native/docs/getting-started] #
585 Ben
Estou recebendo esse erro e meu podfile é o atualizado.
pianoman102

Respostas:

-3

Corrigi esse problema acessando Preferências do sistema -> Segurança e privacidade. Na guia Privacidade, permiti ao Xcode acessar meus arquivos e pastas.

O que realmente aconteceu foi que eu atualizei meu sistema operacional para a Catalina. De alguma forma, o acesso a arquivos e pastas não é concedido ao Xcode, portanto, o xcode não pode ler o arquivo e, portanto, você recebe esse problema.

Painel Configurações para Segurança e Privacidade

Wei Qi Lam
fonte