React-native-onesignal: 未找到 React-native 0.60 -lPods-OneSignalNotificationExtension

创建于 2019-09-02  ·  20评论  ·  资料来源: OneSignal/react-native-onesignal

描述:

我已升级到 React-native 0.60 并遵循 onesignal 安装步骤,如下所示: https ://documentation.onesignal.com/docs/react-native-sdk-setup

当我开始运行 xcode 应用程序时,出现与 OnesignalNotificationExtension 相关的错误。
错误ld: library not found for -lPods-OneSignalNotificationServiceExtension

OneSignalNotificationServiceExtension目标具有以下设置:

  • 标题搜索路径: "${PODS_ROOT}/Headers/Public/react-native-onesignal"
  • 框架搜索路径: "${PODS_ROOT}/OneSignal/iOS_SDK/OneSignalSDK/Framework"

环境

  • react-native-onesignal 版本:3.3.2
  • 反应原生:0.60.5

重现问题的步骤:

  1. 遵循 RN 设置: https :
  2. 运行 xcode 项目
  3. 期待看到: ld: library not found for -lPods-OneSignalNotificationServiceExtension
Help Wanted

最有用的评论

将 RN 版本升级到 0.63.2 并尝试存档应用程序时,我遇到了同样的问题,我得到了修复
这样。

这是我在 Podfile 中指定的版本与目标版本之间的版本不匹配
我设置为 OneSignal 扩展。 一旦我修改了这两个值以使其相互匹配,
问题就解决了。

播客文件
image

OneSignalNotificationExtension(或您为通知扩展命名的任何内容)
image

所有20条评论

你好,
我们昨天发布了一个新版本。 你能更新并重试吗? 还可以尝试清除位于 /Users/ 的 DerivedData 文件夹/库/开发人员/Xcode/DerivedData

最后要尝试的是从ios目录更新 pod

@jamesone你解决了这个问题吗? @rgomezp的回答没有帮助。

@rgomezp使用最新版本 3.4.1,上述建议均

+1 关注!

你好,
请尝试从项目中的 ios 目录运行pod deintegrate && pod install

以上建议无效。 已经更新到最新版本 v3.4.1,清理派生数据,清理 pod 并重新安装,但仍然出现错误:

Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_RCTOneSignalExtensionService", referenced from:
      objc-class-ref in NotificationService.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Podfile.lock

  - react-native-onesignal (3.4.1):
    - OneSignal (= 2.11.0)
    - React (< 1.0.0, >= 0.13.0)

更新:
我的错。 结果我需要用 DOC 中的最新代码替换NotificationService.m内容。 我仍在使用RCTOneSignalExtensionService.h 。 更新后,错误消失了。

很高兴听到! 如果您仍然在解决这个问题,请发表评论,我可以重新打开

它在 RN:0.60.10 和 pod 中仍然存在问题。
如何使用 pod 呢?

你好,
我有同样的问题ld: library not found for -lPods-OneSignalNotificationServiceExtension
我正在使用 react-native 0.61.4 和 onesignal 3.6.1

使用 pod deintegrate 和清洗以及 DerivedData

我找到了,但我不知道为什么,当我的配置列表中没有“发布”配置时,“存档”失败,找不到库。

存档失败:
Capture d’écran 2020-01-08 à 17 07 06

存档成功👍
Capture d’écran 2020-01-08 à 17 16 44

供您参考,Dev、Preprod 和 Prod 均基于 Release。 它在没有“发布”的情况下使用 onesignal 在我的旧项目中工作

更新@rgomezp

  • 创建一个新的 react-native 项目
  • 添加一个信号
  • 构建和存档 > 没关系
  • 将“发布”配置重命名为其他名称(如 Dev)
  • 构建和存档 > ld:找不到 -lPods-OneSignalNotificationServiceExtension 的库

以上建议无效。 已经更新到最新版本 v3.4.1,清理派生数据,清理 pod 并重新安装,但仍然出现错误:

Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_RCTOneSignalExtensionService", referenced from:
      objc-class-ref in NotificationService.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Podfile.lock

  - react-native-onesignal (3.4.1):
    - OneSignal (= 2.11.0)
    - React (< 1.0.0, >= 0.13.0)

