Kivy如何实现跨平台兼容性?

3

Kivy是如何实现跨平台兼容的?

换言之,同一份Kivy源代码如何生成适用于多种硬件平台的应用程序,例如桌面、iOS和Android?


因为代码就是这样编写的。它具有通用的、独立于平台的代码,以及针对其支持的每个平台的特定于平台的代码。许多跨平台软件都是这样的。 - MattDMo
@MattDMo 我也是这么想的。我问这个问题是希望学习Kivy是如何做到这一点的,包括文档链接(如果有的话)。 - Asker
1
如果您想自己研究,Kivy源代码存储库在此处。我不确定有多少关于跨平台可操作性实际机制的文档,但扫描旧问题可能会很有启发性。 - MattDMo
1个回答

2
我认为实现跨平台兼容性有两个关键极端:
1. 在每个平台上以不同的方式实现事物,使Kivy在每个平台上运行不同的代码,但通过使输出看起来相同来隐藏这种差异。
2. 使用所有不同平台都支持的外部API,使Kivy自己的代码基本相同,并且平台本身负责使其工作。
Kivy具有这两种方法,但特别是所有绘图都使用OpenGL ES 2,这是第二种类型:所有Kivy的绘图逻辑在所有支持的平台上几乎完全相同。当然还有其他类型,例如在计算显示指标(如像素密度)时,Kivy在每个平台上都使用不同的方法,但不向用户公开任何细节。
当考虑整体时,情况要复杂得多。例如,Kivy使用SDL2作为创建窗口、设置其大小/位置处理暂停/恢复等的库,因此Kivy的代码在这里属于第二类,因为它在每个平台上以相同的方式调用SDL2。然而,SDL2本身并不是平台本地的,属于第一种类型,在不同的平台上以不同的方式实现其API,但在每个平台上向Kivy公开相同的API。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接