关于在虚拟机上打包的测试,我做和很多次了,用过本教材提供的kivy-p4a-64.ova,使用p4a打包;也用过https://github.com/nkiiiiid/ 上下载的kivydev64-5.0.ova,使用Buildozer打包。
我用了自己编的代码和教材上提供的代码测试了几天了,经常会出现APP运行闪退的问题。大致情况是测试文件在虚拟机上执行 “python3 main.py“ 可以正常运行,但是完成打包后,在模拟器及手机上安装后运行多数情况会闪退,只有少数能够运行,能够运行的基本都是代码简单的程序,复杂些的一个都不成功。而我只是用到了kivy库,没有使用其他库。
我尝试了用ADB链接模拟器,抓取了两个闪退软件的日志,对比后发现,两个软件都出现了同样的警告(如下):
04-24 17:14:10.045 5597 5621 I python : File "/data/user/0/com.myapp.calibration/files/app/crystax_python/site-packages/kivy/app.py", line 799, in run
04-24 17:14:10.045 5597 5621 I python : WARNING:kivy:stderr: File "/data/user/0/com.myapp.calibration/files/app/crystax_python/site-packages/kivy/app.py", line 799, in run
04-24 17:14:10.050 5597 5621 I python : File "/data/user/0/com.myapp.calibration/files/app/crystax_python/site-packages/kivy/app.py", line 596, in load_kv
04-24 17:14:10.050 5597 5621 I python : WARNING:kivy:stderr: File "/data/user/0/com.myapp.calibration/files/app/crystax_python/site-packages/kivy/app.py", line 596, in load_kv
04-24 17:14:10.052 5597 5621 I python : File "/data/user/0/com.myapp.calibration/files/app/crystax_python/site-packages/kivy/lang/builder.py", line 290, in load_file
04-24 17:14:10.053 5597 5621 I python : WARNING:kivy:stderr: File "/data/user/0/com.myapp.calibration/files/app/crystax_python/site-packages/kivy/lang/builder.py", line 290, in load_file
04-24 17:14:10.055 5597 5621 I python : File "/data/user/0/com.myapp.calibration/files/app/crystax_python/stdlib.zip/encodings/ascii.py", line 26, in decode
04-24 17:14:10.055 5597 5621 I python : WARNING:kivy:stderr: File "/data/user/0/com.myapp.calibration/files/app/crystax_python/stdlib.zip/encodings/ascii.py", line 26, in decode
04-24 17:14:10.422 2124 3323 I ActivityManager: Process com.myapp.calibration (pid 5597) has died
警告内容全部是kivy库的,我的电脑上安装的python3.9 和kivy2.0,比打包环境的文件版本高。
从我个人的测试经历来看,确实可能与kv文件有关,原因是其中一次打包的app成功运行后,我尝试对kv文件进行了修改,添加了内容,再次打包生成的app运行就失败了。而kv文件里也就只用到了label、textinput、button和checkbox。
希望有大神能指导,谢谢。