我正在开发一个小型python脚本,它将使用kivy在Android上运行。基本上我是Python编程的新手。 脚本本身在Linux下的我的计算机上运行,但我无法为Android编译PySerial库。 我尝试使用buildozer来调试应用程序,但是当我打开它时它会在Android上崩溃。 用python为android构建apk让我得到以下错误
Run pymodules install
We want to install: serial
Check if and /usr/bin/pip2 are present
Check if virtualenv is existing
Installing virtualenv
./distribute.sh: line 119: --python=python2.7: command not found
是否有一种方法可以包含串行库,以便在Android上使用?
修改
错误日志:
[INFO ] Logger: Record log in /data/data/org.led.serialled/files/.kivy/logs/kivy_14-08-25_10.txt
[INFO ] Kivy v1.8.0
[INFO ] Factory: 157 symbols loaded
[DEBUG ] Cache: register <kv.lang> with limit=None, timeout=Nones
[DEBUG ] Cache: register <kv.image> with limit=None, timeout=60s
[DEBUG ] Cache: register <kv.atlas> with limit=None, timeout=Nones
[WARNING ] stderr: /data/data/org.led.serialled/files/lib/python2.7/site-packages/kivy/core/image/img_pygame.py:12: RuntimeWarning: import cdrom: No module named cdrom
[WARNING ] stderr: (ImportError: No module named cdrom)
[INFO ] Image: Providers: img_tex, img_dds, img_pygame, img_gif (img_pil ignored)
[DEBUG ] Cache: register <kv.texture> with limit=1000, timeout=60s
[DEBUG ] Cache: register <kv.shader> with limit=1000, timeout=3600s
[WARNING ] stderr: Traceback (most recent call last):
[WARNING ] stderr: File "/home/konstantin/Desktop/buildozer_LED/.buildozer/android/app/main.py", line 3, in <module>
[WARNING ] stderr: File "/home/konstantin/Desktop/buildozer_LED/.buildozer/android/app/_applibs/serial/__init__.py", line 21, in <module>
[WARNING ] stderr: File "/home/konstantin/Desktop/buildozer_LED/.buildozer/android/app/_applibs/serial/serialposix.py", line 15, in <module>
[WARNING ] stderr: ImportError: No module named termios
答案 0 :(得分:1)
这代表任何库,如果它是一个纯python库或已知recipe,那么只需将它添加到bulldozer.spec的需求部分。
# requirements of the app
requirements = pyserial,pycrypto,pyasn1,pyjnius,twisted,kivy
但是如果lib不是纯python,你需要提供一个recipe如果它还不存在here这只是一个简单的脚本,它会向lib添加补丁以便为它编译它机器人。然后将其作为要求添加到bulldozer.spec。
pyserial看起来像是一个纯粹的python lib
答案 1 :(得分:0)
您已按要求添加buildozer.spec
并从黑名单中删除了termios。
在# (list) python-for-android whitelist
android.p4a_whitelist = lib-dynload/termios.so
使用中:
lib-dynload/termios.so
或将max_instances
添加到whitelist.txt以获取正在使用的引导程序(请参阅
https://github.com/kivy/python-for-android/blob/master/pythonforandroid/bootstraps/sdl2/build/whitelist.txt)