我正在尝试为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设备上运行良好。
答案 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
对其进行了修复。