热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Xcode抛出“atomic_notify_one<unsignedlong>”不可用

我在Mac上安装了Xcode12,尝试构建在android上完美运行的ReactNative应用程序,并获得atomic_notify_one<uns

我在 Mac 上安装了 Xcode 12,尝试构建在 android 上完美运行的 React Native 应用程序,并获得'atomic_notify_one' is unavailable. 这是我从错误中获得的最多信息。

回答


这里没有注释掉鳍状肢,而是一个对我有用的解决方案。

将 Podfile 中的鳍状肢更新为如下所示

use_flipper!({ 'Flipper-Folly' => '2.5.3', 'Flipper' => '0.87.0', 'Flipper-RSocket' => '1.3.1' })

use_flipper!({ 'Flipper-Folly' => '2.5.3', 'Flipper' => '0.87.0', 'Flipper-RSocket' => '1.3.1' })

pod repo update在 ios 文件夹中运行

最后,使用

pod install



  • 和......为什么这有效?




回答


今天iOS模拟器更新到iOS 14.5后,这个问题又出现了。“Shared S Katre”发布的答案似乎是一个很好的解决方法。

因为 React-Native 是开源代码,我认为 iOS 上的任何大更新肯定会带来突破性的变化。我想这些将在以后修复。

无论如何 - 问题似乎确实与 Flipper 有关,它用作 RN 的调试工具(https://reactnative.dev/blog/2020/03/26/version-0.62)。

如果你只需要构建你的项目,你可以简单地在你的 podfile 中注释掉flipper,然后像这样重新安装你的pod。

播客文件

# Enables Flipper.
#
# Note that if you have use_frameworks! enabled, Flipper will not work and
# you should disable the next line.
# use_flipper!()

接下来,重新安装您的 Pod。我进入了项目的根目录并使用了 npx。

$ npx pod-install

最后,尝试构建和运行您的项目:

$ npx react-native run-ios

更新:

根据评论,看起来现在已经修复了。如果你想要鳍状肢,你应该能够恢复你的 Podfile 并更新鳍状肢。

参见:https : //stackoverflow.com/a/67314652/9906042

感谢堆垛机!





回答




  1. 修复 Podfile 如下图所示

  2. 光盘

  3. 删除 Pods 文件夹和 Podfile.lock

  4. 吊舱安装

  5. 豆荚更新

  6. cd .. && npx react-native run-ios




  • I don&#039;t think this is the best solution, as other people might be using the Flipper dev tools. This solution is better as it updates the library to include the upstream fix: https://stackoverflow.com/a/66876338/4160784




回答


我必须#ifdef FB_SONARKIT_ENABLED在 AppDelegate.m 中评论所有内容,将 hermes 设置为 false 并在 Podfile 中评论 Flipper。

毕竟删除Pods和Podfile.lock,然后pod install



  • Your suggestion to disable hermes `:hermes_enabled => false` was what I was missing in order to get to work. Hopefully an update will come out soon. Thanks!




回答


如果有人仍然出现此错误(我刚刚更新了 Mac、Xcode 等),您可以在不禁用 Flipper 和 Hermes 的情况下修复构建;在您的 Pod 文件中post_install添加(我在网络上的某个地方找到了它并更改了它以修复最新更新的新错误):

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> *)modules", "_initializeModules:(NSArray *)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

在您的 之前target,添加

# 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



  • if the above throws error `Permission denied @ rb_sysopen - Pods/Flipper-Folly/folly/synchronization/DistributedMutex-inl.h` then removing `Pods` folder fixes it




回答


此错误是鳍状肢的错误。Flipper 抛出了更多描述性较低的错误,我不得不在我的 podfile 中对其进行评论。评论后,这个错误停止了。



  • Yes it is working without flipper and i am able to debug it then what is use of flipper in react native ?




回答


刚刚评论了这一行并解决了这个问题-

# use_flipper!
# post_install do |installer|
# flipper_post_install(installer)
# end





回答


在 XCode 12.5 中构建时我遇到了同样的问题。如果暂时禁用 Flipper 不适合您,您可以降级到 XCode 12.4。这为我修好了。你可以在这里下载 XCode 12.4:https : //developer.apple.com/download/more





