描述:
我已升级到 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"
环境
重现问题的步骤:
ld: library not found for -lPods-OneSignalNotificationServiceExtension
你好,
我们昨天发布了一个新版本。 你能更新并重试吗? 还可以尝试清除位于 /Users/ 的 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
我找到了,但我不知道为什么,当我的配置列表中没有“发布”配置时,“存档”失败,找不到库。
存档失败:
存档成功👍
供您参考,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
。 更新后,错误消失了。
这对我不起作用
现在有同样的问题。 当我添加新方案时, -lPods-OneSignalNotificationServiceExtension
失败。 有任何更新吗?
相同的
升级 react-native 后我遇到了同样的问题
这解决了我的问题https://github.com/OneSignal/react-native-onesignal/issues/651#issuecomment -429062289
将 RN 版本升级到 0.63.2 并尝试存档应用程序时,我遇到了同样的问题,我得到了修复
这样。
这是我在 Podfile 中指定的版本与目标版本之间的版本不匹配
我设置为 OneSignal 扩展。 一旦我修改了这两个值以使其相互匹配,
问题就解决了。
播客文件
OneSignalNotificationExtension(或您为通知扩展命名的任何内容)
我有同样的问题,但上面的提示都没有解决我的问题。
我有两个非常相似的项目:一个有效,另一个无效。
在 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 的复杂性,但这是我的问题。
删除整个块是为我修复它的原因。 至少我的项目似乎不再需要它了。
最有用的评论
将 RN 版本升级到 0.63.2 并尝试存档应用程序时,我遇到了同样的问题,我得到了修复
这样。
这是我在 Podfile 中指定的版本与目标版本之间的版本不匹配
我设置为 OneSignal 扩展。 一旦我修改了这两个值以使其相互匹配,
问题就解决了。
播客文件
OneSignalNotificationExtension(或您为通知扩展命名的任何内容)