Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/105.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS通用框架不构建i386?_Ios_Xcode5_Ios Frameworks_Ios Universal Framework - Fatal编程技术网

iOS通用框架不构建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

我正在使用这个神奇的脚本来构建我自己的框架,它在一段时间内工作得非常好。我不确定确切的时间,但它似乎已经停止建设i386。使用生成的框架的应用程序不再与模拟器一起工作

我已经设置了
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