在 Xcode 中出现错误,在构建和存档期间找不到 libReactNativeLocalization.a 中的此类文件或目录

Getting error in Xcode no such file or directory found with libReactNativeLocalization.a during build and archive

我在 Xcode 尝试构建或归档我的 react-native 项目时遇到问题。 Xcode 抛出类似 no such file or directory: '/Users/...../DerivedData/myproject/Build/Products/Debug-iphonesimulator/libReactNativeLocalization.a'.

的错误

当我 运行 react-native run-ios 或处于发布模式 react-native run-ios --configuration Release 时,它工作得很好,但是当我尝试从 Xcode 构建或归档它时,它是抛出错误。

  1. 我正在使用 Xcode 版本 10
  2. 我的react-native版本是0.57.4
  3. iOS开发目标是9.0
  4. react-native-localization版本为2.0.3

尝试过一些对我不起作用的东西

  1. 完全删除了 node_modules 和 pods,运行 npm installpod install 对我不起作用。

  2. 在菜单文件 --> 工作区设置中将构建系统从使用共享系统更改为旧版构建系统。在这种特殊情况下,应用程序已成功构建和存档,但当我午餐时我的应用程序在启动画面后崩溃。

  3. 完全删除派生数据并再次重建仍然出现此错误。

  4. 如果我从我的项目中完全删除 react-native-localization 那么所有的东西都工作正常,我能够构建和归档项目。

当我们 运行 react-native link react-native-localization 命令时,它也会应用 ios 应用程序上的更改,这在我们的案例中造成了问题。因此,由于此命令,它会在 project_name → ios → podfile (podfile)

中创建一个条目

由于这一行,ReactNativeLocalization 指向 project_name/node_modules/react-native-localization 目录,当我们 运行 pod install 命令时,此包中的一个依赖项 React 将在您的 pods 中重新安装正如您在此图片中看到的那样。(as you can see here)

按照以下步骤解决此问题

  • react-native link react-native-localization 命令后导航到 project_name → ios → podfile 并删除或评论 pod ‘ReactNativeLocalization’, :path => ‘../node_modules/react-native-localization’
  • 现在是时候从 Xcode 手动到 link react-native-localization 库了。所以要link这个库手动打开project_name→ios→project_name.xcworksace文件在Xcode和select 你的目标。
  • 之后,在项目导航器中右键单击库,然后 select 将文件添加到“...”,然后导航到 project_name → node_modules → react-native-localization and select ReactNativeLocalization.xcodeproj file.
  • 现在导航到项目 Target → Build Phase 并展开 Link Binary With Library 然后点击加号图标和添加 libReactNativeLocalization.a 库

我从早上开始就被这个问题困住了。一个简单的 hack 使我的构建成为可能。

我观察到文件夹 Xcode/DerivedData/MyProject/Build/Products/Debug-iphonesimulator/ lib 文件正在其文件夹中生成。即 libLinearGradient.a 在 libLinearGradient 中。

一个成功排列的 .a 文件没有它的文件夹,所以我对所有 .a 文件都做了同样的事情。 (只需将它们放在没有文件夹的外面即可。)

所以现在路径变成了 Xcode/DerivedData/MyProject/Build/Products/Debug-iphonesimulator/libLinearGradient.a 而不是 Xcode/DerivedData/MyProject/Build/Products/Debug-iphonesimulator/libLinearGradient/libLinearGradient.a