我正在试着在我的iPhone 4s上运行Swift应用程序。它在模拟器上运行良好,我的朋友也可以在他的iPhone 4s上成功运行。我有iOS 8和官方发布的Xcode 6。
我试过了
重启Xcode, iPhone,电脑
清洁和重建
撤销并创建新的证书/供应配置文件
运行路径搜索路径是$(inherited) @executable_path/Frameworks
包含Swift代码的嵌入内容是“是”
代码签名身份是开发人员
下面是完整的错误
dyld: Library not loaded: @rpath/libswiftCore.dylib
Referenced from: /private/var/mobile/Containers/Bundle/Application/LONGSERIALNUMBER/AppName.app/AppName
Reason: no suitable image found. Did find:
/private/var/mobile/Containers/Bundle/Application/LONGSERIALNUMBER/AppName.app/Frameworks/libswiftCore.dylib: mmap() error 1 at
address=0x008A1000, size=0x001A4000 segment=__TEXT in Segment::map() mapping
/private/var/mobile/Containers/Bundle/Application/LONGSERIALNUMBER/APPLICATION_NAME/Frameworks/libswiftCore.dylib
我们有一个unity项目,它创建了一个xcode项目,其中包括使用swift的库。
我们尝试了这个话题上的每一个合理的建议。
毫无效果。代码在新设备上运行良好,在iOS上崩溃<=12
看起来swift是如此的聪明,即使你将它设置为"ALWAYS_EMBED_SWIFT_LIBRAIES"="YES",它也不包括swift库。
真正为我们解决问题的是在项目中包含一个虚拟的swift文件。
该文件必须包含对分派、基础库的调用。
显然,这暗示了mighty-xcode强制包含库,但这次是真的。
下面是我们添加的虚拟文件,使其工作:
import Dispatch
import Foundation
class ForceSwiftInclusion {
init() {
// Force dispatch library.
DispatchQueue.main.async {
print("something")
}
// Force foundation library.
let uuid = UUID().uuidString
print("\(uuid)")
}
}
对于统一,也添加项目。AddBuildProperty(target, "SWIFT_VERSION", "Swift 5");到创建xcode项目的后期处理。
对于我来说,构建一个依赖于第三方Swift库(例如SQLite)的MacOS命令行Swift应用程序,上面的解决方案似乎都不起作用。有效的方法是直接将以下路径添加到构建设置中的Runpath搜索路径中:
/应用程序/ xcode /内容/ /开发/工具链/ XcodeDefault.xctoolchain / usr / lib /快速/ macosx /
这样做确实会在运行时给出一个警告,说Xcode已经找到了两个版本的libswiftCore——这是有道理的。除了没有包含这一行导致Xcode找不到任何版本的libswiftCore。
无论如何,这将为我做,即使它似乎不正确-我的应用程序只是一个实用工具,我不打算分发,至少它现在运行!