更新:
我的错。 结果我需要用 DOC 中的最新代码替换NotificationService.m内容。 我仍在使用RCTOneSignalExtensionService.h 。 更新后,错误消失了。

这对我不起作用

  • 单信号 (3.6.2)
  • 反应原生(0.60.0)

现在有同样的问题。 当我添加新方案时, -lPods-OneSignalNotificationServiceExtension失败。 有任何更新吗?

相同的

升级 react-native 后我遇到了同样的问题
这解决了我的问题https://github.com/OneSignal/react-native-onesignal/issues/651#issuecomment -429062289

将 RN 版本升级到 0.63.2 并尝试存档应用程序时,我遇到了同样的问题,我得到了修复
这样。

这是我在 Podfile 中指定的版本与目标版本之间的版本不匹配
我设置为 OneSignal 扩展。 一旦我修改了这两个值以使其相互匹配,
问题就解决了。

播客文件
image

OneSignalNotificationExtension(或您为通知扩展命名的任何内容)
image

我有同样的问题,但上面的提示都没有解决我的问题。

我有两个非常相似的项目:一个有效,另一个无效。

在 xcode 中构建和存档步骤没问题,但在我的 CI 或我的电脑上,下面的命令在一个项目上成功,但在另一个项目上失败

xcodebuild "-workspace" "/Users/vagrant/git/packages/mobile-pro/ios/WecasaPro.xcworkspace" "-scheme" "WecasaPro" "-configuration" "Staging" "COMPILER_INDEX_STORE_ENABLE=NO" "archive" "-archivePath" "/var/folders/6q/wgy6jtp12w5gzgm9lzcglpqw0000gn/T/__archive__581470914/WecasaPro.xcarchive" "-destination" "generic/platform=iOS" | xcpretty

如果我查看命令的日志。 对于有效的项目,我有

▸ Building Pods/Pods-OneSignalNotificationServiceExtension [Staging]
▸ Check Dependencies
▸ Compiling Pods-OneSignalNotificationServiceExtension-dummy.m
▸ Compiling Pods-OneSignalNotificationServiceExtension-dummy.m
▸ Building library libPods-OneSignalNotificationServiceExtension.a
▸ Building library libPods-OneSignalNotificationServiceExtension.a
▸ Building WecasaPro/OneSignalNotificationServiceExtension [Staging]
▸ Check Dependencies
▸ Processing Info.plist
▸ Running script '[CP] Check Pods Manifest.lock'
▸ Compiling NotificationService.m
▸ Linking OneSignalNotificationServiceExtension
▸ Generating 'OneSignalNotificationServiceExtension.appex.dSYM'
▸ Touching OneSignalNotificationServiceExtension.appex
▸ Signing /Users/vagrant/Library/Developer/Xcode/DerivedData/WecasaPro-fuytaarwfdjqjucxpzvnzgjrhcvd/Build/Intermediates.noindex/ArchiveIntermediates/WecasaPro/IntermediateBuildFilesPath/UninstalledProducts/iphoneos/OneSignalNotificationServiceExtension.appex
▸ Touching OneSignalNotificationServiceExtension.appex.dSYM

对于不起作用的项目,我有

▸ Compiling Pods-OneSignalNotificationServiceExtension-dummy.m
▸ Compiling Pods-OneSignalNotificationServiceExtension-dummy.m
▸ Running script 'Copy generated compatibility header'
▸ Building library libPods-OneSignalNotificationServiceExtension.a

我多次检查了两个项目的配置,它们似乎很相似。

有没有人知道导致这种情况的原因?

在比较了两个项目的日志后,我发现成功的一个使用旧版构建系统,而另一个使用新的构建系统。

我将项目切换到旧版构建系统,但问题仍然存在。

在成功的项目上,我有

