小编典典

如何在不暴露源代码的情况下分发Swift库?

swift

我尝试的第一件事是创建一个静态库,但后来我发现尚不支持该库。Apple Xcode Beta 4发行说明:

Xcode不支持构建包含Swift代码的静态库。(17181019)

我希望Apple能够在下一个Beta版本或GA版本中添加它,但我在他们的博客上阅读了以下内容:

在确保应用程序的运行时兼容性的同时,Swift语言本身将继续发展,并且二进制接口也将发生变化。为了安全起见,应使用相同版本的Xcode和Swift编译器构建应用程序的所有组件,以确保它们可以一起使用。

这意味着需要仔细管理框架。例如,如果您的项目使用框架与嵌入式扩展共享代码,则将需要一起构建框架,应用程序和扩展。
依靠使用Swift的二进制框架(尤其是来自第三方的二进制框架)是危险的
。随着Swift的变化,这些框架将与您的其他应用程序不兼容。当二进制接口稳定
一两年后,Swift运行时将成为主机操作系统的一部分,并且此限制将不再存在。

这个消息真的使我感到震惊,他为其他开发人员编写了供其使用并包含在其应用程序中的组件。这是否意味着我必须分发源代码或等待两年?还有其他方法可以在不公开代码的情况下分发库(公司政策)吗?

更新:

Swift代码混淆现在是一种选择吗?


阅读 362

收藏
2020-07-07

共1个答案

小编典典

Swift现在是beta版,甚至对于1.0 Apple来说,它也很明显地遵循了受限制的功能集-做好一些事情比尝试做任何事情都要好。

因此,目前尚无法分发二进制静态库。大概这会在Swift 1.0之后的某个时候改变。现在,您可以:

  • 分发源
  • 如果您认为ABI脆弱,请运送一个二进制 框架 (而不是一个库)
  • 将ObjC用于库代码

您也可以始终结合使用各种方法:例如,在ObjC中实现库的关键(秘密)细节,并提供将其包装在一个不错的Swift API中的Swift源代码。

混淆以极易改变的语言编写的代码听起来像是维护噩梦的秘诀。

2020-07-07