React-native: Depois de atualizar para reagente nativo 0,59, a compilação do iOS falha

Criado em 13 mar. 2019  ·  69Comentários  ·  Fonte: facebook/react-native

🐛 Relatório de Bug

Depois de atualizar para react-native 0,59 e tentar construir o aplicativo para iOS, recebo o seguinte erro:

Não foi possível encontrar o arquivo de entrada da compilação: '/app/node_modules/react-native/ReactCommon/yoga/yoga/YGFloatOptional.cpp'

O que é estranho para mim é que também não consigo encontrar este arquivo aqui no mestre atual: react-native/tree/master/ReactCommon/yoga/yoga (apenas YGFloatOptional.h )

Reproduzir

Atualizamos um projeto de médio porte de 0,57,7 → 0,59.

Comportamento esperado

O build deve funcionar perfeitamente como antes.

Meio Ambiente

  React Native Environment Info:
    System:
      OS: macOS 10.14.3
      CPU: (12) x64 Intel(R) Core(TM) i7-8850H CPU @ 2.60GHz
      Memory: 2.95 GB / 32.00 GB
      Shell: 3.2.57 - /bin/bash
    Binaries:
      Node: 10.15.1 - /var/folders/1r/ymkpxdlj21lb638kzp4jxvwm0000gn/T/yarn--1552463658468-0.20119758467048565/node
      Yarn: 1.13.0 - /var/folders/1r/ymkpxdlj21lb638kzp4jxvwm0000gn/T/yarn--1552463658468-0.20119758467048565/yarn
      npm: 6.4.1 - /usr/local/Cellar/node@10/10.15.1/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: 23, 24, 25, 27, 28
        Build Tools: 23.0.1, 23.0.3, 24.0.1, 25.0.0, 27.0.3, 28.0.3
        System Images: android-24 | ARM 64 v8a, android-24 | ARM EABI v7a, android-24 | Intel x86 Atom_64, android-28 | Google APIs Intel x86 Atom, android-28 | Google Play Intel x86 Atom_64
    IDEs:
      Android Studio: 3.3 AI-182.5107.16.33.5264788
      Xcode: 10.1/10B61 - /usr/bin/xcodebuild
    npmPackages:
      react: 16.8.3 => 16.8.3
      react-native: 0.59.0 => 0.59.0
Bug Follow Up iOS Locked

Comentários muito úteis

Eu tenho o mesmo problema ..., toda vez que há algum problema com upgrades no reagir nativo tão cansado ..

Todos 69 comentários

Acabei de reproduzir esse problema com o XCode: 10.1 e RN 0.59.0.

EDIT 1 : Eu poderia reproduzir com a ferramenta de construção XCode UI; mas está funcionando bem com react-native run-ios (certifique-se de ter o cli 2.x mais recente).
EDIT 2 : Consegui fazer funcionar com o XCode 10.1 habilitando a compilação legada . Relacionado a # 19573

Hmm, acabei de atualizar de 0.58.4 para 0.59 , limpei os diretórios de compilação no XCode e consegui executar a depuração e arquivar o aplicativo. Estou usando o XCode 10.1.
Minha estratégia de atualização:

  1. Bump dependências de acordo com a versão estável mais recente.
  2. Percorra cada comparação em https://github.com/react-native-community/rn-diff-purge e aplique-a manualmente.

Quer saber se tudo poderia funcionar para mim porque eu estava trabalhando 0.58.4 e apenas apliquei coisas novas em cima dele?

EDITAR: Também executei npm ci para remover meu node_modules (apenas para ter certeza) e ainda consegui criar o aplicativo no XCode 🤔

EDIT2: E eu não tenho YGFloatOptional.cpp :
Screen Shot 2019-03-13 at 12 55 51

Estou tendo o mesmo problema ao atualizar de 0.57.8 -> 0.59.1.
Olhando para um init 0.59.1 novo, não há nenhum arquivo YGFloatOptional.cpp .

Adicione estas linhas ao seu Podfile:

  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'

e corra

pod install

@jpudysz Sim, funcionou depois de migrar para cocoapod e abrir o projeto XCode com o arquivo .xcworkspace .
Tive de react-native unlink e react-native link bibliotecas em ponte para que usassem Podfile .

A vinculação legada (sem cocoapod) deve ser descontinuada?

@jpudysz Funcionou para mim também. Certamente esta não pode ser a solução adequada, certo? Isso incha seriamente o projeto. Pods/boost-for-react-native tem 160,8 MB.

Edit: Ok, seriamente estranho, eu removi os 3 pods, executei o Clean no Xcode e tentei construir. Desta vez, não recebi um erro ao compilar o Yoga.

Obrigado @jpudysz . Seguindo sua solução, recebo o seguinte erro:
Arquivo 'folly / Portability.h' não encontrado em JSBundleType.h

Alguém sabe o que está acontecendo?

