Kivy SDL2 Python3.5构建崩溃在Android 5及以上版本

问题描述:

我一直在尝试使用Kivy SDL2与python3crystax构建应用程序,一切都按预期工作。 我做了最低api为16和目标是21(因为这是目前最crystalax目前) 该应用程序适用于5以下的任何android,但5或以上崩溃。在logcat的所有我设法看到过滤"-s AdBuddiz:D python:D"是它停止时,它会在这里工作:Kivy SDL2 Python3.5构建崩溃在Android 5及以上版本

I/python (10645): Android kivy bootstrap done. __name__ is __main__ 
I/python (10645): AND: Ran string 
I/python (10645): Run user program, change dir and execute entrypoint 
I/python (10645): main.py 
I/python (10645): [WARNING] [Config  ] Older configuration version detected (0 instead of 19) 
I/python (10645): [WARNING] [Config  ] Upgrading configuration in progress. 
I/python (10645): [INFO ] [Logger  ] Record log in /data/data/f4f.ddddd.com.f4f/files/app/.kivy/logs/kivy_17-06-12_0.txt 
I/python (10645): [INFO ] [Kivy  ] v1.10.0 
I/python (10645): [INFO ] [Python  ] v3.5.0 (default, Dec 24 2015, 05:56:40) 
I/python (10645): [GCC 5.3 20151204] 
I/python (10645): [INFO ] [Factory  ] 194 symbols loaded 
I/python (10645): [INFO ] [Image  ] Providers: img_tex, img_dds, img_sdl2, img_gif (img_pil, img_ffpyplayer ignored) 
I/python (10645): [INFO ] [Text  ] Provider: sdl2 

这是我所看到它崩溃之前没有任何错误,它只是崩溃在Android 5+,只当使用kivy的SDL2版本时。

我的问题是,为什么它崩溃?

编辑: 进一步调试后,我发现了以下错误显示在logcat的

E/WindowState(1331): getStack: Window{33a025fb u0 f4d.ddddd.com.f4f/org.kivy.android.PythonActivity} couldn't find taskId=249 Callers=com.android.server.wm.WindowState.getDisplayContent:776 com.android.server.wm.WindowState.getWindowList:1347 com.android.server.wm.WindowState.getNeedsMenuLw:715 com.android.internal.policy.impl.PhoneWindowManager.updateSystemUiVisibilityLw:6862 

编辑2: 更多的调试和尝试其他例如应用程序后,这似乎是我的代码中的东西是使其在更高版本的android操作系统上崩溃。将开始剥离下来的代码,看看它崩溃

编辑3: 显然发生了什么崩溃我的申请被我AdBuddiz实施

from kivy.app import platform 
if platform == 'android': 
    from utils import PythonActivity, AdBuddiz 


class AdsNetwork: 
    def __init__(self): 
     if platform == "android": 
      AdBuddiz.setPublisherKey("TEST_PUBLISHER_KEY") # replace the key with your app Key 
      AdBuddiz.setTestModeActive() # test mode will be active 
      AdBuddiz.cacheAds(PythonActivity.mActivity) # now we are caching the ads 

    def show_ads(self): 
     if platform == 'android': 
AdBuddiz.showAd(PythonActivity.mActivity) #show a popup ad 
+0

[此链接的应用程序](https://play.google.com/store/apps/details?id=net.inclem.pyonicinterpreter3)是否有效? – inclement

+0

是的,它确实有效,你认为它是由我的实际代码造成的吗?虽然我调试了它,似乎不是那样,因为我没有与它在安卓贝娄5 issus – Nick

的问题如下:

为Android波纹管5该活动被称为org.renpy.android.PythonActivity 所以当我们初始化AdBuddiz像文档告诉我们,它将适用于Android版本5以下,但对于Android 5及以上,活动类名称是org.kivy.android.PythonActivity,如果我们尝试autoclass使用旧的活动类名称