【问题标题】:How to compile swift library project into .so file?如何将 swift 库项目编译成 .so 文件?
【发布时间】:2014-06-06 08:16:46
【问题描述】:

我是 XCode 和 Objective C / Swift 的新手。我正在尝试制作一个不依赖可可或任何东西的 Swift 库项目。所以它只是 Swift 文件。我应该创建什么类型的项目(我假设有多种方法可以做到这一点?我需要如何配置项目以使其构建为 .so 文件?最后,如何将其构建为 .so 文件? so 文件?

我正在使用 Xcode6-beta。

【问题讨论】:

  • 我之前正在考虑做类似的事情,并发现如果没有“import Foundation”,您几乎无法使用该语言做任何事情(看看标题!),所以我不确定如何到目前为止,我们可以使用“不依赖于 Cocoa”位。很想知道人们是否会在他们的尝试中走得更远。

标签: xcode swift xcode6


【解决方案1】:

您可以通过创建一个新的 Xcode 项目并选择 iOS/OS X -> Framework & Library -> Cocoa Touch Framework 然后在下一个屏幕上将语言设置为 Swift 来为 iOS 创建一个 Swift 库。

创建此项目后,您无需链接到 Cocoa 框架,并且可以根据需要删除对它们的任何引用。

编译此项目后,Xcode 将在您的构建目录中创建一个 .framework 文件夹,其中包含一个动态库,然后您应该能够链接该动态库。但是请注意,我自己在直接链接到这个文件方面还没有取得任何成功,即使它看起来是一个标准的动态库。

就在 Android 上使用这个共享对象文件而言,我相信你会很不走运,因为 Swift 语言(很像 Objective-C)需要一个运行时库,而目前其他平台上根本没有这个库。

【讨论】:

  • 有价值的信息。谢谢你。 swift 可能使用与目标 C 相同的运行时。人们已经能够为 Android 包含目标 C 运行时:apportable.com 我可能问这个问题有点太早了。 Apple 尚未发布有关它的大量信息,开发人员仍在试验该语言。
【解决方案2】:

...我认为您正在稍微限制您的思路或期望快速跨越式发展 已准备好使用目标 c 和可可,因此您将无法完全避免可可,但您不会有编写其中任何一个,编译器都会为您完成。但是您仍然必须使用可可框架或模块,例如基础(包含许多用于程序开发的专用对象)、UIKit、CoreData,但是这些不需要您编写可可。如果我没记错的话,.so 文件是在编译时生成的,所以你从来没有真正接触过那个文件,而是支持文件 .swift

去做

如果您希望以编程方式完成所有操作,或者如果您想要 xib 或故事板只是创建一个新项目,我更喜欢一个空项目。(将编程语言设置为 swift 并决定您是否需要核心数据或不完成项目向导的事情和bam 你有一个 YourAppDelegate.swift 你可以制作另一个 .swift 文件或故事板,希望你知道从那里做什么。Swift 书可以在 ibooks 上免费获得,它写得很好

虽然 cocoa 和 swift 完全分开还需要一段时间……如果有的话

【讨论】:

  • 我的目标不是在 osx 或 ios 应用程序上使用它。我的目标是使用它来构建一个可以在 iOS 和 Android 之间共享的共享库/核心应用程序(通过 android NDK)。这个库将没有 UI 组件。语言特性不应该依赖于 Cocoa。我应该能够编译不需要可可的共享代码。也许我误解了可可的角色?到目前为止,我已经阅读了 Swift 上 iBook 的 1/4。它没有告诉我有关编译的任何信息。我只是想编译一个 .so 文件,看看我是否可以通过 Java 的 JNI 访问它
  • 哦,对不起,我的回答是完全错误的.so 也许你可以挑选一个 .playground 文件,但我不确定 java 将如何访问这些值
  • nvm 在我刚试过的操场上挑选,它有一个 .swift 文件和一个时间线文件。我还编译了一个只包含 swift 文件和 plist 的应用程序,在编译期间它添加了一堆其他文件,并且 swift 文件被编译为 .o 并且位于普通对象目录中
猜你喜欢
  • 1970-01-01
  • 2012-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多