Kivy应用打开需要30秒
在iOS和Android设备上打开一个Kivy应用需要大约30秒,而在Mac OSX上只需要3秒(我还没在Windows上试过)。为了在iOS上构建这个应用,使用了kivy-ios这个包,而在Android上则使用了buildozer。
下面是打开这个应用时在iPhone上的控制台日志。我对导致启动时间慢的原因感到困惑。
Aug 19 13:29:29 My-iPhone kernel[0] <Debug>: launchd[2943] Container: /private/var/mobile/Applications/5CCB9A16-0288-4075-8269-212FD5AB2767 (sandbox)
Aug 19 13:29:29 My-iPhone backboardd[28] <Error>: HID: The 'Passive' connection 'my_app' access to protected services is denied.
Aug 19 13:29:30 My-iPhone my_app[2943] <Warning>: PythonHome is: /var/mobile/Applications/5CCB9A16-0288-4075-8269-212FD5AB2767/my_app.app
Aug 19 13:29:30 My-iPhone my_app[2943] <Warning>: Initializing python
Aug 19 13:29:31 My-iPhone my_app[2943] <Warning>: Running main.pyo: /var/mobile/Applications/5CCB9A16-0288-4075-8269-212FD5AB2767/my_app.app/YourApp/main.pyo
Aug 19 13:29:31 My-iPhone backboardd[28] <Warning>: CoreAnimation: timed out fence 2caa7
Aug 19 13:29:31 My-iPhone SpringBoard[34] <Warning>: CoreAnimation: failed to receive fence reply: 10004003
Aug 19 13:29:31 My-iPhone backboardd[28] <Warning>: CoreAnimation: updates deferred for too long
补充:这个应用在第一次启动和后续启动时几乎都需要30秒才能打开。
1 个回答
5
正如Ryan P在评论中提到的,第一次运行会比较慢,但不应该需要30秒。
有一点很重要,就是这个应用在第一次运行时需要进行一些必要的解压和初始化工作,而每次运行时也会进行一些初始化。此外,它还会执行你在main.py中的代码和app的build()方法里的内容。如果这些内容比较复杂,确实会花一些时间,但用户在这个过程中是看不到任何东西的。为了避免这个问题,你可以先只加载一个简单的界面,然后再慢慢加载其他内容。
你可能还想把你的应用性能和其他kivy应用进行对比,比如在应用商店里的kivy 2048。我不确定Mathieu是否特别花时间去优化这个应用,但它的表现应该是相当不错的。如果它的加载速度比你的快很多,那问题可能出在你的代码或apk上。
我们通常建议,kivy的初始化时间不应该超过几秒钟(尤其是在第一次运行之后),对于一些在新设备上运行的应用,通常在一秒钟以内就能完成。
补充说明:我上面说的都是基于我对Kivy安卓工具链的了解。我对iOS的具体情况不太清楚,但它们是非常相似的,你可以期待类似的事情也很重要。