回答


我认为@opensw 提供的答案会起作用,但我找到了一些更强大的解决方案,以便它每次都可以与 pod install 一起使用,而不会删除Pods文件夹。首先,在您的 Podfile 中更改添加/替换这一行

现在在上面几行中提到的最新版本中修复了一个问题,Flipper-folly

但是我们还需要处理 RCT-folly,为此,我们将使用该find_and_replace功能。这是我从这里得到的新功能

# 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

现在从安装后调用这个函数,所以我们需要在里面添加以下 2 个函数调用 post_install do |installer|

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)")

这是我在Github 上的回答






推荐阅读
  • Android与JUnit集成测试实践
    本文探讨了如何在Android项目中集成JUnit进行单元测试,并详细介绍了修改AndroidManifest.xml文件以支持测试的方法。 ... [详细]
  • importjava.io.*;importjava.util.*;publicclass五子棋游戏{staticintm1;staticintn1;staticfinalintS ... [详细]
  • Flutter 核心技术与混合开发模式深入解析
    本文深入探讨了 Flutter 的核心技术,特别是其混合开发模式,包括统一管理模式和三端分离模式,以及混合栈原理。通过对比不同模式的优缺点,帮助开发者选择最适合项目的混合开发策略。 ... [详细]
  • 腾讯云移动推送TPNS(Tencent Push Notification Service)为APP开发者和运营人员提供了一站式、高效、稳定的推送解决方案,帮助提升用户活跃度和运营效率。 ... [详细]
  • feat: Enhances Jest Testing Capabilities with Snapshot Support ... [详细]
  • 本文源自极分享,详细内容请参阅原文。技术债务如同信用卡负债,随着时间推移,修复成本会越来越高,因此程序员必须对此有深刻认识。此外,团队应致力于培养一种持续维护和优化代码的文化,以减少技术债务的累积。 ... [详细]
  • 二维码的实现与应用
    本文介绍了二维码的基本概念、分类及其优缺点,并详细描述了如何使用Java编程语言结合第三方库(如ZXing和qrcode.jar)来实现二维码的生成与解析。 ... [详细]
  • 本文通过C++语言实现了一个递归算法,用于解析并计算数学表达式的值。该算法能够处理加法、减法、乘法和除法操作。 ... [详细]
  • 问题描述现在,不管开发一个多大的系统(至少我现在的部门是这样的),都会带一个日志功能;在实际开发过程中 ... [详细]
  • 本文详细介绍了iOS应用的生命周期,包括各个状态及其转换过程中的关键方法调用。 ... [详细]
  • 解决Visual Studio Code中PHP Intelephense误报问题
    PHP作为一种高度灵活的编程语言,其代码结构可能导致Intelephense插件在某些情况下报告不必要的错误或警告。自1.3.3版本起,Intelephense引入了多个配置选项,允许用户根据具体的工作环境和编程风格调整这些诊断信息的显示。 ... [详细]
  • 深入解析WebP图片格式及其应用
    随着互联网技术的发展,无论是PC端还是移动端,图片数据流量占据了很大比重。尤其在高分辨率屏幕普及的背景下,如何在保证图片质量的同时减少文件大小,成为了亟待解决的问题。本文将详细介绍Google推出的WebP图片格式,探讨其在实际项目中的应用及优化策略。 ... [详细]
  • c语言二元插值,二维线性插值c语言
    c语言二元插值,二维线性插值c语言 ... [详细]
  • 深入解析:React与Webpack配置进阶指南(第二部分)
    在本篇进阶指南的第二部分中,我们将继续探讨 React 与 Webpack 的高级配置技巧。通过实际案例,我们将展示如何使用 React 和 Webpack 构建一个简单的 Todo 应用程序,具体包括 `TodoApp.js` 文件中的代码实现,如导入 React 和自定义组件 `TodoList`。此外,我们还将深入讲解 Webpack 配置文件的优化方法,以提升开发效率和应用性能。 ... [详细]
  • 投融资周报 | Circle 达成 4 亿美元融资协议,唯一艺术平台 A 轮融资超千万美元 ... [详细]
author-avatar
只为-娱乐
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有