CompileC /Users/scesbron/Library/Developer/Xcode/DerivedData/WecasaPro-guwmidkqvxjubvhfovvxnfhourjd/Build/Intermediates.noindex/ArchiveIntermediates/WecasaPro/IntermediateBuildFilesPath/Pods.build/Staging-iphoneos/Pods-OneSignalNotificationServiceExtension.build/Objects-normal/arm64/Pods-OneSignalNotificationServiceExtension-dummy.o Target\ Support\ Files/Pods-OneSignalNotificationServiceExtension/Pods-OneSignalNotificationServiceExtension-dummy.m normal arm64 objective-c com.apple.compilers.llvm.clang.1_0.compiler

然后

Libtool /Users/scesbron/Library/Developer/Xcode/DerivedData/WecasaPro-guwmidkqvxjubvhfovvxnfhourjd/Build/Intermediates.noindex/ArchiveIntermediates/WecasaPro/IntermediateBuildFilesPath/Pods.build/Staging-iphoneos/Pods-OneSignalNotificationServiceExtension.build/Objects-normal/armv7/libPods-OneSignalNotificationServiceExtension.a normal armv7

但在编译后的另一个项目上,我有一个 Ld 命令

Ld /Users/scesbron/Library/Developer/Xcode/DerivedData/wecasa-hcsnerxmdxdzhhhetgrrfvjexliq/Build/Intermediates.noindex/ArchiveIntermediates/wecasa/IntermediateBuildFilesPath/wecasa.build/Release-iphoneos/OneSignalNotificationServiceExtension.build/Objects-normal/armv7/OneSignalNotificationServiceExtension normal armv7

我不知道这些命令有什么区别,也不知道为什么顺序不一样

最后评论我的问题。 我在我的 podfile 中删除了 OneSignalNotificationServiceExtension 目标、相关的objective-c 文件和对 OneSignal 的引用。 xcodebuild命令成功。

我通过执行文档https://documentation.onesignal.com/docs/react-native-sdk-setup 中描述的所有步骤重新添加了一个信号

之后我的xcodebuild命令仍然失败

Ld /Users/scesbron/Library/Developer/Xcode/DerivedData/wecasa-hcsnerxmdxdzhhhetgrrfvjexliq/Build/Intermediates.noindex/ArchiveIntermediates/wecasa/IntermediateBuildFilesPath/wecasa.build/Release-iphoneos/OneSignalNotificationServiceExtension.build/Objects-normal/armv7/Binary/OneSignalNotificationServiceExtension` normal armv7

/Users/scesbron/Library/Developer/Xcode/DerivedData/wecasa-hcsnerxmdxdzhhhetgrrfvjexliq/Build/Intermediates.noindex/ArchiveIntermediates/wecasa/IntermediateBuildFilesPath/wecasa.build/Release-iphoneos/OneSignalNotificationServiceExtension.build/Objects-normal/armv7/Binary文件夹是空的,它不包含OneSignalNotificationServiceExtension文件。

我有同样的问题

所以...

这真的很难追踪,我不得不重新创建一个新的 RN 064.1 项目才能真正找到我的问题的解决方案。 我在我的项目中使用了方案,我正在应用修复程序,以便它可以在 M1 上正确构建。

由于该项目已更新为使用新的OneSignalXCFramework而不是旧的胖框架,因此我决定更新 NSE 以在 Podfile 中也使用它。

面临大量找不到模块的问题,包括在构建发布版本或构建到模拟器或设备期间的这个问题

原来与我的代码搞砸并导致整个问题不起作用的部分是 Podfile 中的以下部分

installer.pods_project.build_configurations.each do |config|
    config.build_settings["EXCLUDED_ARCHS[iphonesimulator=*]"] = "arm64"
end

最后,我只需要将它应用于调试版本而不是发布版本。 我不是 iOS 开发人员,所以我不知道从架构中排除模拟器会导致 NSE 检测不到 Pod 的复杂性,但这是我的问题。

删除整个块是为我修复它的原因。 至少我的项目似乎不再需要它了。

此页面是否有帮助?
0 / 5 - 0 等级