我将命令行工具目标添加到iOS应用程序并与swift框架链接。 (使用Realm
和SwiftyJSON
进行测试)
使用这些库构建命令行工具。
Xcode输出:
dyld: Library not loaded: @rpath/libswiftCore.dylib
Referenced from: .../Xcode/DerivedData/.../Build/Products/Debug/RealmSwift.framework/Versions/A/RealmSwift
Reason: Incompatible library version: RealmSwift requires version 1.0.0 or later, but libswiftCore.dylib provides version 0.0.0
创建空的Swift命令行工具并链接Realm框架
领域版本:github "realm/realm-cocoa" "master"
SwiftyJSON版本:github "acegreen/SwiftyJSON" "swift3"
Xcode版本:8 GM(在App Store上)
依赖经理+版本:Carthage 0.18
答案 0 :(得分:8)
命令行工具最适合使用静态存档,因为所有内容都作为单个二进制文件分发。看看Realm,我不知道有一个静态存档选项。他们确实有一个我为macOS编译的iOS静态框架,但这并不是你想要的。您可能想尝试更多地使用Realm的源代码来查看是否可以使用Realm来生成静态存档。
与此同时,作为解决方法,您需要告诉Xcode在运行时在哪里找到dylib,并在某处安装它们。
@rpath
"。这将使您的项目构建并找到Realm库,但现在它将无法找到libswiftCore.dylib。这是因为通常命令行工具与Swift库静态链接,但只要添加框架/ dylib,链接器就不再包含静态版本。
libswiftObjectiveC.dylib libswiftIOKit.dylib libswiftFoundation.dylib libswiftDispatch.dylib libswiftDarwin.dylib libswiftCoreGraphics.dylib libswiftCore.dylib
您可以在Xcode安装中找到它们./Contents/Developer/Toolchains/Swift_2.3.xctoolchain/usr/lib/swift/macosx /
警告:请记住,您需要使用命令行工具分发框架和dylib,并且它们需要与工具位于同一目录中。您可以通过指定不同的运行路径将它们放在系统的其他位置,但是您仍然需要使用工具分发它们。
关于.app软件包的好处在于它为您提供了放置这些内容的地方,用户只需将其拖放即可安装它。如果您可以获得Realm的静态存档版本,则可以将所有内容分发到一个二进制文件中。