内容简介:在原生 iOS 开发中,这个错误信息,应该或多或少的会碰到过:这个错误信息的意思大致是:在一般解决办法:添加相应的静态库,或者 framework,今天笔者并非要解决 iOS 原生开发的问题,而是解决 ReactNative 中原生组件的问题,如果是解决原生问题,请移步
在原生 iOS 开发中,这个错误信息,应该或多或少的会碰到过:
Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_XXX", referenced from:
__XXX in TestClass.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
复制代码
这个错误信息的意思大致是:在 TestClass
里面有一些不认识的 符号
,说白了,就是在 TestClass
这个类里面的某些方法或者使用的某些类不能被识别,在这个类里面一一进行排除,不难找到问题所在。
一般解决办法:添加相应的静态库,或者 framework,今天笔者并非要解决 iOS 原生开发的问题,而是解决 ReactNative 中原生组件的问题,如果是解决原生问题,请移步 here 。
笔者针对友盟推送的 SDK 做了 RN 组件开发,将原生SDK内嵌在组件内,这样在RN中使用,就不必再关心友盟的 SDK 了,真正做到 ReactNative 插件化开发。
敲上几行命令,整个环境已经搭建好,在没有导入 SDK 之前,编译是 OK 的,导入 SDK 之后编译也没问题,实际表现跟自己预想的差不多,这个组件应该很快就会做好。
想法是美好的,现实是残酷的。
在我写好调用 SDK 内的方法之后,开始编译,WTF 什么鬼,这个错误什么情况,吓得我赶紧去检查代码,该注释的注释,该还原的还原。编译->没问题啊!
最后通过比对其他工程,最后找到了解决的办法。因为笔者的组件中使用了友盟 (第三方) framework 才引起的这个编译问题,所以最后的解决方法就是: Xcode -> Build Settings -> Other Linker Flags
中添加 -framework "xxx"
,比如你的是 TestDemo.framework
,这里添加的就是 -framework "TestDemo"
PS:在RN项目内的 package.json
中引用第三方组件使用 "xxx-component": "../xxx/"
,这样写,会连同组件 package.json
所在当前目录下所有文件一起Copy到RN项目 node_moudle/xxx-component
目录,RN在运行会报出一些 duplicate xxx
这样的错误信息,这个时候,需要在 node_moudle/xxx-component
这个目录下删除不需要的文件。
如果恰好你碰到了这个问题,又恰好看到了这篇文章,那恭喜你,找对地方了!如果没有碰到这些烦人的问题,那你简直太幸运了!
以上希望对你有所帮助 have fun
以上所述就是小编给大家介绍的《ReactNative 踩坑之 iOS 原生组件》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- Vue 中给组件绑定原生事件
- 深度介绍:???? 你听说过原生 HTML 组件吗?
- Flutter之在Flutter布局中嵌入原生组件Android篇
- 阿里流量控制组件 Sentinel 被列入 CNCF 云原生全景图谱
- 阿里流量控制组件 Sentinel 被列入 CNCF 云原生全景图谱
- Sentinel Go 0.6.1 发布,云原生流控降级组件
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Web Designer's Idea Book
Patrick Mcneil / How / 2008-10-6 / USD 25.00
The Web Designer's Idea Book includes more than 700 websites arranged thematically, so you can find inspiration for layout, color, style and more. Author Patrick McNeil has cataloged more than 5,000 s......一起来看看 《The Web Designer's Idea Book》 这本书的介绍吧!