2017-10-08 39 views
1

解決的問題:Kivy應用程序關閉本身

我想請教一下Kivy-Python應用程序在Oracle虛擬機上使用 buildozer剛剛建成。該應用程序是用 的Windows,蟒蛇3使用kivy並取決於numpy,有的 .png文件。

建設apk文件:

在虛擬機上的Linux終端,我已經設置包含主文件main.py項目文件夾 ,然後運行:

buildozer android debug 

的這條線的處理花了相當長的時間。 apk文件的大小爲 ,大小爲11MB。我插上了電話後,我跑(VM上的Linux終端):

buildozer android deploy run 

這個應用程序安裝到手機上。

問題:

但是當我打開它:它只是說「正在加載...」旁邊與 Kivy徽標,然後它會自行關閉。這是什麼原因造成的?

,我在VM終端看到的是python 2.7.13而我 寫的代碼python 3蟒蛇。 這是問題嗎?如果是這樣, 是什麼解決方案?

希望得到這個反饋。謝謝。

SOLUTION:

的解決方案是重寫代碼,使其工作在python 2.7。現在代碼在Python2和Python3中運行。然後我使用這個編輯的main.py構建apk。現在,它不會崩潰。在buildozer.specs線,(它只是看看日誌關於蟒蛇,但你可以

+1

你需要從你的設備獲得logcat,看看是什麼導致崩潰,這可能是你使用默認的buildozer配置打包,所以你的代碼是由python2運行而不是python3,或者它可能是其他的東西,但最簡單的方法是使用'buildozer android run logcat'來查看ap崩潰時的錯誤信息。 – Tshirtman

+0

@Tshirtman謝謝。我運行了'logcat',它相當長一排代碼..(和沒有ERROR可見),但是當我使用ctrl-c中斷時,我在最後幾行看到它運行一些python文件<從buildozer文件夾< - 來自Python 2文件夾。我的代碼是用python 3編寫的。 'buildozer'不能打包Python 3,但它不是..?因此,解決方案可能是重寫代碼,以便在python 2中兼容。 – Arief

+1

新問題應該是一個新問題,因爲您找到的第一個解決方案可能會在未來幫助其他人。 (buildozer可以打包到python3順便說一句,你只需要問它,並已安裝crystax NDK) – Tshirtman

回答

2

您可以添加一個正則表達式通過取消註釋過濾掉一些的logcat的輸出「d android.logcat_filters = *::S蟒蛇」添加一些信息來過濾更多。)。

此外,我用這個配置(計算機上的python3和android上的python2)來解決相似的問題,是的,你必須讓你的代碼「幾乎」兼容)。爲此,有一些簡單的步驟要記住(我可能會忘記一些):
在定義靜態方法之前添加「@ static-method」行
添加一個空的「__init__」。在蟒蛇的子文件夾PY」文件

我懷疑它與numpy的食譜有問題,但它可以,這樣你就可以添加要在buildozer.specs使用,或只是清潔buildozer再次測試版本。

希望這個幫助你,讓我知道:)

+0

謝謝。我編輯了這篇文章......通過重寫在Python2中工作的代碼,解決了上一個問題。我已經爲新問題嘗試了這個'logcat',我沒有看到任何錯誤。 – Arief

+0

Arf,無法重現,我嘗試使用默認的buildozer init,kv文件上的Image小部件(項目根目錄中的圖像,main.py和main.kv旁邊的源代碼行是「source:」im。 png「」)。你能發送你的代碼來測試它是代碼問題還是計算機/安裝嗎? (當然,不要發送給我們所有的代碼,越少越好,直到它包含您的問題,在桌面上工作,而不是在移動設備上工作) – MatEhickey