iOS通用框架不构建i386?
我正在使用这个神奇的脚本来构建我自己的框架,它在一段时间内工作得非常好。我不确定确切的时间,但它似乎已经停止建设i386。使用生成的框架的应用程序不再与模拟器一起工作 我已经设置了iOS通用框架不构建i386?,ios,xcode5,ios-frameworks,ios-universal-framework,Ios,Xcode5,Ios Frameworks,Ios Universal Framework,我正在使用这个神奇的脚本来构建我自己的框架,它在一段时间内工作得非常好。我不确定确切的时间,但它似乎已经停止建设i386。使用生成的框架的应用程序不再与模拟器一起工作 我已经设置了VALID\u ARCHS=arm64 armv7 armv7s i386 x86\u 64set。和仅\u活动\u ARCH=NO。生成脚本没有抛出任何错误或日志。然而,我最终得到了一个没有i386或x86_64的瘦框架,因此任何依赖于此框架的项目在构建模拟器时都会出现链接器错误 额外信息: 使用来自主repo的M
VALID\u ARCHS=arm64 armv7 armv7s i386 x86\u 64
set。和仅\u活动\u ARCH=NO
。生成脚本没有抛出任何错误或日志。然而,我最终得到了一个没有i386或x86_64的瘦框架,因此任何依赖于此框架的项目在构建模拟器时都会出现链接器错误
额外信息:
- 使用来自主repo的Mk8脚本最新版本
- 归档,而不是像某些错误建议的那样构建
有什么想法吗?这可能是我比较模糊的答案之一,我可能无法具体回答你的问题,因为你在谈论iOS通用框架,但也许我可以谈谈我的经验 我发现,同时为
i386
和x86_64
体系结构构建(使用一个xcodebuild调用),即使使用正确的有效arch
和仅使用活动arch
也不起作用
我通过显式地构建x86_64并将输出与上一步的lipo相结合,解决了使用项目中所有5个arch创建通用静态库的特殊问题
我的意见如下:
为x86_64模拟器显式构建需要一些尝试和错误,xcodebuild似乎无法同时构建i386和x86_64,因此我专门为x86_64添加了[附加]步骤
限制64位仿真器构建的有效ARCH、ARCH和IPHONEOS部署目标似乎可以奏效
ARCHS='x86\u 64'有效\u ARCHS='x86\u 64'IPHONEOS\u部署\u TARGET='7.0'
在幕后,通用框架只是创建一个带有符号链接和特定结构(看起来像.framework)的静态库。我想iOS通用框架和我在Kiwi库中遇到的问题是一样的。我确信越来越多的人有这个问题…我最近也有同样的问题。我不得不调整几个构建设置,以使其再次为i386和x86_64构建。在运行脚本构建阶段,我取消选中了“仅在安装时运行脚本”复选框。您需要为所有Arch arm64 armv7 armv7s i386 x86_64构建脚本,然后使用lipo命令构建新文件 要构建arm64 armv7 armv7,请使用iphone平台/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer 对于i386 x86_64,请使用模拟器/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer
我用这个来生成一个C++ LIB。 例:
我希望这有帮助 除了有效的拱门外,还有拱门。您将ARCHS设置为什么?其设置为:
ARCHS=$(ARCHS\u标准)
如果您在那里添加i386/x86\u 64,则会从脚本中获得生成错误。从另一个SO和Github问题来看,我看到有效的_arch似乎是需要设置的。此时,我已经能够手动将lipo构建组合在一起,以满足当前的需要。然而,该脚本直到不久前才开始工作,据互联网报道,其他人对5.1.1或Mk8脚本没有任何问题。所以我很感兴趣是什么改变了我的构建设置,导致了这个问题。天哪,这就是它所需要的一切。。。谢谢
$(CC) $(CFLAGS) -arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer $(CPP_SRC_DIR)/*.cpp
$(XCODE_AR) rvs $(IOS_TARGET_A_DIR)/$(LIB_NAME).x86_64.a $(IOS_TARGET_O_DIR)/x86_64/*.o
#Build fat library
$(XCODE_LIPO) -create $(IOS_TARGET_A_DIR)/*.a -output $(IOS_TARGET_FAT_DIR)/lib.a