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