2016-12-15 13 views
3

plyerを使用してkivyアプリケーションを開発します。 buildozerでビルドし、アンドロイドの起動アプリは成功しましたが、カメラを起動してボタンを押すとアプリケーションがクラッシュし、logcatに何も出力されません。 kivylauncherで同じコードを実行すると問題なく動作します。私が加速度計でテストしたとしても、それは似ていました。plyerアプリケーションでpython kivyがアンドロイド(カメラ)でクラッシュする

plyerを使用してアプリケーションを構築すると、必要な設定が短くなると思います。

--- 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 2015(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 

"例外:アンドロイドライブラリが見つかりませんでした。"と心配しています。

答えて

0

これはp4a/pyjniusのbugです。古いツールチェーンは修正されるまで使用できます。

+0

ありがとうございました。 – asaitoc

+0

@asitocはまったくありません。私は最近この問題に直面しました:https://github.com/kivy/python-for-android/issues/959私は最も簡単な方法は古いツールチェーンを使用することです。答えのパッチは私には役に立たなかった。 –

+1

カメラは古いツールチェーンを使用して成功しました。 しかし、私のアプリケーションではspataiiteを使用しましたが、古いツールチェーンを組み込んだアプリケーションでmod_spatialite.soをロードしたときにシンボルのエラーが発生しました。 しかし、私はそれを試した後、新しいツールチェーンのpyjniusへのパッチの適用方法があなたのリンクに記載されていたので、私はすべて良いものでした。 大きなアドバイスありがとうございます! – asaitoc

0

これを調べたところ、plyer.platform.androidでクラッシュしたと分かりました。 .py。

アクティビティ= 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 2015(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 
関連する問題