iOS 中Undefined symbols for architecture x86_64

在原生 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 ?

转载于:https://juejin.im/post/5c7a3610518825470368d701

ReactNative 踩坑之 iOS 原生组件相关推荐

  1. React-Native 踩坑------MIUI12“Text“组件显示异常

    React-Native 踩坑------MIUI12"Text"组件显示异常 我尽量不打错别字,用词准确,不造成阅读障碍 最近发现React-Native的应用在MIUI12上 ...

  2. 【踩坑】iOS 状态栏没显示问题

    [踩坑]iOS 状态栏没显示问题 前提: 借鉴Dokit(滴滴的辅助工具框架)的全局浮窗,封装了一个全局浮窗,用于全局都显示, windowLevel设置成了UIWindowLevelStatusBa ...

  3. 移动端踩坑记---------ios下输入法遮挡input

    移动端踩坑记---ios下输入法遮挡input   最近项目中遇到了一个比较严重移动端IOS下的Fixed兼容问题,网上也有很多人躺在这个问题上了,现在开始详细讨论一下这个问题.   现在我们先来看一 ...

  4. vue-cli3.0+webpack4中关于svg-sprite-loader踩坑,让svg组件徜徉我的web项目

    第一次写文章,今天踩坑过后希望能够记录这样'生动有趣'的踩坑之旅,还是那样,在技术的海洋中,我和大佬就像鱼和水,我没了大佬就凉了,大佬没了我还清净,感谢一路栽培.公司之前的项目都是用vue-cli2. ...

  5. 【踩坑日记】Vue组件@click事件点击没有反应

    项目场景: 在自定义组件上绑定@click事件无法触发 问题描述: 在自定义组件上绑定@click事件无法触发 <template><div>自定义组件<div> ...

  6. react-native踩坑的开始!

    不争气的我开始学rn了,终于是要动起来了,这几天对自己的未来职业生涯规划了千千万万遍,果然是睡不着了!! 想这么多还不如实际行动!!开始撸rn!! 因为是windows,所以下了android-stu ...

  7. 腾讯地图踩坑记之选点组件

    最近遇到一个需求,h5页面用户新增地址的时候除了可以调起级联菜单弹窗进行选择也可以点击图标进入地图进行选择,如下图: 我们用的是腾讯地图,要使用腾讯地图功能首先要组册key完成验证,这个按照文档一步一 ...

  8. 踩坑之ios手机new Date(yyyy-MM-dd hh:mm:ss).getTime()返回NaN

    1.场景: 公司的小程序中有一个这样的功能,后端返回一个时间,时间格式是yyyy-MM-dd hh:mm:ss,然后前端根据这个时间和当前时间做比较,如果小于当前时间,则用户点击复习的按钮是能打开对应 ...

  9. React-Native 踩坑日志之 zIndex无效问题的记录

    Rn的层叠关系中,一个滑动View的zIndex设置为2,当滑动到其父View的兄弟View时,子View会被盖住: 在叠层关系中,子View的zIndex不能高于父View的zIndex,故而导致子 ...

最新文章

  1. 解读《电力发展“十三五”规划》
  2. JSP实现小区物业管理系统
  3. CTO不写代码就算了,架构师也不写?
  4. springcloud ribbon @LoadBalance负载均衡源码流程分析
  5. Ubuntu20.04 安装VMware Tools
  6. I Hate It HDU - 1754 (线段树)
  7. sun键盘没有stop键_请教Sun键盘
  8. python输入float_python – 在tensorflow中创建一个float64变量
  9. 人工计算机的相关信息,第三届计算机信息科学与人工智能国际学术会议(CISAI 2020)...
  10. 【软工】第一次阅读作业
  11. vs2015 使用Qt语言家及其使用过程中遇到的问题
  12. emoji.php,简单的处理emoji的PHP类库
  13. java promise实现,[Java教程]promise的理解和应用
  14. 什么是熔断? 熔断有哪几种状态 ?断路器的工作原理
  15. php 容器源码分析,Pimple运行流程浅析(PHP容器)
  16. 两台电脑无线连接的办法
  17. outlook打开总是要输入密码,怎么办?
  18. Linux系统如何PING地址,Linux下指定源ip进行ping操作的方法
  19. LSTM长短期记忆模型
  20. Linux 版本分支图

热门文章

  1. 内部排序算法系列---快速排序
  2. JavaScript基础函数体中的唯一var模式(002)
  3. 高性能缓存服务器Varnish架构配置
  4. centOS 7下安装与配置heartbeat高可用集群
  5. scala 模式匹配详解 1
  6. Yii防注入***笔记
  7. 硬盘全新安装windows 7
  8. 中小企业上ERP项目不可回避的9个基本问题
  9. Typesetting Engine_Gecko
  10. LeetCode 637. 二叉树的层平均值