1. 苏葳的备忘录首页
  2. 开发工具

Kivy编译成apk后在Android手机上的日志位置

kivy android python ubuntu在电脑上写好一个kivy程序,编译成apk后拷至手机,运行,出现kivy启动界面,随即退出。怎么查找错误原因呢?在Ubuntu下运行该Kivy程序(用Python main.py命令),会打印出调试及错误信息,但在手机上怎么办?想到了adb logcat。由于开发环境在一个Ubuntu虚拟机上,于是费了九牛二虎之力,将盛大bambook S1手机连到虚拟机上,执行adb logcat命令,然后执行程序,果然看到了一行错误提示(数死早。。):

I/python ( 4775): [DEBUG ] [Resource ] add </system/fonts> in path list
I/python ( 4775): Traceback (most recent call last):
I/python ( 4775): File "/home/kivy/myprogs/SwitchMT/main.py", line 218, in <module>
I/python ( 4775): File "/home/kivy/android/python-for-android/build/python-install/lib/python2.7/site-packages/kivy/app.py", line 600, in run
I/python ( 4775): File "/home/kivy/myprogs/SwitchMT/main.py", line 201, in build
I/python ( 4775): File "<string>", line 15, in write
I/python ( 4775): UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 7: ordinal not in range(128)

该行是一条含中文字符的print语句,字串前未加u。反正以前调试用的语句,不作分析,直接注释去掉。再次运行,通过。终于出现了程序的kivy界面了。再查看前面日志,却发现这么一句:

I/python ( 4775): [INFO ] Kivy v1.8.0-dev
I/python ( 4775): [INFO ] [Logger ] Record log in /mnt/sdcard/org.test.SwitchMT/.kivy/logs/kivy_13-08-04_1.txt

自己升级安装的,在ubuntu中运行时所用的kivy v1.7.1,怎么打apk包时变成了1.8.0-dev呢?不得而知。重要的是,该程序在 /mnt/sdcard/org.test.SwitchMT/.kivy/logs下产生有日志文件!找到该目录,发现甚至连main.py都被解包了出来,而日志文件里也指明了错误, 这就是说,运行完kivy程序如果出错,只需在日志目录查看日志文件即可。省去配置麻烦的调试环境了。

看了看,发现之前跑过的kivy程序也都有各自的包名下相应的目录,看来这就是kivy的运行机制,当然不知道是不是跟编译打包时加的debug选择有关系,是不是改成release就没有这些目录了呢?毕竟将py源码解出来到卡上不太安全。以后再试吧,不过目前至少是解决了查看程序报错日志的问题了,特此记录。

原创文章,作者:苏葳,如需转载,请注明出处:https://www.swmemo.com/504.html

发表评论

邮箱地址不会被公开。 必填项已用*标注