【问题标题】:Xamarin wrapper hell - handling lots of external dependenciesXamarin 包装器地狱 - 处理大量外部依赖项
【发布时间】:2018-04-05 08:32:03
【问题描述】:

我有一个话题让我彻夜难眠。它是 Xamarin 绑定包装器。我有一个需要使用外部库的项目。

在 iOS 方面还不错 - 大约只有 6 个框架。 但是谈到 Android - 我们大约有 10-15 个罐子和 6 个 aars。 其中大部分更新非常频繁。

把所有这一切都包装起来是一场可怕而可怕的噩梦。如何处理? Wrapper 项目几乎不可重用,存在大量错误。每次更新有时需要我们 2-3 周的完整团队工作来完成。在那之后,由于参考问题,我们还有 1-2 周的时间来实施它。

需要一些更简单的方法。你如何处理你的包装纸?是否有可能通过某种合并 jars/aars 和框架来简化这项工作?

【问题讨论】:

    标签: .net xamarin binding xamarin.ios xamarin.android


    【解决方案1】:

    需要一些更简单的方法。你如何处理你的包装纸?是否有可能通过某种合并 jars/aars 和框架来简化这项工作?

    您可以参考Binding a Java Library,它使用JNI 直接调用Java 库代码中的调用,创建一个Bindings Library,使用C# 包装器自动包装库,以便您可以通过C# 调用调用Java 代码。

    对于 .Jar 库,请参考 Binding a .JAR,对于 .aar,请查看此文档:Binding an .AAR

    有时在创建绑定库后,编译该库时会出现一些错误,这时您可能需要检查Customizing BindingsTroubleshooting Bindings。通常可以通过修改元数据文件或添加额外的部分类/接口来解决问题......然后根据原始Java库覆盖它。

    【讨论】:

    • 在为 Jar 和 AAR 制作了几十个功能齐全的 Binding Java 库之后,我可以告诉你 - 它不起作用。有数百个问题无法通过元数据或添加部分类/接口来解决。每个新 jar/aar 都需要解决新的问题。很多情况甚至需要手动编辑 obj 生成的文件。所以不行。我不是处理依赖关系的好方法。我们在这里只在 Android 上讨论。 iOS 呢?你有库,你的开发人员更新到新版本的 swift 和 tada,这又是一个全新的世界。
    • @PatrykRomańczuk,如果有问题无法解决,也许您可​​以直接发布问题询问具体问题,这应该有助于 Xamarin 提高与 Java lib 的兼容性。对于iOS,我不熟悉,但是有关于Binding iOS Libraries的文档。
    • @PatrykRomańczuk,对于库的更新问题,是的,它应该再次包装,Xamarin 不是这些库的作者,如果我们能找到具有 xamarin 版本的库并且这些版本也应该是幸运的如果原始库得到更新,则更新,它仍然可能再次成为一个新世界。你说得对,Java lib转C#太麻烦了,我也这么认为。
    • 现在我还远远没有解决问题。太多了,太频繁了。问题是 - 当您知道您将有大约 25 个库来包装和定期更新时,您能做什么?现在我们包装和实现这个库的速度比它们来得慢,这简直太疯狂了。
    • @PatrykRomańczuk,对不起,我没有更好的主意,AFAIK,没有更简单的包装方法。如果您需要一些工具来完成这项工作,对不起,我不知道......
    猜你喜欢
    • 2015-12-21
    • 2012-01-26
    • 1970-01-01
    • 2016-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多