Kivy A to Z -- Kivycatalog例子无法在Android平台上运行及异常的解决方法
来源:互联网 发布:肌肉发力原理知乎 编辑:程序博客网 时间:2024/06/10 02:14
在example/demo目录下的有一个很重要的示例:kivycatalog,演示了常用了控件的使用
但是用编译出来的Android平台上的Kivy代码运行会出异常,下面讲下解决方法
异常一:TypeError: show_keyboard() takes no arguments (2 given)
原因:这是因为show_keyboard是没有参数的,说明在1.8.0的代码在Android平台上没有维护好
解决方法:
找到core\window\window_pygame.py的425,将android.show_keyboard(target, input_type) 改成:android.show_keyboard()
异常二:ImportError: No module named pygments
原因: 没有安装pygments
解决方法:
在python-for-android\recipes目录下新建pygments目录,在目录下创建recipe.sh,内容如下:
#!/bin/bashVERSION_pygments=${VERSION_pygments:-1.6}URL_pygments=http://pypi.python.org/packages/source/P/Pygments/Pygments-$VERSION_pygments.tar.gzMD5_pygments=BUILD_pygments=$BUILD_PATH/pygments/$(get_directory $URL_pygments)RECIPE_pygments=$RECIPES_PATH/pygmentsfunction prebuild_pygments() { true}function shouldbuild_pygments() { if [ -d "$SITEPACKAGES_PATH/pygments" ]; then DO_BUILD=0 fi}function build_pygments() { cd $BUILD_pygments push_arm try $HOSTPYTHON setup.py install -O2 unset LDSHARED pop_arm}function postbuild_pygments() { true}
然后重新编译:
./distribute.sh -m 'openssl pyjnius pygments docutils pil kivy'
注意,这里还加了一个docutils的python模块的编译,如果不加上的话,会出现和pygments类似的异常,只是docutils默认已经在recipes下存在了,所以只要编译即可。
注:(关于编译的详细教程请看《Kivy a to z -- Kivy的编译环境的搭建以及编译和运行》)
异常三:ImportError: No module named docutils
原因: 没有安装docutils
解决方法:解决方法见异常二
异常四: 在点击文本框时出现异常:AttributeError: 'KivyRenderTextInput' object has no attribute 'cursor_color'
原因: kivy\data\style.kv使用了未定义的属性
解决方法:
找到kivy\data\style.kv的162行,替换:
rgba: (self.cursor_color if self.focus and not self.cursor_blink else (0, 0, 0, 0))
为:
rgba: (1, 0, 0, 1 if self.focus and not self.cursor_blink else 0)
以上四个异常处理完后需重新编译:
./distribute.sh -m 'openssl pyjnius pygments docutils pil kivy'
最后,来看下在Android平台上运行起来的Kivycatalog例子:
- Kivy A to Z -- Kivycatalog例子无法在Android平台上运行及异常的解决方法
- Kivy A to Z -- 通过绑定进程运行CPU提高Python程序在多核CPU平台上的性能
- Kivy A to Z -- Kivy的运行机制
- Kivy A to Z -- 调试篇之在Android平台调试Python代码
- Kivy a to z -- Kivy的编译环境的搭建以及编译和运行
- Kivy A to Z -- Android apk的生成过程
- Kivy A to Z -- Kivy模块的加载
- Kivy A to Z -- Kivy的消息处理机制
- Kivy A to Z -- Kivy的图形系统简介
- Kivy A to Z -- Kivy的UI系统简介
- Kivy A to Z -- Kivy之Properties
- Kivy a to z -- 前言
- Kivy A to Z -- 如何在Kivy中获取SD卡或者U盘的插拔事件
- Kivy a to Z -- 一个简单的通过adb同步Android系统文件的工具
- Kivy A to Z -- 如何从python代码中直接访问Android的Service
- Kivy A to Z -- Python Decorator的使用
- Kivy A to Z -- 监听网络的连接状态
- Kivy a to z -- Kivy的编译过程-distribute.sh脚本分析
- 编程之美初赛第二场 神奇的数列 + 字符串压缩
- 自考,轻轻的走过
- VC++常见问题汇总(一)
- 区间dp模型(石子归并,括号匹配,整数划分)
- 蛐蛐儿:用声音传输文件
- Kivy A to Z -- Kivycatalog例子无法在Android平台上运行及异常的解决方法
- SSH原理与运用(二):远程操作与端口转发
- VC++常见问题汇总(二)
- 玩转Eclipse — 自动注释插件JAutodoc
- Android开发之通过代码安装apk文件
- 记ACM之路的第一步——西南交大校赛
- INSTALL_FAILED_INSUFFICIENT_STORAGE
- 【LeetCode】Add Two Numbers
- android窗体加载过程剖析之一Activity的初始化