Muito Obrigado.

Depois de tentar o que parecia ser quase tudo, RN standard upgrade, git upgrade tool, aplicando diff patch, acabei recriando um projeto completamente novo e fazendo o trabalho extremamente tedioso de reconstruir a base de código. Eles dizem que vai ser melhor a partir de 0,59 .. espero que eles estejam certos sobre isso

Acabei de atualizar de 0.59.0 para 0.59.1 e funcionou para mim
resolveu o problema do Yoga

Eu atualizei também, mas sem sorte até agora.

Eu tinha exatamente o mesmo problema. O bom e velho rm -rf node_modules && npm i e limpar as pastas de compilação fizeram isso por mim

Depois de usar npm audit fix , meu 'react-native' é atualizado automaticamente para a versão 0.59 e eu não consigo construir meu projeto.
Solução : Faça downgrade da versão para diminuir uma.
npm install react-native@<version>
exemplo: npm install [email protected]

Eu tentei atualizar do 0.58.4 manualmente (seguindo as alterações do rn-diff-purge), mas também estou enfrentando esse problema com o RN 0.59.0 ou 0.59.1

Sim, tínhamos YGFloatOptional.cpp até 0,58 https://github.com/facebook/react-native/blob/0.58-stable/ReactCommon/yoga/yoga/YGFloatOptional.cpp

O que diabos está acontecendo aqui?

Editar
A solução de @jpudysz me leva a outro arquivo não encontrado, erro 'folly/Portability.h' file not found

Tive o mesmo problema com 'folly / Portability.h' após atualizar de 0.58.4 para 0.59.0 e 0.59.1

O que é estranho, é que o XCode informa depois de compilar que Portability.h não foi encontrado, mas no editor, ele obtém todos os tipos definidos no cabeçalho ...

image

O arquivo que não consegue compilar é RCTJavasScriptLoader.mm na biblioteca React.


CompileC /Users/xxx/Projects/xxx/ios/build/xxx/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/React.build/Objects-normal/x86_64/RCTJavaScriptLoader.o /Users/xxx/Projects/xxx/node_modules/react-native/React/Base/RCTJavaScriptLoader.mm normal x86_64 objective-c++ com.apple.compilers.llvm.clang.1_0.compiler (in target: React)
    cd /Users/xxx/Projects/xxx/ios/Pods
    export LANG=en_US.US-ASCII
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -x objective-c++ -arch x86_64 -fmessage-length=0 -fdiagnostics-show-note-include-stack -fmacro-backtrace-limit=0 -std=c++14 -stdlib=libc++ -fobjc-arc -fobjc-weak -fmodules -fmodules-cache-path=/Users/xxx/Projects/xxx/ios/build/xxx/ModuleCache.noindex -fmodules-prune-interval=86400 -fmodules-prune-after=345600 -fbuild-session-file=/Users/xxx/Projects/xxx/ios/build/xxx/ModuleCache.noindex/Session.modulevalidation -fmodules-validate-once-per-build-session -Wnon-modular-include-in-framework-module -Werror=non-modular-include-in-framework-module -Wno-trigraphs -fpascal-strings -O0 -fno-common -Wno-missing-field-initializers -Wno-missing-prototypes -Werror=return-type -Wdocumentation -Wunreachable-code -Wno-implicit-atomic-properties -Werror=deprecated-objc-isa-usage -Wno-objc-interface-ivars -Werror=objc-root-class -Wno-arc-repeated-use-of-weak -Wimplicit-retain-self -Wno-non-virtual-dtor -Wno-overloaded-virtual -Wno-exit-time-destructors -Wduplicate-method-match -Wno-missing-braces -Wparentheses -Wswitch -Wunused-function -Wno-unused-label -Wno-unused-parameter -Wunused-variable -Wunused-value -Wempty-body -Wuninitialized -Wconditional-uninitialized -Wno-unknown-pragmas -Wno-shadow -Wno-four-char-constants -Wno-conversion -Wconstant-conversion -Wint-conversion -Wbool-conversion -Wenum-conversion -Wno-float-conversion -Wnon-literal-null-conversion -Wobjc-literal-conversion -Wshorten-64-to-32 -Wno-newline-eof -Wno-selector -Wno-strict-selector-match -Wundeclared-selector -Wdeprecated-implementations -Wno-c++11-extensions -DPOD_CONFIGURATION_DEBUG=1 -DDEBUG=1 -DCOCOAPODS=1 -DOBJC_OLD_DISPATCH_PROTOTYPES=0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator12.1.sdk -fasm-blocks -fstrict-aliasing -Wprotocol -Wdeprecated-declarations -Winvalid-offsetof -mios-simulator-version-min=9.0 -g -Wno-sign-conversion -Winfinite-recursion -Wmove -Wcomma -Wblock-capture-autoreleasing -Wstrict-prototypes -Wrange-loop-analysis -Wno-semicolon-before-method-body -Wunguarded-availability -fobjc-abi-version=2 -fobjc-legacy-dispatch -index-store-path /Users/xxx/Projects/xxx/ios/build/xxx/Index/DataStore -iquote /Users/xxx/Projects/xxx/ios/build/xxx/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/React.build/React-generated-files.hmap -I/Users/xxx/Projects/xxx/ios/build/xxx/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/React.build/React-own-target-headers.hmap -I/Users/xxx/Projects/xxx/ios/build/xxx/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/React.build/React-all-non-framework-target-headers.hmap -ivfsoverlay /Users/xxx/Projects/xxx/ios/build/xxx/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/React.build/all-product-headers.yaml -iquote /Users/xxx/Projects/xxx/ios/build/xxx/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/React.build/React-project-headers.hmap -I/Users/xxx/Projects/xxx/ios/build/xxx/Build/Products/Debug-iphonesimulator/React/include -I/Users/xxx/Projects/xxx/ios/Pods/Headers/Private -I/Users/xxx/Projects/xxx/ios/Pods/Headers/Private/React -I/Users/xxx/Projects/xxx/ios/Pods/Headers/Public -I/Users/xxx/Projects/xxx/ios/Pods/Headers/Public/React -I/Users/xxx/Projects/xxx/ios/Pods/Headers/Public/yoga -I/Users/xxx/Projects/xxx/node_modules/react-native/ReactCommon -I/Users/xxx/Projects/xxx/ios/build/xxx/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/React.build/DerivedSources/x86_64 -I/Users/xxx/Projects/xxx/ios/build/xxx/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/React.build/DerivedSources -F/Users/xxx/Projects/xxx/ios/build/xxx/Build/Products/Debug-iphonesimulator/React -DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -include /Users/xxx/Projects/xxx/ios/Pods/Target\ Support\ Files/React/React-prefix.pch -MMD -MT dependencies -MF /Users/xxx/Projects/xxx/ios/build/xxx/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/React.build/Objects-normal/x86_64/RCTJavaScriptLoader.d --serialize-diagnostics /Users/xxx/Projects/xxx/ios/build/xxx/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/React.build/Objects-normal/x86_64/RCTJavaScriptLoader.dia -c /Users/xxx/Projects/xxx/node_modules/react-native/React/Base/RCTJavaScriptLoader.mm -o /Users/xxx/Projects/xxx/ios/build/xxx/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/React.build/Objects-normal/x86_64/RCTJavaScriptLoader.o






