React-native-onesignal: 未找到 OneSignal/OneSignal.h 文件

创建于 2017-01-24  ·  44评论  ·  资料来源: OneSignal/react-native-onesignal

有和问题已经打开和关闭,但这仍然是问题。 见第 133 期

对这个问题的

反应本机 0.40.0 OneSignal 3.0

最有用的评论

合并、测试和修复。

所有44条评论

所以基本上这意味着框架没有在模块上更新,如果你选择不使用 CocoaPods。 我对么?

是的,我认为这是正确的。 我没有使用 CocoaPods。

我知道了。 当前的问题是,如果它在库之外,例如在 Xcode 项目的Frameworks组中,我找不到任何方法让库识别框架。 这使得库依赖于框架的特定版本,而不是手动添加。

嘿,找到了一个给你提示的仓库。 让我的代码再次工作。
https://github.com/eriksape/react-native-onesignal#faq -repeating-issues

@阿维沙伊尔

我不太熟悉objective-c,我真的希望我能帮助解决这个问题。
是否可以更新文档以让人们了解该问题?

与此同时,我将 OneSignal.framework 目录复制到我的 ios 项目中,并带有正确的“Header”目录和“OneSignal”文件,并将“Framework Search Paths”更改为指向它。

我将不得不密切关注更新,但这目前对我有用。 谢谢!

@haxtrujillo在不使用 CocoaPods 时也会遇到这个问题。 您更改了哪个头文件和 OneSignal 文件以通过直接导入而不是官方 README 说明进行此工作? 谢谢!

@dguillamot确保设置“标题搜索路径”和“标题搜索路径”,将文件从版本“B”(当前)向上复制两级。

screen shot 2017-01-25 at 11 13 26 pm

我仍然想知道如何在没有这种“丑陋”方式的情况下解决它。 @jkasten2你能在这里帮忙吗?

我有同样的问题,而且没有找到 React/<...>.h。
screen shot 2017-01-26 at 2 31 54 pm

screen shot 2017-01-26 at 7 37 18 pm

我对 React-Native 0.4.0 也有同样的问题,

安装一些插件(react-native-firestack)后,突然发生了。

@rustykey @bitsal

我必须做两件事才能让它工作:

0 - 我在主项目文件夹(xcode 工作区文件所在的位置)中创建了一个名为 /ios/OneSignal 的子文件夹

1 - 然后,类似于 haxtrujillo 上面所说的,在 node_modules/react-native-onesignal/ios/Frameworks 文件夹中,您可以双击/展开 OneSignal.framework 文件。 里面有一个 Versions/B 子文件夹。 选择其中的“Headers”和“OneSignal”文件,复制( CMD-C )然后再次选择 OneSignal.framework 'file' 并粘贴 .

然后,我将这个新的 OneSignal.framework 文件复制到我在上面步骤 0 中创建的 /ios/OneSignal 文件夹中。

2 - 接下来,我将 node_modules/react-native-onesignal/ios/RCTOneSignal.xcodeproj 文件和 RCTOneSignal 文件夹复制到我在步骤 0 中创建的 ios/OneSignal 文件夹。

然后在 Xcode 中,我将 OneSignal.Framework 文件添加到我的 xcode 工作区的 Frameworks 文件夹中,并将 RCTOneSignal.xcodeproj 添加到 Libraries 文件夹中。 然后,我在 xcode 的 Libraries 文件夹中选择了 xcodeproj 文件。 检查目标是 RCTOneSignal,我转到 BuildSettings,并将框架搜索路径更改为 '$(PROJECT_DIR)/OneSignal' .. 这样它就可以找到我制作的新 OneSignal.framework。 我还在同一个 Build Settings 区域中更改了 Header Search Paths 以确保它正在选择 React。 就我而言,相对于 PROJECT_DIR,最容易将其设为 '$(PROJECT_DIR)/../node_modules/react-native/React'

在这些更改之后,所有内容现在都在我的 ios/OneSignal 文件夹中,我根本不需要 node_modules 文件夹。 不过,我仍在使用它,用于 Android。 但是,如果您只是 ios,则不需要 node_module 文件夹,因为此解决方法基本上已制作了本地副本。

这绝对不是一个好的长期解决方案,一旦作者更新了这个包,就应该撤消。 它只是通过复制项目来缩短节点模块,以便您可以更改构建设置。 修改节点模块以解决此问题后,应撤消这些更改。

谢谢@dguillamot

我以不同的方式完成了它,但我猜感觉是一样的
包.json :

"scripts": {
     ...
    "fix-onesignal-ios-issue-161": "cd node_modules/react-native-onesignal/ios/Frameworks/OneSignal.framework && cp -R Versions/B/* . && cd ../../../../..",
    "run-ios": "npm run fix-onesignal-ios-issue-161 && echo '.env.local' > /tmp/envfile && react-native run-ios",
     ...
}

PS:
@阿维沙伊尔
我在 RCTOneSignal 项目的Header Search Paths 中注意到这样的一行"$(SRCROOT)/../../../ios/Pods/Headers/Public/OneSignal"
似乎图书馆要求我在同一级别拥有node_modulesios文件夹。 在某些情况下(当项目结构有点不同时)它不会工作,因为没有文件夹$(SRCROOT)/../../../ios

