ios 自制framework遇到 "_OBJC_CLASS_$_XXX", referenced from:

栏目: Objective-C · 发布时间: 6年前

内容简介:Undefined symbols for architecture x86_64:"_OBJC_CLASS_$_XXX", referenced from:objc-class-ref in XXX.o这个问题在维护老代码,使用第三方framework的时候经常出现,网上解决方案不尽相同,但和作者遇到的情况不一样。如果你和作者原因不一样,出门左转。

目录

  • 该错误解决方案
  • 合成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。

ios 自制framework遇到

正确脚本:

FMK_NAME=${PROJECT_NAME}
if [ "${ACTION}" = "build" ]
then
INSTALL_DIR=${SRCROOT}/Products/${FMK_NAME}.framework
DEVICE_DIR=${BUILD_ROOT}/${CONFIGURATION}-iphoneos/${FMK_NAME}.framework
SIMULATOR_DIR=${BUILD_ROOT}/${CONFIGURATION}-iphonesimulator/${FMK_NAME}.framework

if [ -d "${INSTALL_DIR}" ]
then
rm -rf "${INSTALL_DIR}"
fi

mkdir -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"

最后

TABAnimated原生骨架库 交流群:304543771

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


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

程序员2010精华本

程序员2010精华本

程序员杂志社 / 电子工业 / 2011-1 / 49.00元

《程序员(2010精华本)》主要内容:《程序员》创刊10年来,每年末编辑部精心打造的“合订本”已经形成一个品牌,得到广大读者的认可和喜爱。今年,《程序员》杂志内容再次进行了优化整合,除了每期推出的一个大型专题策划,各版块也纷纷以专题、策划的形式,将每月的重点进行了整合,让内容非常具有凝聚力,如专题篇、人物篇、实践篇等。另外杂志的版式、色彩方面也有了很大的飞跃,给读者带来耳目一新的阅读体验。一起来看看 《程序员2010精华本》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

SHA 加密
SHA 加密

SHA 加密工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换