我有一个依赖Stripe iOS SDK,项目A 的iOS组件.我在Xcode中包含了项目A中的Stripe SDK,它编译得很好.
但是,我正在Xcode中构建另一个项目,它依赖于这个组件,项目B.我将项目A添加到项目B的库中.项目A依赖于项目B,但不直接依赖于Stripe SDK.
现在,每当我尝试编译Project B时,都会收到此错误:
ld: framework not found Stripe for architecture x86_64
这一行(在项目A内)似乎触发了错误:
#import <Stripe/Stripe.h>
Xcode可以轻松找到Stripe.h
.我也尝试将Stripe SDK直接添加到Project B中.我已经对所有目标(Stripe.framework
列出)进行了两次和三次检查Build Phases - > Link Binary With Libraries部分.
我手动添加了Stripe框架,所以我也尝试用Cocoapods添加它,但这也没有用.
请帮忙!
这是项目B的项目结构("示例"),项目A("RCTFBLogin")位于其下方.
这是完整的错误:
我正在使用Xcode 7.2和最新版本的Stripe SDK(6.0.0).相同的Stripe框架代码在另一个项目中工作正常.
谢谢.
更新:我$(SRCROOT)/../..
在项目B目标的构建设置 - >"搜索路径"下添加了" "(因为项目B在项目A内部生活了两个文件夹)到"框架搜索路径",并且它开始成功编译.但是,我现在运行时遇到此错误:
ld: warning: Auto-Linking supplied '/Users/rettig/wip/react-native-facebook-login.2/Stripe.framework/Stripe', framework linker option at /Users/rettig/wip/react-native-facebook-login.2/Stripe.framework/Stripe is not a dylib
Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_Stripe", referenced from:
objc-class-ref in libRCTFBLogin.a(RCTFBLogin.o)
ld: symbol(s) not found for …
Run Code Online (Sandbox Code Playgroud) 我非常依赖React Native的"Chrome in Debug"功能,因此依赖于Chrome的调试器.但是我注意到这个系统存在一个巨大的缺陷:我使用ES6风格的导入导入的模块在Chrome的范围内是不可见的,即使代码执行正常.这使得使用这些import语句调试代码变得非常困难.
如果我import
用a 替换一个语句,var MyModule = require(...)
那么该模块在范围内是可见的.
在阅读ES6模块后,在调试器中没有定义导入我查看了React Native生成的转换源代码(通过http://localhost:8081/index.ios.bundle?platform=ios&dev=true
在我的浏览器中加载),并注意到有问题的模块是以不同的名称加载的:
var _MyModule = require('MyApp/MyModule.js');
var _MyModule2 = babelHelpers.interopRequireDefault(_MyModule);
Run Code Online (Sandbox Code Playgroud)
事实上我可以_MyModule2
在Chrome中使用.我有几个相关的问题:
import
在Chrome中使用React Native更轻松地使用语句进行调试?例如,我习惯于将鼠标移动到Chrome中的变量上以查看值,但这些导入不再可能.(使用带有es6的chrome进行调试建议#enable-javascript-harmony
在Chrome中启用并关闭源映射,但考虑到Flow代码和uglification,我怀疑这会运行良好.)谢谢.
javascript debugging google-chrome ecmascript-6 react-native
既然RN支持跨平台链接,我想知道如何使用预设消息发送短信.根据文档(https://facebook.github.io/react-native/docs/linking.html#content):
尝试使用任何已安装的应用打开给定的网址.您可以使用其他URL,例如位置(例如"geo:37.484847,-122.148386"),联系人或可以使用已安装的应用程序打开的任何其他URL.
我的问题是,我用什么URI方案打开带有预定义消息的短信?它是跨平台的吗?
谢谢.
当Parse for React Native中的一系列promise中抛出异常时,我注意到发生了一些非常奇怪的事情.承诺链永远不会解决,永远不会拒绝,并且永远不会抛出异常.它只是默默地消失.
这是重新创建问题的示例代码:
// Replacing this with Promise.resolve() prints the error.
// Removing this stage prints the error.
Parse.Promise.as()
// Removing this stage causes a red screen error.
.then(function() {
// Replacing this with Parse.Promise.as() causes a red screen error.
return Promise.resolve();
})
.then(function () {
throw new Error("There was a failure");
})
.then(function () { console.log("Success")}, function (err) { console.log(err) });
Run Code Online (Sandbox Code Playgroud)
正如您从评论中看到的那样,它似乎只发生在这个特定的事件序列中.删除一个阶段,或者交换一个原生JS承诺的Parse承诺会导致事情再次发生.(在我的实际代码中,"Promise.resolve()"阶段实际上是对返回promise的本机iOS方法的调用.)
我知道Parse承诺的行为与A +兼容的承诺完全不同(参见/sf/answers/2185625221/).实际上,Parse.Promise.enableAPlusCompliant()
在此部分代码之前调用会导致异常被捕获并打印出来.但我认为Parse promises和原生JS承诺可以安全地一起使用.
为什么这个异常会默默地消失?
谢谢.
我正在构建一个React Native应用程序(当前仅适用于iOS),并且发现了一个非常讨厌的错误,该错误仅在1.)在实际设备上运行,以及2.)在没有Chrome调试的情况下运行时才会显现出来。(好吧?)
我正在使用带有选项卡的react-native-router-flux,当我点击加载新选项卡路线的按钮(Actions.tabRouteName
)时,屏幕变为空白。就像我说的那样,当启用Chrome调试时,它在模拟器中以及设备上都可以正常工作。
我尝试过的其他方法:在另一台设备上运行,重新加载JS,在Xcode中重建应用程序。
在这些不同的运行情况下,行为有什么原因会有所不同吗?
谢谢。
更新:这似乎与动画和路线切换有关。我在这个Github问题中发布了更多详细信息。我还发现在Github问题中,其他人在调试中遇到了类似问题的想法也得到了传闻支持。
在 Javascript 中,有什么方法可以导入(或要求)一个模块没有从该模块导出的对象?
我意识到这可能是不好的做法,但我想知道这是否可能。我有 Python 背景,所以我对我可以导入模块但无法在 Javascript 中访问其所有数据元素的想法感到困惑。
出于某种原因,alignItems: center
在容器视图上设置样式会导致弹性行内的文本停止换行,并且不会尊重容器视图padding
.
这里的工作示例和代码:https://rnplay.org/apps/FsDXuQ
我尝试按照建议将flexDirection设置为column,使用flex:1或flexWrap,但唯一有效的方法是alignItems: center
从容器视图中删除.
我不明白这里发生了什么.如果我想要怎么办
谢谢.
javascript ×6
react-native ×5
ios ×2
debugging ×1
ecmascript-6 ×1
objective-c ×1
promise ×1
xcode ×1
xcode7 ×1