In file included from /Users/xxx/Projects/xxx/node_modules/react-native/React/Base/RCTJavaScriptLoader.mm:12:
/Users/xxx/Projects/xxx/node_modules/react-native/ReactCommon/cxxreact/JSBundleType.h:

info fatal error:

'folly/Portability.h' file not found

 #include <folly/Portability.h>
          ^~~~~~~~~~~~~~~~~~~~~
 1 error generated.

Eu tenho o mesmo problema ..., toda vez que há algum problema com upgrades no reagir nativo tão cansado ..

O arquivo parece ter sido excluído do projeto de ioga desde 13 de dezembro de 2018 e "embutido" em yoga/YGFloatOptional.h : https://github.com/facebook/yoga/commit/96d93f29826257ff6e9bb6c19211adb423029c29

Meu palpite é que a referência a ReactCommon/yoga/yoga/YGFloatOptional.cpp não é mais necessária.

Remover o cache e reconstruir o projeto não funcionou para mim imediatamente.

Tentei atualizar para o React Native 0.59.1 e reconstruir o projeto. Também não funcionou.

No entanto, ENTÃO, limpar meus node_modules, armazenar em cache e criar pastas e reconstruir o projeto funcionou, usando:

rm -rf $TMPDIR/react-* && rm -rf $TMPDIR/metro-* && rm -rf $TMPDIR/haste-* && watchman watch-del-all && npm cache clean --force && npm cache verify && rm -rf ios/build && rm -rf node_modules/ && npm i

Então, parece que está relacionado ao cache.

Atualizar para React Native 0.59.1 talvez não seja necessário, acho que uma parte do script funcionou para mim.

Espero que isso ajude outras pessoas!

Desisti, apaguei todos os links para node_modules do arquivo Pods, em seguida, apaguei node_modules e o diretório de compilação e reinstalei tudo, e finalmente compilado com sucesso novamente.

Isso é tão exaustivo.

@jvandenaardweg Acho que você está certo ao dizer que é um problema de cache.

Para mim, o que funcionou foi excluir a pasta de dados derivados do meu Xcode e reiniciar o Xcode.
rm -rf ~/Library/Developer/Xcode/DerivedData

Assim que reiniciei, tentei construir e ela falhou e me pediu para fechar e reabrir meu espaço de trabalho xcode. Depois de fazer isso, tentei construir novamente e funcionou.

Certo pessoal, acho que esse problema geralmente é sobre problemas de cache de construção com a atualização (lendo as postagens) - então, se vocês tiverem problemas, acho que geralmente podem ser corrigidos:

  • Limpeza de dados derivados no Xcode
  • rm -rf node_modules; rm -rf Pods depois reinstale
  • Usando react-native upgrade x.y.z

Isso é praticamente o mesmo para todas as versões, aposto. Eu talvez tentasse criar um problema no react-native-cli sobre como melhorar isso e talvez executar alguns dos comandos em si.

Alguém tem uma etapa de reprodução específica para isso?

Eu também estava vendo o erro #include <folly/Portability.h> . O problema no meu caso estava faltando subespecificações no podfile.

Ele funciona bem para mim com:

  pod 'React', :path => '../node_modules/react-native', :subspecs => [
    'Core',
    'CxxBridge', # Include this for RN >= 0.47
    'DevSupport', # Include this to enable In-App Devmenu if RN >= 0.43
    'RCTText',
    'RCTNetwork',
    'RCTWebSocket', # needed for debugging
    'RCTImage',
    'RCTWebSocket', # Needed for debugging
    'RCTAnimation', # Needed for FlatList and animations running on native UI thread
    # Add any other subspecs you want to use in your project
  ]

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

  # Third party deps podspec link
  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'

"Entre o react-native 0.57.8 e 0.58.5, há uma grande mudança que foi adicionada ao projeto Xcode é que você tem que adicionar JavaScriptCore.Framework ao Linked FrameWorks and Libraries" - a partir daqui

MAIS

@jvandenaardweg resposta:

rm -rf $TMPDIR/metro-* && rm -rf $TMPDIR/haste-* && watchman watch-del-all && npm cache clean --force && npm cache verify && rm -rf ios/build && rm -rf node_modules/ && npm i

Fez o trabalho para mim.

É realmente frustrante, como outros disseram, precisar adivinhar o que está quebrando um código que estava funcionando antes.

Também no Android, tive que atualizar a versão Build Gradle para funcionar novamente.

precisando adivinhar

Sabemos que a atualização tem sido uma dor de longa data para a comunidade, portanto, a partir da v0.59, introduzimos um novo fluxo por meio da nova CLI .

Dito isso, estamos escrevendo as mudanças mais recentes no changelog e na guia de lançamentos, então não há necessidade de adivinhação real.

De qualquer forma, encerrando, já que isso está claramente relacionado à atualização - também, em geral, você pode usar o rn-diff-repo para verificar todos os passos necessários durante a atualização.

Olá,

Depois de muito pesquisar, consegui entender por que tinha esse problema. Limpar o cache e tudo mais não corrigiu o problema para mim e eu ainda estava tendo o #include.

Estava compilando bem para o projeto React em meu projeto, mas falhando ao compilar para os pods que tenho.

Mesmo depois de adicionar os pods Folly / glog / DoubleConversion, eu ainda estava tendo o problema.

Em seguida, alterei o arquivo React.podspecs para editar a subespecificação do núcleo

Depois de adicionar a referência Folly ao pod_target_xcconfig, ele estava compilando sem nenhum outro problema.

ss.pod_target_xcconfig  = { "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/ReactCommon\"  \"$(PODS_ROOT)/Folly\"" }

E aqui está o podfile completo que tenho

ENV['COCOAPODS_DISABLE_STATS'] = 'true'

target 'CryptoReact' do
  platform :ios, '9.0'

  pod 'CodePush', :path => '../node_modules/react-native-code-push'
  pod 'Firebase/Core', '~> 5.14.0'


  pod 'react-native-sqlite-storage', :path => '../node_modules/react-native-sqlite-storage'
  pod 'yoga', :path => '../node_modules/react-native/ReactCommon/yoga/yoga.podspec'
  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 'react-native-randombytes', :path => '../node_modules/react-native-randombytes'
  pod 'RNVectorIcons', :path => '../node_modules/react-native-vector-icons'
  pod 'react-native-splash-screen', :path => '../node_modules/react-native-splash-screen'
  pod 'RNLocalize', :path => '../node_modules/react-native-localize/ios'
  pod 'react-native-camera', :path => '../node_modules/react-native-camera'
  pod 'RNPermissions', :path => '../node_modules/react-native-permissions'
  pod 'react-native-keep-awake', :path => '../node_modules/react-native-keep-awake'
  pod 'SwiftyJSON', '4.2.0'
  pod 'Charts', '3.1.1' 
  pod 'Fabric', '~> 1.9.0'
  pod 'Crashlytics', '~> 3.12.0'
  pod 'Firebase/Performance', '~> 5.14.0'
  pod 'Firebase/Auth', '~> 5.14.0'
  pod 'lottie-ios', :path => '../node_modules/lottie-ios'
  pod 'lottie-react-native', :path => '../node_modules/lottie-react-native'
  pod 'react-native-webview', :path => '../node_modules/react-native-webview'
  pod 'RNScreens', :path => '../node_modules/react-native-screens'
  pod 'ReactNativeExceptionHandler', :podspec => '../node_modules/react-native-exception-handler/ReactNativeExceptionHandler.podspec'
  pod 'RCTRestart', :path => '../node_modules/react-native-restart/ios'
  pod 'react-native-version-number', :path => '../node_modules/react-native-version-number'
  pod 'RNBackgroundFetch', :path => '../node_modules/react-native-background-fetch'

  pod 'React', :path => '../node_modules/react-native', :subspec => [
    'Core',
    'ART',
    'cxxreact',
    'CxxBridge', # Include this for RN >= 0.47
    'DevSupport', # Include this to enable In-App Devmenu if RN >= 0.43
    'RCTText',
    'RCTNetwork',
    'RCTWebSocket', # needed for debugging
    'RCTImage',
    'RCTWebSocket', # Needed for debugging
    'RCTAnimation', # Needed for FlatList and animations running on native UI thread
    'RCTPushNotification',
    # Add any other subspecs you want to use in your project
  ]
end

swift4 = ['Charts']

post_install do |installer|
installer.pods_project.targets.each do |target|
  target.build_configurations.each do |config|
    if swift4.include?(target.name)
      config.build_settings['SWIFT_VERSION'] = '4.1'
    end
  end
end
end

Estou na mesma situação. Eu atualizei de 0,57 para 0,59 seguindo o diff nativo e tudo funcionou perfeitamente até que eu atualizei 0,58,6 para 0,59.

Tentei de tudo neste tópico sem sorte, o erro do arquivo 'folly / Portability.h' não encontrado simplesmente não quer desaparecer.

Reverter para 0.58.6 funciona perfeitamente, mas no momento em que atualizo para 0.59.0 ou 0.59.1, o erro aparece.

Edit: encontrei o arquivo em node_modules / react-native / third-party / folly-2018.10.22.00 / folly / Portability.h, mas ainda diz que não está lá.

Percebi que minha postagem ficou muito confusa ... Desculpe por isso. Aqui está o arquivo diff que deve torná-lo mais explícito para pessoas que têm problemas com 'folly / Portability.h'

Tente fazer a seguinte modificação no arquivo nodes_modules / react-native / React.podspec, pelo menos no meu caso funcionou! Agora posso compilar meu projeto e iniciá-lo sem problemas.

diff --git a/node_modules/react-native/React.podspec b/node_modules/react-native/React.podspec

s.subspec "Core" do |ss|
[...]
     ss.header_dir           = "React"
     ss.framework            = "JavaScriptCore"
     ss.libraries            = "stdc++"
-    ss.pod_target_xcconfig  = { "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/ReactCommon\"" }
+    ss.pod_target_xcconfig  = { "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/ReactCommon\"  \"$(PODS_ROOT)/Folly\"" }
   end

Fazendo o que @aaska disse mais adicionando
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'

para o Podfile e a instalação do pod funcionou para mim.

Depois de usar as dicas @jpudysz , @jvandenaardweg e @johnryan , ele também foi
Obrigado rapazes!

@ th3ac3 que resolveu o problema para mim. Obrigado!

nenhum deles funcionou

@jvandenaardweg Acho que você está certo ao dizer que é um problema de cache.

Para mim, o que funcionou foi excluir a pasta de dados derivados do meu Xcode e reiniciar o Xcode.
rm -rf ~/Library/Developer/Xcode/DerivedData

Assim que reiniciei, tentei construir e ela falhou e me pediu para fechar e reabrir meu espaço de trabalho xcode. Depois de fazer isso, tentei construir novamente e funcionou.

Obrigado, eu fiz isso e funcionou novamente.

Então, depois de seguir a atualização de diff para 59,4 (usando rn-diff-purge ), ainda tive os mesmos problemas que todos aqui (erro YGFloatOptional.cpp primeiro, e depois o erro folly/Portability.h ). No entanto, nenhuma das soluções funcionou sozinha, então isso é o que fiz para resolver os problemas:

# Clean caches/build folder/existing pods
rm -rf node_modules
rm -rf ~/Library/Developer/Xcode/DerivedData
rm -rf ios/build
rm -rf ios/Pods

# Reinstall deps
npm install

Em seguida, atualizei meu Podfile para o seguinte:

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

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

  pod 'React', :path => '../node_modules/react-native', subspecs: [
    # Comment out any unneeded subspecs to reduce bundle size.
    'Core',
    'CxxBridge', # --> I was missing Cxxbridge here, may have resolved the issue for me as well
    'DevSupport',
    'RCTActionSheet',
    'RCTAnimation',
    'RCTBlob',
    'RCTCameraRoll',
    'RCTGeolocation',
    'RCTImage',
    'RCTNetwork',
    'RCTPushNotification',
    'RCTSettings',
    'RCTTest',
    'RCTText',
    'RCTVibration',
    'RCTWebSocket',
    'RCTLinkingIOS'
  ]

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

  # Third party --> This bit is also new
  pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'


end

Depois disso, reinstalei os pods

cd ios
pod install

Só então o projeto começou a ser construído com sucesso novamente

No meu caso, simplesmente esqueci de fazer o passo:

se você for um desenvolvedor iOS, precisará vincular manualmente JavaScriptCore.framework ao atualizar; Isso pode ser feito via Xcode e seguindo as etapas mostradas aqui.

exemplo

depois que eu fiz isso, o xcode apenas compila ok

Nenhuma das opções acima funcionou para mim

verifique isso: https://github.com/facebook/react-native/issues/18408#issuecomment -386696744
resolveu o problema para mim.

coloque isso no console -> xcrun -k --sdk iphoneos --show-sdk-path
se a resposta for
xcrun: _ erro: SDK "iphoneos" não pode ser localizado
xcrun: erro: SDK "iphoneos" não pode ser localizado
xcrun: erro: não foi possível pesquisar o item 'Caminho' no SDK 'iphoneos'

em seguida, coloque este sudo xcode-select --switch /Applications/Xcode.app

Em seguida, instale o pod novamente

Essa resposta funcionou para mim. Além de todas as coisas mencionadas acima neste tópico, eu precisava reabrir o terminal que meu bundler metro estava executando.

rebaixe para "react-native": "0.57.4", e funcionará novamente

rebaixe para "react-native": "0.57.4", e funcionará novamente

Não acho que fazer downgrade para esta versão seja a melhor maneira @miukki. Esta versão (0,59) traz suporte de 64 bits para aplicativos Android e você precisa disso como um requisito futuro para publicar aplicativos (informações aqui ).

Ei, depois de abordar todas as soluções acima, peguei outro erro

ld: aviso: diretório não encontrado para a opção '-F / Users / pumeo / Library / Developer / Xcode / DerivedData / GreenPlanet-cekcooliietupofcqlsnkupeolal / Build / Products / Debug-iphonesimulator / React'
ld: framework não encontrado React
clang: erro: o comando do linker falhou com o código de saída 1 (use -v para ver a chamada)

quando eu inseri o post_install

alguém pode ajudar por favor?
Estou usando hackintosh

@ Pumeo1010 , mantenha-se no tópico.

No tópico: se esse problema for fechado, qual é a resolução? Eu tentei tudo acima e fiz funcionar de alguma forma (não sei o que funcionou). Agora eu tive que reconstruir e me deparei com o mesmo problema mais uma vez e tudo o que eu tento não consegue mais fazer funcionar.

Atualização: finalmente consegui funcionar de novo! Não tenho certeza, mas acho que remover os dados derivados do Xcode, remover Podfile.lock, remover / reinstalar o pods-dir, limpar a pasta de compilação do Xcode e reiniciar o sistema acabou resolvendo o problema.

Estou tentando atualizar o React Native quase dois dias de 0.57.8 para 0.59.9. Eu tentei todas as soluções acima deste comentário, mas ainda obtive os mesmos erros. Símbolos duplicados, cabeçalhos não encontrados, YGFloatOptional.cpp não encontrado .... Criei um novo projeto React Native e copiei meus arquivos de projeto existentes para o novo projeto e apliquei as diferenças com a ajuda de rn-diff-purge . Novamente dessa forma, eu obtive muitos erros de compilação diferentes e finalmente desisti! Eu amo v0.57.8

Então, depois de seguir a atualização de diff para 59,4 (usando rn-diff-purge ), ainda tive os mesmos problemas que todos aqui (erro YGFloatOptional.cpp primeiro, e depois o erro folly/Portability.h ). No entanto, nenhuma das soluções funcionou sozinha, então isso é o que fiz para resolver os problemas:

# Clean caches/build folder/existing pods
rm -rf node_modules
rm -rf ~/Library/Developer/Xcode/DerivedData
rm -rf ios/build
rm -rf ios/Pods

# Reinstall deps
npm install

Em seguida, atualizei meu Podfile para o seguinte:

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

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

  pod 'React', :path => '../node_modules/react-native', subspecs: [
    # Comment out any unneeded subspecs to reduce bundle size.
    'Core',
    'CxxBridge', # --> I was missing Cxxbridge here, may have resolved the issue for me as well
    'DevSupport',
    'RCTActionSheet',
    'RCTAnimation',
    'RCTBlob',
    'RCTCameraRoll',
    'RCTGeolocation',
    'RCTImage',
    'RCTNetwork',
    'RCTPushNotification',
    'RCTSettings',
    'RCTTest',
    'RCTText',
    'RCTVibration',
    'RCTWebSocket',
    'RCTLinkingIOS'
  ]

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

  # Third party --> This bit is also new
  pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'


end

Depois disso, reinstalei os pods

cd ios
pod install

Só então o projeto começou a ser construído com sucesso novamente

@Hless Hi. Tentei sua solução. Aqui está o meu Podfile

target '..' do
   # this is very important to have!
   rn_path = '../node_modules/react-native'
   pod 'yoga', path: "#{rn_path}/ReactCommon/yoga/yoga.podspec"
   pod 'React', path: rn_path, subspecs: [
     'Core',
     'CxxBridge',
     'RCTActionSheet',
     'RCTAnimation',
     'RCTGeolocation',
     'RCTImage',
     'RCTLinkingIOS',
     'RCTNetwork',
     'RCTSettings',
     'RCTText',
     'RCTVibration',
     'RCTWebSocket'
   ]

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

   pod 'AppCenter/Crashes', '~> 1.12.0'
   pod 'AppCenter/Analytics', '~> 1.12.0'
   pod 'AppCenterReactNativeShared', '~> 1.11.0'
   pod 'Fabric'
   pod 'Crashlytics'
  # Uncomment the next line if you're using Swift or would like to use dynamic frameworks
  # use_frameworks!

  platform :ios, '9.0'
  pod 'react-native-webview', :path => '../node_modules/react-native-webview'
  pod 'react-native-document-picker', :path => '../node_modules/react-native-document-picker'

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

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

  pod 'rn-fetch-blob', :path => '../node_modules/rn-fetch-blob'

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

  pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'

end

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

Mas desta vez a construção falha devido ao erro de símbolos duplicados. Eu encontrei essa solução e agora ela foi construída com sucesso. Mas agora tenho outro problema. Depois de executar o aplicativo, ele trava imediatamente. Eu encontrei o motivo do erro na área de depuração do Xcode e é
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[RCTRootView reactTag]: unrecognized selector sent to instance 0x7fbf02c05530'
a solução para este problema é o oposto da outra solução. Que história de atualização ruim. :(

Finalmente eu construí com sucesso o projeto iOS e o executei no simulador sem erros após trabalhar duro no progresso da atualização. Primeiro apliquei diffs com a ajuda de rn-diff-purge depois apliquei a solução nesta solução eu os consertei e agora o projeto está funcionando corretamente.

Resolvido com o seguinte:

rm -rf node_modules
rm -rf ios/Pods
rm ios/Podfile.lock 
rm -rf ~Library/Developer/Xcode/DerivedData

Então eu reinstalei minhas dependências (npm e pod) e funcionou :)

rm -rf ~ Library / Developer / XCode / DerivedData

a linha certa será: rm -rf ~/Library/Developer/Xcode/DerivedData

Toda vez que encontro um problema complicado com RN me dando alguma mensagem de erro sem sentido, eu saio em uma busca desesperada no github por soluções. Na maioria das vezes, a solução é excluir o cache, excluir os dados derivados, reabrir o Xcode, limpar as pastas de construção etc. Ao longo dos anos, montei este script bash que adicionei como um script npm em meu package.json. Agora, minha primeira solução de ir para a maioria dos problemas é npm run clear .

// package.json
{
  "scripts": {
    "clear": ". scripts/Clear.sh",
  }
}
// scripts/Clear.sh
#!/bin/bash

echo "rm -rf ios/build..."
rm -rf ios/build

echo "rm -rf android/app/build..."
rm -rf android/app/build

echo "Removed all Xcode derived data..."
rm -rf ~/Library/Developer/Xcode/DerivedData

echo "rm -rf lib... (for Flow)"
rm -rf lib

echo "watchman watch-del-all..."
watchman watch-del-all

echo "rm -rf node_modules..."
rm -rf node_modules

echo "npm install..."
npm install

echo "rm -rf $TMPDIR/react-*..."
rm -rf $TMPDIR/react-*

echo "rm -rf $TMPDIR/haste-map-react-native-packager-*..."
rm -rf $TMPDIR/haste-map-react-native-packager-*

PS. E também resolveu este problema para mim: D

apenas pod install funcionou para mim

por favor. Xcode 10.1 rebaixado

