J'ai installé Xcode 12 sur mon Mac, essayé de construire mon application native React qui s'exécute parfaitement sur Android, et Get 'atomic_notify_one
. Ceci est le plus d'informations que j'obtiens de l'erreur.
14 Réponses :
Cette erreur était une erreur de Flipper. Flipper a lancé plusieurs erreurs descriptives plus que je devais la commenter sur mon podfile. Après avoir commenté, cette erreur s'est arrêtée.
Oui, cela fonctionne sans flipper et je suis en mesure de le déboguer, alors qu'est-ce que l'utilisation de Flipper in React Native?
@Khurshidansari ce n'est pas nécessaire. Il s'agit essentiellement d'un ensemble d'outils de débogage comme Log Viewer, StackTrace Finder
Je ne pense pas que ce soit la meilleure solution, car d'autres personnes pourraient utiliser les outils Flipper Dev. Cette solution est meilleure car elle met à jour la bibliothèque pour inclure le correctif en amont: stackoverflow.com/a/66876338/4160784
Vous devez commenter le code de flipper dans PodFile:
use_flipper! post_install do |installer| flipper_post_install(installer) end
Ce problème s'est reproduit aujourd'hui après que les simulateurs iOS ont été mis à jour vers iOS 14.5. La réponse publiée par "Shared S Katre" semble être une bonne conduite.
Parce que React-Native est le code open source, je pense que toutes les grandes mises à jour sur iOS peuvent certainement provoquer des changements de rupture. J'imagine que ceux-ci seront réparés plus tard.
Quoi qu'il en soit - le problème semble être avec Flipper, qui sert d'outil de débogage pour RN ( https://rectnative.dev/blog/2020/03/26/version-0.62 ).
Si vous Il suffit de faire construire votre projet, vous pouvez simplement commenter les flipper dans votre podfile et réinstaller vos pods comme ça.
podfile
$ npx react-native run-ios
Ensuite, réinstallez vos pods. I Cd'd dans la racine du projet et utilisé NPX.
$ npx pod-install
Enfin, essayez de construire et d'exécuter votre projet:
# Enables Flipper. # # Note that if you have use_frameworks! enabled, Flipper will not work and # you should disable the next line. # use_flipper!()
Mise à jour:
Selon les commentaires, il semble que cela ait été corrigé maintenant. Si vous voulez des flipper, vous devriez pouvoir revenir à votre podfile et mettre à jour le flipper.
Voir: https: // stackoverflow.com/a/67314652/9906042
Merci Stackers!
Voici le problème GitHub pertinent de Flipper - on dirait qu'ils travaillent pour mettre en place une solution dès que possible. github.com/facebook/flipper/issues/2215
Il y a un patch disponible pour cela maintenant avec Flipper -Folly 2.5.3 github.com/ Facebook / Flipper / Issues / 2215 # émetteur-8288152 00
Je dois commenter tout #ifdef fb_sonarkit_enabled
dans appdelegate.m, définissez Hermes sur false et commentaire flipper dans podfile.
Après tout, supprimez les pods et podfile.lock, puis Pod Installer
Votre suggestion de désactiver Hermes : hermes_enabled => false
était ce qui me manquait pour me rendre au travail. Espérons qu'une mise à jour sortira bientôt. Merci!
J'avais : hermes_enabled => true
et j'avais également besoin de le changer en : hermes_enabled => false
. J'ai fait pod install - update-repo
après et il l'a dixérément dix. Merci
J'ai eu le même problème lors de la construction dans Xcode 12.5. Si la désactivation temporaire de flipper n'est pas une option pour vous, vous pouvez se rétablir à Xcode 12.4. Cela l'a corrigé pour moi. Vous pouvez télécharger xcode 12.4 ici: https://developer.apple.com/download/more < / p>
Salut @Benoit Votre solution est la seule chose qui a fonctionné sans modifier aucun code ou dépendance. Xcode 12.5 affichait n nombre d'erreurs l'une après l'autre même après les avoir corrigées, mais la rétrogradation de Xcode 12.4 a pu exécuter l'application sans aucune modification. Merci beaucoup pour cette merveilleuse suggestion.
Si quelqu'un a toujours cette erreur (je viens de mettre à jour Mac, Xcode, etc.), vous pouvez réparer la construction sans désactiver Flipper et Hermès; Dans votre fichier pod sous post_install
ajoutez simplement (je l'ai trouvé quelque part sur le Web et je l'ai changé pour corriger de nouvelles erreurs avec les dernières mises à jour):
# fixes for last Mac updates def find_and_replace(dir, findstr, replacestr) Dir[dir].each do |name| text = File.read(name) replace = text.gsub(findstr,replacestr) if text != replace puts "Fix: " + name File.open(name, "w") { |file| file.puts replace } STDOUT.flush end end Dir[dir + '*/'].each(&method(:find_and_replace)) end
avant votre cible
, ajouter
post_install do |installer| flipper_post_install(installer) react_native_post_install(installer) # # to build for the simulator on Apple M1 # installer.pods_project.targets.each do |target| # target.build_configurations.each do |config| # # disables arm64 builds for the simulator # config.build_settings['EXCLUDED_ARCHS[sdk=iphonesimulator*]'] = 'arm64' # end # end ## Fix for XCode 12.5 & RN 0.62.2 - See https://github.com/facebook/react-native/issues/28405 find_and_replace("../node_modules/react-native/React/CxxBridge/RCTCxxBridge.mm", "_initializeModules:(NSArray<id<RCTBridgeModule>> *)modules", "_initializeModules:(NSArray<Class> *)modules") find_and_replace("../node_modules/react-native/ReactCommon/turbomodule/core/platform/ios/RCTTurboModuleManager.mm", "RCTBridgeModuleNameForClass(strongModule))", "RCTBridgeModuleNameForClass(Class(strongModule)))") ## Fix for Flipper-Folly on iOS 14.5 find_and_replace("Pods/Flipper-Folly/folly/synchronization/DistributedMutex-inl.h", "atomic_notify_one(state)", "folly::atomic_notify_one(state)") find_and_replace("Pods/Headers/Private/RCT-Folly/folly/synchronization/DistributedMutex-inl.h", "atomic_notify_one(state)", "folly::atomic_notify_one(state)") find_and_replace("Pods/Flipper-Folly/folly/synchronization/DistributedMutex-inl.h", "atomic_wait_until(&state, previous | data, deadline)", "folly::atomic_wait_until(&state, previous | data, deadline)") end
Si l'erreur ci-dessus lance l'erreur l'autorisation refusée @ RB_SYSOPEN - pods / flipper-folly / folly / synchronisation / distributionmutex-in l.h
puis supprimer pods
le dossier le corrige
Seul celui-ci a fonctionné pour moi! Merci! Supprimer le fichier de pods avant d'exécuter un stalle de pod
Le 19 mai, les 3 derniers remplacements ne sont plus nécessaires, ne laissez plus que les 2 premiers appels find_and_replace avant ## Correction pour Flipper-Folly sur iOS 14.5 commentaire.
J'obtiens cette erreur: méthode non définie `flipper_post_install 'pour #
Au lieu de commenter Flipper, voici une solution qui a fonctionné pour moi.
Mettez à jour le flipper dans votre podfile pour ressembler à ceci
use_flipper!({ 'Flipper-Folly' => '2.5.3', 'Flipper' => '0.87.0', 'Flipper-RSocket' => '1.3.1' })
Exécuter repo pod Mise à jour
à l'intérieur du dossier iOS
Et enfin, mettez à jour vos pods de projet à l'aide de
Pod Install
Absolument, cela a fonctionné pour moi sans sacrifier Flipper. Que toi.
Cela a fonctionné, merci. Au moins le développement iOS n'est pas plein de complexité inutile ou quoi que ce soit.
Ce paramètre a fonctionné pour moi avec xcode 13.0: use_flipper! ({'Flipper' => '0,96.0', 'flipper-folly' => '~> 2.6', 'flipper-rsocket' => '~> 1.4 '})
où ajouter cette ligne?
@Faizulhassan après section permissions_path
.
Cela seul n'a pas résolu le problème pour moi. A pris quelques heures, mais finalement ce m'a aidé ( chaque étape)
Je pense que la réponse fournie par @opensensw fonctionnera, mais j'ai trouvé quelque chose de plus amélioré afin qu'il fonctionne avec Pod Installer à chaque fois sans supprimer le dossier Maintenant dans les dernières versions mentionnées dans les lignes ci-dessus résout un problème avec le Appelez maintenant cette fonction à partir du post-install, nous devrons donc ajouter les 2 appels de fonction suivants à l'intérieur pods
.
Tout d'abord, modifiez Ajouter / remplacer cette ligne dans votre podfile flipper-folly
Mais nous devons également prendre soin du RCT-FOLLY et pour cela, nous utiliserons la fonction find_and_replace
.
Voici la nouvelle fonction que j'ai obtenue de la ici / p> find_and_replace("Pods/RCT-Folly/folly/synchronization/DistributedMutex-inl.h",
"atomic_notify_one(state)", "folly::atomic_notify_one(state)")
find_and_replace("Pods/RCT-Folly/folly/synchronization/DistributedMutex-inl.h",
"atomic_wait_until(&state, previous | data, deadline)", "folly::atomic_wait_until(&state, previous | data, deadline)")
post_install do | installateur |
# Define find-and-replace function
def find_and_replace(dir, findstr, replacestr)
Dir[dir].each do |name|
text = File.read(name)
replace = text.gsub(findstr,replacestr)
replaced = text.index(replacestr)
if replaced == nil && text != replace
puts "Fix: " + name
File.open(name, "w") { |file| file.puts replace }
STDOUT.flush
end
end
Dir[dir + '*/'].each(&method(:find_and_replace))
end
pour développer un peu les réponses Umang et OpenSW.
J'ai mis à jour find_and_replace comme suivant. Remarque, j'ai ajouté System ("CHMOD + W" + Name)
qui corrige l'autorisation refusée @ RB_SYSOPEN ERREUR.
post_install do |installer| flipper_post_install(installer) react_native_post_install(installer) find_and_replace("Pods/RCT-Folly/folly/synchronization/DistributedMutex-inl.h", " atomic_notify_one(state);", " folly::atomic_notify_one(state);") end
vient de commenter cette ligne et a résolu ce problème-
# use_flipper! # post_install do |installer| # flipper_post_install(installer) # end
Remplacez tout le code de flipper actuel dans votre podfile par cette base sur votre version native React:
cd ios && pod install && cd ..
ou
use_flipper!({ 'Flipper-Folly' => '2.5.3', 'Flipper' => '0.87.0', 'Flipper-RSocket' => '1.3.1' })
puis mettez à jour pour Project de pods en utilisant ceci:
add_flipper_pods!({ 'Flipper-Folly' => '2.5.3', 'Flipper' => '0.87.0', 'Flipper-RSocket' => '1.3.1' })
J'ai eu ce même problème à mettre à niveau un projet de RN 0,63 à 0,64 (et en utilisant Xcode 12.5), mais la réponse le mieux votée n'a pas résolu le problème pour moi, et je tenais à éviter les scripts supplémentaires. P >
J'ai remarqué dans le Mettez à niveau Helper Quelques modifications dans le podfile - en particulier le changement de flipper_post_install (installateur)
à react_native_post_install (installateur)
. J'ai fait ce changement et blitz mon répertoire PODS, puis j'ai exécuté pod install --repo-update
et cela l'a corrigé pour moi :)
J'ai également remarqué un correctif exécuté pour le fichier Distributedmutex
(qui était le fichier en question) après l'installation des pods, il me semble donc que ce devrait être le correctif correct p >
bonus : Cela m'a également permis de supprimer l'ancien script flipper_post_install
que j'avais en haut de mon podfile à partir d'une mise à niveau précédente
Remplacez atomic_nofiy_one par folie :: atomic_notify_one, le podfile complet est un coup:
platform :ios, '9.0' require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules' def add_flipper_pods! version = '~> 0.33.1' pod 'FlipperKit', version, :configuration => 'Debug' pod 'FlipperKit/FlipperKitLayoutPlugin', version, :configuration => 'Debug' pod 'FlipperKit/SKIOSNetworkPlugin', version, :configuration => 'Debug' pod 'FlipperKit/FlipperKitUserDefaultsPlugin', version, :configuration => 'Debug' pod 'FlipperKit/FlipperKitReactPlugin', version, :configuration => 'Debug' end # Post Install processing for Flipper def flipper_post_install(installer) installer.pods_project.targets.each do |target| if target.name == 'YogaKit' target.build_configurations.each do |config| config.build_settings['SWIFT_VERSION'] = '4.1' end end end end target 'AwesomeProject' do # Pods for AwesomeProject pod 'FBLazyVector', :path => "../node_modules/react-native/Libraries/FBLazyVector" pod 'FBReactNativeSpec', :path => "../node_modules/react-native/Libraries/FBReactNativeSpec" pod 'RCTRequired', :path => "../node_modules/react-native/Libraries/RCTRequired" pod 'RCTTypeSafety', :path => "../node_modules/react-native/Libraries/TypeSafety" pod 'React', :path => '../node_modules/react-native/' pod 'React-Core', :path => '../node_modules/react-native/' pod 'React-CoreModules', :path => '../node_modules/react-native/React/CoreModules' pod 'React-Core/DevSupport', :path => '../node_modules/react-native/' pod 'React-RCTActionSheet', :path => '../node_modules/react-native/Libraries/ActionSheetIOS' pod 'React-RCTAnimation', :path => '../node_modules/react-native/Libraries/NativeAnimation' pod 'React-RCTBlob', :path => '../node_modules/react-native/Libraries/Blob' pod 'React-RCTImage', :path => '../node_modules/react-native/Libraries/Image' pod 'React-RCTLinking', :path => '../node_modules/react-native/Libraries/LinkingIOS' pod 'React-RCTNetwork', :path => '../node_modules/react-native/Libraries/Network' pod 'React-RCTSettings', :path => '../node_modules/react-native/Libraries/Settings' pod 'React-RCTText', :path => '../node_modules/react-native/Libraries/Text' pod 'React-RCTVibration', :path => '../node_modules/react-native/Libraries/Vibration' pod 'React-Core/RCTWebSocket', :path => '../node_modules/react-native/' pod 'React-cxxreact', :path => '../node_modules/react-native/ReactCommon/cxxreact' pod 'React-jsi', :path => '../node_modules/react-native/ReactCommon/jsi' pod 'React-jsiexecutor', :path => '../node_modules/react-native/ReactCommon/jsiexecutor' pod 'React-jsinspector', :path => '../node_modules/react-native/ReactCommon/jsinspector' pod 'ReactCommon/callinvoker', :path => "../node_modules/react-native/ReactCommon" pod 'ReactCommon/turbomodule/core', :path => "../node_modules/react-native/ReactCommon" pod 'Yoga', :path => '../node_modules/react-native/ReactCommon/yoga', :modular_headers => true 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' target 'AwesomeProjectTests' do inherit! :complete # Pods for testing end use_native_modules! # Enables Flipper. # # Note that if you have use_frameworks! enabled, Flipper will not work and # you should disable these next few lines. add_flipper_pods! post_install do |installer| flipper_post_install(installer) ## Fix for XCode 12.5 beta find_and_replace("../node_modules/react-native/React/CxxBridge/RCTCxxBridge.mm", "_initializeModules:(NSArray<id<RCTBridgeModule>> *)modules", "_initializeModules:(NSArray<Class> *)modules") find_and_replace("../node_modules/react-native/ReactCommon/turbomodule/core/platform/ios/RCTTurboModuleManager.mm", "RCTBridgeModuleNameForClass(strongModule))", "RCTBridgeModuleNameForClass(Class(strongModule)))") find_and_replace("Pods/Flipper-Folly/folly/synchronization/DistributedMutex-inl.h", " atomic_notify_one(state);", " folly::atomic_notify_one(state);") end end target 'AwesomeProject-tvOS' do # Pods for AwesomeProject-tvOS target 'AwesomeProject-tvOSTests' do inherit! :search_paths # Pods for testing end end def find_and_replace(dir, findstr, replacestr) Dir[dir].each do |name| text = File.read(name) replace = text.gsub(findstr,replacestr) if text != replace puts "Fix: " + name File.open(name, "w") { |file| file.puts replace } STDOUT.flush end end Dir[dir + '*/'].each(&method(:find_and_replace)) end