【问题标题】:How does Kivy achieve cross-platform compatibility?Kivy如何实现跨平台兼容?
【发布时间】:2020-08-23 21:04:05
【问题描述】:

是什么让 Kivy 能够跨平台兼容?

也就是说,相同的 Kivy 源代码如何在多种硬件平台(如桌面、iOS 和 Android)上生成应用程序?

【问题讨论】:

  • 因为它是这样写的。对于它支持的每个平台,它都有通用的、独立于平台的代码和独立的平台相关代码。很多跨平台软件都是这样的。
  • @MattDMo 我也这么认为。我问是希望了解 Kivy 是如何做到这一点的,包括文档链接(如果有)。
  • Kivy 源代码仓库是here,如果你想自己研究的话。我不确定有多少关于跨平台可操作性的实际机制的文档,但扫描旧问题可能会提供信息。

标签: python python-3.x user-interface kivy cross-platform


【解决方案1】:

我想实现跨平台兼容性有两个关键的极端:

  1. 通过在每个平台上以不同的方式实现事物,以便 Kivy 在每个平台上运行不同的代码,但通过使输出看起来相同来隐藏用户的差异。
  2. 通过使用所有不同平台都支持的外部 API,从而使 Kivy 自己的代码基本相同,由平台自己负责使其工作。

Kivy 两者都有,但特别是所有绘图都使用第二种类型的 OpenGL ES 2:所有 Kivy 的绘图逻辑在所有支持的平台上几乎相同。当然还有其他类型,例如在计算像素密度等显示指标时,Kivy 在每个平台上使用不同的方法,但不会向用户公开任何细节。

当然,在考虑整体情况时,事情会更加微妙。例如,Kivy 使用 SDL2 作为库来创建窗口、设置其大小/位置处理暂停/恢复等,因此 Kivy 的代码在这里属于第二种类型,因为它在每个平台上以相同的方式调用 SDL2。然而,SDL2 本身并不是平台原生的,它属于第一种类型,它在不同平台上以不同方式实现其 API,但在每个平台上向 Kivy 公开相同的 API。

【讨论】:

    猜你喜欢
    • 2011-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多