簡體   English   中英

Kivy SDL2 Python3.5構建在Android 5及更高版本上崩潰

[英]Kivy SDL2 Python3.5 build crashing on android 5 and above

我已經嘗試了一段時間,以使用Kivy SDL2和python3crystax構建應用程序,並且一切正常。 我將最小api設置為16,將目標api設置為21(因為這是目前最多的crystax)。該應用程序在5以下的任何android上都可以正常運行,但在5或以上的水平上會崩潰。 在logcat中,我設法用過濾器"-s AdBuddiz:D python:D"看到的是它到達此處時停止工作:

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+以及僅在使用SDL2版本的kivy時崩潰。

我的問題是,為什么它會崩潰?

編輯:進一步調試后,我發現在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

問題如下:

對於android bellow 5,該活動稱為org.renpy.android.PythonActivity因此,當我們按文檔所述告訴我們初始化AdBuddiz時,該活動將適用於以下版本的android bellow 5,但對於android 5及更高版本,該活動類的名稱為org.kivy.android.PythonActivity顯然會失敗,如果我們嘗試使用舊的活動類名稱進行自動分類

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM