所以基本上这意味着框架没有在模块上更新,如果你选择不使用 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”(当前)向上复制两级。
我仍然想知道如何在没有这种“丑陋”方式的情况下解决它。 @jkasten2你能在这里帮忙吗?
我有同样的问题,而且没有找到 React/<...>.h。
我对 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_modules
和ios
文件夹。 在某些情况下(当项目结构有点不同时)它不会工作,因为没有文件夹$(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
开头但崩溃了,因为RNOneSignal
是undefined
。
@avishayil我尝试使用 Coca 和框架,结果相同。
@edo1493你能分享一个重现错误的
有意思,你是怎么建的? 从头开始还是到现有项目?
@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
从头开始重新安装一个信号帮助我解决了这个问题。
最有用的评论
合并、测试和修复。