附注 2:
另外,我有一个类似React/RCT<...>.h file not found 。 我已经通过首先从 XCode 构建 React 进行了修复(参见 https://github.com/facebook/react-native/issues/12042#issuecomment-275025960)。

react-native run-ios还不起作用(仅来自 XCode。

自本机 iOS OneSignal SDK 的2.1.5版本以来,没有Versions/B文件夹。 你能检查一下以确保你使用了最新的 OneSignal.framework 吗? 目前2.3.5是最新的。

@jkasten2对,现在2.3.5版本
我敢肯定 因为我跑了很多次

rm -rf node_modules/react*
rm -rf ios/build/* && rm -rf ios/Pods/*
rm -rf ~/Library/Developer/Xcode/DerivedData/*

顺便提一句,

react-native-cli: 2.0.1
react-native: 0.40.0

播客文件:

pod 'OneSignal', '~> 2.0'

但实际上它安装了2.3.5 ,我在控制台输出中看到它

@jkasten2
我使用的是 React Native 0.40.0、OneSignal 3.0 并且没有 CocoaPods。

@jkasten2
你是对的。 ios/Pods/OneSignal/iOS_SDK/Framework/OneSignal.framework/Versions/没有Versions/B文件夹:

Current -> A

但是Versions/B还在node_modules/react-native-onesignal/ios/Frameworks/OneSignal.framework/Versions/

包.json
"react-native-onesignal": "3.0.0",

问题似乎是缺少 3.0.0 版本标签中的符号链接。

@avishayil我注意到v3.0.0标签缺少它们,但 master 有它们。
https://github.com/geektimecoil/react-native-onesignal/tree/v3.0.0/ios/Frameworks/OneSignal.framework
https://github.com/geektimecoil/react-native-onesignal/tree/master/ios/Frameworks/OneSignal.framework

原生 iOS SDK 存储库也有符号链接。
https://github.com/OneSignal/OneSignal-iOS-SDK/tree/2.3.5/iOS_SDK/Framework/OneSignal.framework

您可以发布包含这些丢失文件的更新吗?

@jkasten2好了,在examples分支的这个项目中:
https://github.com/geektimecoil/react-native-onesignal/tree/examples/examples/RNOneSignalFramework

尝试构建这个项目,它说它缺少头文件。

@avishayil我做了一个新的克隆并按照下面的说明进行操作,但没有遇到丢失的.h问题。
https://github.com/geektimecoil/react-native-onesignal#running -example-project

注意:说明应该是cd OneSignalRN而不是cd OneSignalRNExample

按照说明从终端运行项目,并通过打开RNOneSignal.xcworkspace文件直接从 Xcode 构建。

@jkasten2 ,使用 CocoaPods 构建项目时没问题。 问题是在没有 CocoaPods 的情况下尝试使用框架构建项目时。

我之前提到过,如果这是重复的,请原谅我,但是: 问题之一是头文件OneSignal.h位于 repo 中,但它们不在名为“OneSignal”的文件夹下,这就是它们的方式参考。

@avishayil在没有可可的情况下仍然是问题?,抱歉没有注意到它,让我看看伙计们,我会让你知道 :)

@eriksape是的

@avishayil我不知道会发生什么,我的插入方法仍然可以,因为我看到可可豆荚做同样的事情,但会自动下载很多带有最新版本 OneSignal-iOS-SDK 的软件包,如@jkasten2 所说是2.3.5,知道你现在降级sdk的版本了吗?

伙计们,我在使用 v2 和 Cocoapods 时遇到了标题问题:/任何关于为什么的提示? 我应该创建一个专门的问题吗?

这周我会看看 v2。

我在 RN40 和 OneSignal3.0 上,使用框架,但仍然得到“找不到 OneSignal/OneSignal.h”。 我的头文件/框架路径设置正确,库已与 react-native 链接链接,所以我没有看到有关设置的任何问题。

不过,我对 Cocoapods 也有同样的看法。

我在 v3.0.0 上遇到了这个错误并且对原生 0.41 做出了反应。 我通过运行命令 react-native link 来构建它。

更正:仍然出现构建错误:(

你们在使用 CocoaPods 吗?

@avishayil不,我没有使用 Cocoapods,也不会使用它。 我刚刚在 3.0.2 中获得了您的最新更改,但它仍未构建。 有关修复此问题的任何更新?

@larryranches这仍然是我与 OneSignal 团队一起研究的内容。 @jkasten2 ,当我们有解决方案时,我会更新。

@avishayil感谢您对此进行调查! 因为我们必须升级到最新的 React Native 0.41,所以让它工作会很好。 一旦有修复,请告诉我们。

使用 Xcode 运行时出现同样的问题。 应用程序以node node_modules/react-native/local-cli/cli.js run-ios开头但崩溃了,因为RNOneSignalundefined

@avishayil我尝试使用 Coca 和框架,结果相同。

@edo1493你能分享一个重现错误的

这个拉取请求对我有用 ✌️:
https://github.com/geektimecoil/react-native-onesignal/pull/184

有意思,你是怎么建的? 从头开始还是到现有项目?

@avishayil进入现有项目(这里描述的问题)并遵循https://github.com/jkasten2/react-native-onesignal 上更新的自述文件
(必须删除 Podfile 和相关文件)

PR #184 也适用于我

合并、测试和修复。

我已经做了所有的事情仍然没有找到:(

我对 Cacaopods 也有这个错误...... RN 0.50 和 react-native-onesignal ^3.0.5

有人修复这个错误吗? 我面临 RN 0.51 和 react-native-onesignal ^3.0.5

从头开始重新安装一个信号帮助我解决了这个问题。

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