Kivy 应用程序需要 30 秒才能打开

mca*_*tle 4 python android ios python-2.7 kivy

It is taking about 30 seconds to open a Kivy app on iOS and Android devices (it takes only 3 seconds to open on Mac OSX... haven't tried it on Windows). The kivy-ios package is used to build the app for iOS and buildozer is used to build the app for Android.

The console log for opening the app on an iPhone is below. I'm at a loss as to what is causing the slow start time.

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
Run Code Online (Sandbox Code Playgroud)

EDIT: The app takes almost 30 seconds to open on first launch and on subsequent launches.

inc*_*ent 5

正如 Ryan P 在评论中所说,第一次运行需要更长的时间,但它不应该需要 30 秒。

通常很重要的一件事是,应用程序不仅会执行一些必要的解包(在第一次运行时)和应用程序初始化(在每次运行时),还会运行 main.py 中的代码以及应用程序 build() 方法中的任何内容。如果这很重要,则需要一些时间,但在此期间用户将看不到任何内容。您可以通过仅从最小的 gui 开始并更懒惰地加载其余部分来避免该问题。

您可能还想针对另一个 kivy 应用程序(例如Play 商店中的kivy 2048)对您的性能进行基准测试。我不知道 Mathieu 是否特别为此花费了大量时间进行优化,但它至少应该表现得非常合理。如果加载速度比您的快得多,则问题在于您的代码/apk。

我们通常建议 kivy 进行初始化(尤其是在第一次运行之后)的时间应该不超过几秒钟,对于小心谨慎的新设备上的应用程序,通常不到一秒钟。

编辑:我应该澄清一下,以上内容来自我对 Kivy 的 android 工具链的了解。我不知道 ios 的任何细节,尽管它非常相似,您可以期望类似的事情很重要。