博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ios 自制framework遇到 "_OBJC_CLASS_$_XXX", referenced from:
阅读量:6870 次
发布时间:2019-06-26

本文共 1212 字,大约阅读时间需要 4 分钟。

目录

  • 该错误解决方案
  • 合成framework的脚本

错误信息

Undefined symbols for architecture x86_64:"_OBJC_CLASS_$_XXX", referenced from:objc-class-ref in XXX.o

前情提要

这个问题在维护老代码,使用第三方framework的时候经常出现,网上解决方案不尽相同,但和作者遇到的情况不一样。

如果你和作者原因不一样,出门左转。

出现场景

作者是在制作自己的framework的时候,并应用到工程中,使用真机编译时遇到这个问题。

解决过程

因为编译出错信息出现x86字眼,作者误认为是制作出来的framework不支持x86,多次查看了工程配置,最终通过lipo -info xxx.framework命令验证,是支持x86的。

后来在网上检阅,回想起来,我并没有合成真机和模拟器的framework,最终猜想大概率是没有正确合成framework。

说起没有合成framework,看了网上分享的合成步骤比较烦,然后用了错误的脚本输出为空的framework,就没管了,后来又一度怀疑配置问题,结果造成悲剧。

正确姿势

需要将真机和模拟器环境编译出来的framework合并,并将所属目录下的两个文件进行合并。

脚本问题

网上以前的脚本不适用当前xcode版本。

脚本访问的真机和模拟器的路径有误,
所以最终合成出来的是空的framework。

错误脚本.png

正确脚本:

FMK_NAME=${PROJECT_NAME}if [ "${ACTION}" = "build" ]thenINSTALL_DIR=${SRCROOT}/Products/${FMK_NAME}.frameworkDEVICE_DIR=${BUILD_ROOT}/${CONFIGURATION}-iphoneos/${FMK_NAME}.frameworkSIMULATOR_DIR=${BUILD_ROOT}/${CONFIGURATION}-iphonesimulator/${FMK_NAME}.frameworkif [ -d "${INSTALL_DIR}" ]thenrm -rf "${INSTALL_DIR}"fimkdir -p "${INSTALL_DIR}"cp -R "${DEVICE_DIR}/" "${INSTALL_DIR}/"lipo -create "${DEVICE_DIR}/${FMK_NAME}" "${SIMULATOR_DIR}/${FMK_NAME}" -output "${INSTALL_DIR}/${FMK_NAME}"#这个是合并完成后打开对应的文件夹,你就可以直接看到文件了open "${SRCROOT}/Products"

最后

交流群:304543771

可以讨论各种技术问题,欢迎您的加入。

转载地址:http://dlpfl.baihongyu.com/

你可能感兴趣的文章
Facebook默默开始“抄”微信,但“抄”得还不够
查看>>
智慧医疗助力患者康复,提高医疗质量
查看>>
业务发展如何利用创新驱动力量?
查看>>
城市智慧物流中心启航 助推济南“携河北跨”
查看>>
让任正非陷入“迷茫”的,不只是华为……
查看>>
Django性能测试—一个现实世界的例子
查看>>
中国光伏组件反补贴税下调1.32%
查看>>
Cray推出开源大数据一体机Urika-GX
查看>>
智能门锁市场“钱途”无限 把关智能家居入口
查看>>
大数据项目产品选型的五个建议
查看>>
云数据加密公司LOCKet获千万级Pre-A融资
查看>>
爱尔兰WElink Energy宣布在葡萄牙建立220MW太阳能光伏项目
查看>>
如何从敏捷到精益地修复bug与解决问题
查看>>
开启智慧新生活 新余市智慧城市建设全省率先
查看>>
智慧东湖让城市慢游更幸福
查看>>
陕西联通推进高速公路WiFi覆盖
查看>>
PHP开发者常犯的10个MySQL错误
查看>>
物联网在交通领域示范应用的三大趋势
查看>>
浅谈如何用Java操作MongoDB?
查看>>
Java ConcurrentModificationException异常原因和解决方法
查看>>