Outro react-native link me ajudou. :(

React Native é insustentável, 100 resoluções oferecidas para cada bug que alguém encontra. Uma mudança e todo o processo de construção, clichê e razão para usar o react native se desintegram. Como as empresas podem realmente adicionar esse processo de desenvolvimento a um pipeline de produtos. ridículo!!!!

Eles dizem que vai ser melhor a partir de 0,59 .. espero que eles estejam certos sobre isso

@philipaarseth Espero que você tenha

Já vi isso em outros tópicos antes, mas executar o seguinte resolveu o problema para mim:

cd node_modules/react-native/scripts
./ios-install-third-party.sh

Pensei que isso tivesse sido corrigido no 0.59 ou antes e lembro-me de vê-lo rodando automaticamente em algumas compilações, mas parece que ainda há casos em que está faltando.

Definitivamente, vale a pena incluir na seção de solução de problemas do seu projeto, já que esta não é a primeira vez que vejo isso acontecendo.

Execute este comando: $ conda deactivate

@jpudysz obrigado, funciona para mim. mas por que erro de compilação de rn ioga tem relacionamento com folly / glog / doubleConversion?

meu log de erros é:
Os seguintes comandos produziram problemas de analisador:
Analise /Users/superqa/jenkins/workspace/xxxxx-xxxx-iOS-new/node_modules/react-native/ReactCommon/yoga/yoga/Yoga.cpp normal arm64
Analisar Base / RCTModuleMethod.mm normal arm64
(2 comandos com problemas de analisador)

O Android funciona perfeitamente, apenas iOS ... :-(

A única solução promissora pode ser o downgrade da versão RN, infelizmente

Fica bastante difícil quando há muitas dependências de terceiros.

no meu caso, o Xcode apenas fez uma atualização automática e produziu esse problema.
o que fiz para resolver o problema foi:
cd ios
rm -fr Pods
rm Podfile.lock
pod instalar

reinstalar os pods e o Podfile resolveu meu problema

Excluir dados derivados
cd ios
remova Pods e Podfile.lock
pod instalar

Eu fiz todas as etapas acima, fiz a compilação funcionar e agora recebo este erro. FWIW Estou atualizando do Xcode 10.1 -> 11.1 E estou atualizando o react nativo de 0.57.8 -> 0.59.9

dyld: Library not loaded: @rpath/XCTest.framework/XCTest
  Referenced from: /Users/par/Library/Developer/CoreSimulator/Devices/2B68242E-D2AF-49A4-9AEA-C320820D8D2F/data/Containers/Bundle/Application/E665681B-C213-42C0-9A51-746B4CA17599/Kismet.app/Kismet
  Reason: image not found

editar: Removi o RCTTest do podfile e ficou bom depois disso.

Eu também estava vendo o erro #include <folly/Portability.h> . O problema no meu caso estava faltando subespecificações no podfile.

Ele funciona bem para mim com:

  pod 'React', :path => '../node_modules/react-native', :subspecs => [
    'Core',
    'CxxBridge', # Include this for RN >= 0.47
    'DevSupport', # Include this to enable In-App Devmenu if RN >= 0.43
    'RCTText',
    'RCTNetwork',
    'RCTWebSocket', # needed for debugging
    'RCTImage',
    'RCTWebSocket', # Needed for debugging
    'RCTAnimation', # Needed for FlatList and animations running on native UI thread
    # Add any other subspecs you want to use in your project
  ]

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

  # Third party deps podspec link
  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'

Eu tive um problema para instalar o glog, acabei tendo que emitir este comando sudo xcode-select --switch /Applications/Xcode.app/ certeza porque eu estava executando o Xcode de um diretório diferente, então o movi para o meu diretório / Applications, e o conjunto de ferramentas estava todo confuso .

@jenskuhrjorgensen seu rm está removendo todo o $ TMPDIR por causa de um espaço que você tem nele.

@ jduffy7 Isso é provavelmente um pouco exagero 😄 Thx, foi corrigido!

@jenskuhrjorgensen Obrigado !!!!!

Executar pod update funcionou para mim.

Qualquer atualização .. ?

As soluções acima não funcionaram, as seguintes ajudaram meu projeto a construir novamente.

cd ios
pod repo update
pod update

Depois de executar esses comandos, fui capaz de construir no xcode, mas não usando react-native run-ios . Em seguida, executei esses comandos (obrigado https://github.com/facebook/react-native/issues/23886#issuecomment-509528212):

rm -rf ios/build
rm -rf ~/Library/Developer/Xcode/DerivedData
watchman watch-del-all
rm -rf node_modules
npm install

que me ajudou a construir usando react-native run-ios novamente.

@khanguslee eu faço isso, mas infelizmente não vai construir

e obteve este erro

* FALHA NA CONSTRUÇÃO *

Os seguintes comandos de compilação falharam:
PhaseScriptExecution [CP] Check Pods Manifest.lock /../ios/build/music/Build/Intermediates.noindex/music.build/Debug-iphonesimulator/music.build/Script-C5D676D55145145333E00AC9.sh
(1 falha)

Mostrando todas as mensagens
: -1: O sandbox não está sincronizado com o Podfile.lock. Execute 'pod install' ou atualize a instalação do CocoaPods.

O sandbox não está sincronizado com o Podfile.lock. Execute 'pod install' ou atualize a instalação do CocoaPods.

Uma rápida pesquisa no Google com sua mensagem de erro me dá uma solução aqui.

Esta página foi útil?
0 / 5 - 0 avaliações