内容简介:在原生 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 发布,云原生流控降级组件
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
程序员代码面试指南:IT名企算法与数据结构题目最优解
左程云 / 电子工业出版社 / 2015-9 / 79.00元
这是一本程序员面试宝典!书中对IT名企代码面试各类题目的最优解进行了总结,并提供了相关代码实现。针对当前程序员面试缺乏权威题目汇总这一痛点,本书选取将近200道真实出现过的经典代码面试题,帮助广大程序员的面试准备做到万无一失。“刷”完本书后,你就是“题王”!__eol__本书采用题目+解答的方式组织内容,并把面试题类型相近或者解法相近的题目尽量放在一起,读者在学习本书时很容易看出面试题解法之间的联......一起来看看 《程序员代码面试指南:IT名企算法与数据结构题目最优解》 这本书的介绍吧!