自定义框架无法在iOS模拟器中加载(错误的架构)

时间:2015-06-05 09:35:33

标签: ios objective-c xcode

我正在尝试为iOS8构建一个Cocoa Touch Framework,它最终将嵌入到应用程序中并提交给App store,因此发布版本仅包含armv7非常重要,但调试版本也必须在模拟器中运行。因此,我一直在关注this tutorial,当我尝试在嵌入了框架的模拟器中运行应用程序时,我遇到了运行时错误:

dyld: Library not loaded: @rpath/TestFramework.framework/TestFramework
  Referenced from: /Users/jay/Library/Developer/CoreSimulator/Devices/97715157-EABB-4F38-8CA0-62768358DDD6/data/Containers/Bundle/Application/4856FC75-6C5B-4F7E-91A9-70CA1863D130/Test.app/TestFramework
  Reason: no suitable image found.  Did find: /Users/jay/Library/Developer/CoreSimulator/Devices/97715157-EABB-4F38-8CA0-62768358DDD6/data/Containers/Bundle/Application/4856FC75-6C5B-4F7E-91A9-70CA1863D130/Test.app/Frameworks/TestFramework.framework/TestFramework: mach-o, but wrong architecture

然而,当我浏览框架二进制文件时,它抱怨

(/Users/jay/Library/Developer/CoreSimulator/Devices/97715157-EABB-4F38-8CA0-62768358DDD6/data/Containers/Bundle/Application/4856FC75-6C5B-4F7E-91A9-70CA1863D130/Test.app/)

然后运行xcrun lipo -info TestFramework我得到输出Non-fat file: TestFramework is architecture: i386所以我现在有点迷路了。它在实际的iOS设备上运行良好。

2 个答案:

答案 0 :(得分:0)

根据问题和您的意见,最可能的原因是您正在构建32位框架并将其链接到64位应用程序。如果情况并非如此,请提供崩溃日志的全文。

你应该构建你的框架4way-fat:

  i386/iphonesimulator
  x86_64/iphonesimulator
  armv7/iphoneos
  arm64/iphoneos

为了使它变成4路胖,你需要使用armv7 / arm64设备构建手动将你的i386 / x86_64 sim版本组合在一起。 Xcode不支持使用两种不同的(从Xcode的角度来看)平台构建4路胖。

答案 1 :(得分:0)

就我而言,我使用的是一个自定义框架,其中包含我在Interface Builder中使用的视图,并且在Interface Builder构建阶段遇到了此错误。

运行pod install对其进行了修复。