您可以包装Swift框架并将其公开给Xamarin Forms吗?

时间:2018-07-12 16:19:58

标签: swift xamarin.forms

这是我尝试过的最复杂的事情,在花更多时间之前,我想知道是否还有滚雪球的机会。

我正在尝试实现使用第三方服务的功能。公司中的其他人正在使用一项特定的服务,因此我很乐意使用该服务。但是,该服务仅以Android和Swift的库形式提供SDK。我没有可以使用的Xamarin Forms SDK或公共Web API。由于我仍在处理建立帐户的过程,因此其中一些仍在进行中,所以我还没有实际的SDK。所以我不知道我是否有.a或.framework。

所以我想,“好吧,您不能将库绑定到Xamarin吗?”我认为我可以对其进行测试,并在完成时手头有SDK。我开始使用iOS,因为Android的情况似乎更简单。我不了解Swift或Obj-C,所以我花了几天的时间在Swift上戳书,我有足够的信心编写足够的代码来尝试一些事情。然后我感到非常头疼。

如果您正在使用Obj-C并拥有要绑定的库的源代码,则进行绑定似乎很容易。或者至少这就是Xamarin文档所涵盖的内容。 “下载文件!创建一个新项目!用这种方式构建它,运行此工具,调整这些文件,完成!”很复杂,但是合理。

关于绑定Swift .a文件的讨论并不多。我不知道这是否意味着您不能这样做,或者它是否像绑定.framework一样复杂。对于框架,似乎需要付出巨大的努力。您必须以一种特殊的方式来构建它,使用一种工具将所有架构组合到一个文件中,使用一些Xamarin工具生成一些代码,创建一个绑定库(其中必须包含我可能不知道的依赖项,因为我将黑色包装为黑色,框SDK),然后进行操作,因为Swift运行时库并没有到达应该使它们全部正常运行的位置。我发现可能有2篇博客文章详细描述了该过程,有一篇评论说“这太难了”,他不得不调整一些文件,我不确定自己是否会再没有几篇文章。

所以我想,“好吧,如果我用Obj-C包裹它呢?”我并没有花很多时间,但是似乎我正在阅读的内容表明,Swift代码必须在我正在使用的库中用@objc专门标记其内容。我不确定是否是这样,所以可能无济于事。

所以。要使这个成为实际问题:

我是否可以:

  1. 创建一个新的Swift .framework项目。
  2. 它引用了已经存在的SDK。
  3. 使用与Xamarin绑定更友好的类型包装该SDK。
  4. 通过this之类的过程执行Xamarin绑定。
  5. 用大约一周的Swift经验来完成所有这些工作。

0 个答案:

没有答案