python kivy with plyer应用程序在android上崩溃(摄像头)
我使用plyer开发kivy应用程序。buildozer构建并在android上启动应用程序成功,但当我按下启动摄像头的按钮时,应用程序崩溃,logcat中没有任何输出。当我在KivyLancher中执行相同的代码时,我的工作没有问题。即使我用加速计测试,结果也很相似 我认为在使用plyer构建应用程序时,必要的设置可能很短python kivy with plyer应用程序在android上崩溃(摄像头),android,python,kivy,buildozer,Android,Python,Kivy,Buildozer,我使用plyer开发kivy应用程序。buildozer构建并在android上启动应用程序成功,但当我按下启动摄像头的按钮时,应用程序崩溃,logcat中没有任何输出。当我在KivyLancher中执行相同的代码时,我的工作没有问题。即使我用加速计测试,结果也很相似 我认为在使用plyer构建应用程序时,必要的设置可能很短 --- source code --- from kivy.app import App from kivy.uix.floatlayout import FloatLa
--- source code ---
from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.label import Label
from plyer import camera
class UI(FloatLayout):
def __init__(self, **kwargs):
super(UI, self).__init__(**kwargs)
self.lblCam = Label(text="Click to take a picture")
self.add_widget(self.lblCam)
def on_touch_down(self, e):
try:
print('test')
camera.take_picture('/storage/sdcard0/example.jpg', self.done)
except NotImplementedError:
print("This feature has not yet been implemented for this platform")
except Exception as e:
print(str(type(e)))
def done(self, e):
self.lblCam.text = e
class Camera(App):
def build(self):
ui = UI()
return ui
def on_pause(self):
return True
def on_resume(self):
pass
Camera().run()
--- buildozer.spec ---
(buildozer android_new debug)
requirements = plyer,kivy,python2
android.permissions = CAMERA
android.api = 22
android.minapi = 21
android.sdk = 22
android.ndk = 13b
android.bootstrap = sdl2
--- environments
buildozer: 0.33dev
android (device)version: 5.0.2
--- adb logcat -s python ---
I/python (30711): AND: Ran string
I/python (30711): Run user program, change dir and execute entrypoint
I/python (30711): [WARNING] [Config ] Older configuration version detected (0 instead of 16)
I/python (30711): [WARNING] [Config ] Upgrading configuration in progress.
I/python (30711): [INFO ] [Logger ] Record log in /data/data/org.test.cameraapp/files/app/.kivy/logs/kivy_16-12-15_0.txt
I/python (30711): [INFO ] [Kivy ] v1.9.2-dev0
I/python (30711): [INFO ] [Python ] v2.7.2 (default, Dec 15 2016, 13:03:19)
I/python (30711): [GCC 4.9.x 20150123 (prerelease)]
I/python (30711): [INFO ] [Factory ] 193 symbols loaded
I/python (30711): [INFO ] [Image ] Providers: img_tex, img_dds, img_gif, img_sdl2 (img_pil, img_ffpyplayer ignored)
I/python (30711): [INFO ] [Text ] Provider: sdl2
I/python (30711): [INFO ] [OSC ] using <thread> for socket
I/python (30711): [ERROR ] [Input ] AndroidJoystick is not supported by your version of linux
I/python (30711): Traceback (most recent call last):
I/python (30711): File "/home/kivy/Documents/echizen-cyo/camera/.buildozer/android/platform/build/dists/cameraapp/private/lib/python2.7/site-packages/kivy/input/providers/__init__.py", line 57, in <module>
I/python (30711): File "/home/kivy/Documents/echizen-cyo/camera/.buildozer/android/platform/build/dists/cameraapp/private/lib/python2.7/site-packages/kivy/input/providers/androidjoystick.py", line 20, in <module>
I/python (30711): Exception: android lib not found.
I/python (30711): [INFO ] [Window ] Provider: sdl2
I/python (30711): [INFO ] [GL ] OpenGL version <OpenGL ES 2.0>
I/python (30711): [INFO ] [GL ] OpenGL vendor <ARM>
I/python (30711): [INFO ] [GL ] OpenGL renderer <Mali-450 MP>
I/python (30711): [INFO ] [GL ] OpenGL parsed version: 2, 0
I/python (30711): [INFO ] [GL ] Texture max size <4096>
I/python (30711): [INFO ] [GL ] Texture max units <8>
I/python (30711): [INFO ] [Window ] auto add sdl2 input provider
I/python (30711): [INFO ] [Window ] virtual keyboard not allowed, single mode, not docked
I/python (30711): [WARNING] [Base ] Unknown <android> provider
I/python (30711): [INFO ] [Base ] Start application main loop
I/python (30711): [INFO ] [GL ] NPOT texture support is available
I/python (30711): [ERROR ] [Base ] Could not remove android presplash
I/python (30711): test
——源代码---
从kivy.app导入应用程序
从kivy.uix.floatlayout导入floatlayout
从kivy.uix.label导入标签
从plyer导入照相机
类用户界面(浮动布局):
定义初始(自我,**kwargs):
超级(用户界面,自我)。\uuuuuu初始化(**kwargs)
self.lblCam=标签(text=“单击拍照”)
self.add_小部件(self.lblCam)
def on_触控向下(自身,e):
尝试:
打印(‘测试’)
拍照('/storage/sdcard0/example.jpg',self.done)
除未实施错误外:
打印(“此功能尚未在此平台上实现”)
例外情况除外,如e:
打印(str(类型(e)))
def完成(自我,e):
self.lblCam.text=e
班级摄像机(应用程序):
def生成(自):
ui=ui()
返回用户界面
def on_暂停(自我):
返回真值
恢复时的def(自我):
通过
摄影机().run()运行
---buildozer.spec---
(buildozer android_新调试)
要求=plyer、kivy、python2
android.permissions=CAMERA
android.api=22
android.minapi=21
android.sdk=22
android.ndk=13b
android.bootstrap=sdl2
---环境
buildozer:0.33dev
安卓(设备)版本:5.0.2
---adb logcat-s python---
I/python(30711):AND:Ran字符串
I/python(30711):运行用户程序,更改目录并执行入口点
I/python(30711):[警告][配置]检测到较旧的配置版本(0而不是16)
I/python(30711):[警告][配置]正在升级配置。
I/python(30711):[INFO][Logger]记录登录/data/data/org.test.cameraapp/files/app/.kivy/logs/kivy_16-12-15_0.txt
I/python(30711):[INFO][Kivy]v1.9.2-dev0
I/python(30711):[INFO][python]v2.7.2(默认,2016年12月15日,13:03:19)
I/python(30711):[GCC 4.9.x 20150123(预发布)]
I/python(30711):[INFO][Factory]加载193个符号
I/python(30711):[INFO][Image]提供程序:img_-tex、img_-dds、img_-gif、img_-sdl2(img_-pil、img_-ffpyplayer忽略)
I/python(30711):[INFO][Text]提供者:sdl2
I/python(30711):[INFO][OSC]用于套接字
I/python(30711):[ERROR][Input]您的linux版本不支持AndroidGoverage
I/python(30711):回溯(最后一次调用):
I/python(30711):文件“/home/kivy/Documents/echizen cyo/camera/.buildozer/android/platform/build/dists/cameraapp/private/lib/python2.7/site packages/kivy/input/providers/uu init_uuuuuuu.py”,第57行
I/python(30711):文件“/home/kivy/Documents/echizen cyo/camera/.buildozer/android/platform/build/dists/cameraapp/private/lib/python2.7/site packages/kivy/input/providers/androidgoodge.py”,第20行
I/python(30711):异常:未找到android库。
I/python(30711):[INFO][Window]提供程序:sdl2
I/python(30711):[INFO][GL]OpenGL版本
I/python(30711):[INFO][GL]OpenGL供应商
I/python(30711):[INFO][GL]OpenGL渲染器
I/python(30711):[INFO][GL]OpenGL解析版本:2,0
I/python(30711):[INFO][GL]纹理最大大小
I/python(30711):[INFO][GL]纹理最大单位
I/python(30711):[INFO][Window]自动添加sdl2输入提供程序
I/python(30711):[INFO][Window]不允许使用虚拟键盘,单模,未对接
I/python(30711):[WARNING][Base]未知提供程序
I/python(30711):[INFO][Base]启动应用程序主循环
I/python(30711):[INFO][GL]NPOT纹理支持可用
I/python(30711):[ERROR][Base]无法删除android presplash
I/python(30711):测试
我担心“异常:未找到android库”。这是在p4a/pyjnius中。您可以使用旧的工具链,直到它被修复。经过调查,我了解到它在plyer.platform.android中崩溃。init.py 它似乎在activity=PythonActivity.mActivity中崩溃,但无法处理异常
--- plyer.platform.android.__init__.py ---
from os import environ
from jnius import autoclass
ANDROID_VERSION = autoclass('android.os.Build$VERSION')
SDK_INT = ANDROID_VERSION.SDK_INT
print('ANDROID_VERSION = {}'.format(SDK_INT))
if 'PYTHON_SERVICE_ARGUMENT' in environ:
print('test-1-1')
PythonService = autoclass('org.renpy.android.PythonService')
print('test-1-2')
activity = PythonService.mService
print('test-1-3')
else:
print('test-2-1')
PythonActivity = autoclass('org.renpy.android.PythonActivity')
print('test-2-2')
activity = PythonActivity.mActivity
print('test-2-3')
--- logcat ---
I/python ( 9384): AND: Ran string
I/python ( 9384): Run user program, change dir and execute entrypoint
I/python ( 9384): [WARNING] [Config ] Older configuration version detected (0 instead of 16)
I/python ( 9384): [WARNING] [Config ] Upgrading configuration in progress.
I/python ( 9384): Purge log fired. Analysing...
I/python ( 9384): Purge finished!
I/python ( 9384): [INFO ] [Logger ] Record log in /data/data/org.test.cameraapp/files/app/.kivy/logs/kivy_16-12-16_0.txt
I/python ( 9384): [INFO ] [Kivy ] v1.9.2-dev0
I/python ( 9384): [INFO ] [Python ] v2.7.2 (default, Dec 16 2016, 19:14:20)
I/python ( 9384): [GCC 4.9.x 20150123 (prerelease)]
I/python ( 9384): [INFO ] [Factory ] 193 symbols loaded
I/python ( 9384): [INFO ] [Image ] Providers: img_tex, img_dds, img_gif, img_sdl2 (img_pil, img_ffpyplayer ignored)
I/python ( 9384): [INFO ] [Text ] Provider: sdl2
I/python ( 9384): [INFO ] [OSC ] using <thread> for socket
I/python ( 9384): [ERROR ] [Input ] AndroidJoystick is not supported by your version of linux
I/python ( 9384): Traceback (most recent call last):
I/python ( 9384): File "/home/kivy/Documents/echizen-cyo/camera/.buildozer/android/platform/build/dists/cameraapp/private/lib/python2.7/site-packages/kivy/input/providers/__init__.py", line 57, in <module>
I/python ( 9384): File "/home/kivy/Documents/echizen-cyo/camera/.buildozer/android/platform/build/dists/cameraapp/private/lib/python2.7/site-packages/kivy/input/providers/androidjoystick.py", line 20, in <module>
I/python ( 9384): Exception: android lib not found.
I/python ( 9384): [INFO ] [Window ] Provider: sdl2
I/python ( 9384): [INFO ] [GL ] OpenGL version <OpenGL ES 2.0>
I/python ( 9384): [INFO ] [GL ] OpenGL vendor <ARM>
I/python ( 9384): [INFO ] [GL ] OpenGL renderer <Mali-450 MP>
I/python ( 9384): [INFO ] [GL ] OpenGL parsed version: 2, 0
I/python ( 9384): [INFO ] [GL ] Texture max size <4096>
I/python ( 9384): [INFO ] [GL ] Texture max units <8>
I/python ( 9384): [INFO ] [Window ] auto add sdl2 input provider
I/python ( 9384): [INFO ] [Window ] virtual keyboard not allowed, single mode, not docked
I/python ( 9384): [WARNING] [Base ] Unknown <android> provider
I/python ( 9384): [INFO ] [Base ] Start application main loop
I/python ( 9384): [INFO ] [GL ] NPOT texture support is available
I/python ( 9384): [ERROR ] [Base ] Could not remove android presplash
I/python ( 9384): test
I/python ( 9384): ANDROID_VERSION = 21
I/python ( 9384): test-2-1
I/python ( 9384): test-2-2
——plyer.platform.android.\uuuu init\uuuuuuuuuuy.py---
从操作系统导入环境
从jnius导入自动类
ANDROID_VERSION=autoclass('ANDROID.os.Build$VERSION')
SDK\u INT=ANDROID\u VERSION.SDK\u INT
打印('ANDROID_VERSION={}'。格式(SDK_INT))
如果环境中的“PYTHON\u服务\u参数”:
打印(“测试-1-1”)
PythonService=autoclass('org.renpy.android.PythonService')
打印(“测试-1-2”)
活动=PythonService.mService
打印(“测试1-3”)
其他:
打印(“测试-2-1”)
PythonActivity=autoclass('org.renpy.android.PythonActivity')
打印(“测试-2-2”)
活动=PythonActivity.mActivity
打印(“测试-2-3”)
---logcat---
I/python(9384):AND:Ran字符串
I/python(9384):运行用户程序,更改目录并执行入口点
I/python(9384):[警告][配置]检测到较旧的配置版本(0而不是16)
I/python(9384):[警告][配置]正在升级配置。
I/python(9384):触发清除日志。分析。。。
I/python(9384):清除完成!
I/python(9384):[INFO][Logger]记录登录/data/data/org.test.cameraapp/files/app/.kivy/logs/kivy_16-12-16_0.txt
I/python(9384):[INFO][Kivy]v1.9.2-dev0
I/python(9384):[INFO][python]v2.7.2(默认,2016年12月16日,19:14:20)
I/python(9384):[GCC 4.9.x 20150123(预发布)]
I/python(9384):[INFO][Factory]加载193个符号
I/python(9384):[INFO][Image]提供者:img_-tex、img_-dds、img_-gif、,