『壹』 kivy在android上運行,有人弄過嗎
在電腦上寫好一個kivy程序,編譯成apk後拷至手機,運行,出現kivy啟動界面,隨即退出。
怎麼查找錯誤原因呢?在ubuntu下運行該kivy程序(python main.py等),會列印出調試及錯誤信息,但在手機上怎麼辦?想到了adb logcat。
於是費了九牛二虎之力,將盛大bambook s1手機連到虛擬機上,執行adb logcat命令,然後執行程序,果然看到了一行錯誤提示:
I/python ( 4775): [DEBUG ] [Resource ] add </system/fonts> in path list
I/python ( 4775): Traceback (most recent call last):
I/python ( 4775): File "/home/kivy/myprogs/SwitchMT/main.py", line 218, in <mole>
I/python ( 4775): File "/home/kivy/android/python-for-android/build/python-install/lib/python2.7/site-packages/kivy/app.py", line 600, in run
I/python ( 4775): File "/home/kivy/myprogs/SwitchMT/main.py", line 201, in build
I/python ( 4775): File "<string>", line 15, in write
I/python ( 4775): UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 7: ordinal not in range(128)
該行是一條含中文字元的print語句,字串前未加u。反正以前調試用的語句,不作分析,直接去掉。再次運行,通過。終於出現了程序的kivy界面了。
再查看前面日誌,卻發現這么一句:
I/python ( 4775): [INFO ] Kivy v1.8.0-dev
I/python ( 4775): [INFO ] [Logger ] Record log in /mnt/sdcard/org.test.SwitchMT/.kivy/logs/kivy_13-08-04_1.txt
自己升級安裝的,在ubuntu中運行時所用的kivy v1.7.1,怎麼打apk包時變成了1.8.0-dev不得而知。重要的是,該程序在 /mnt/sdcard/org.test.SwitchMT/.kivy/logs下產生有日誌文件!找到該目錄,發現甚至連main.py都被解包了出來,而日誌文件里也指明了錯誤, 這就是說,運行完kivy程序如果出錯,只需在日誌目錄查看日誌文件即可。省去太麻煩的調試環境了。
看了看,發現之前跑過的kivy程序也都有各自的包名下相應的目錄,看來這就是kivy的運行機制,當然不知道是不是跟編譯打包時加的debug選擇有關系,是不是改成release就沒有這些目錄了呢?畢竟將py源碼解出來話卡上不太安全。這就不得而知了。以後再試吧,不過目前至少是解決了查看程序出錯日誌的問題了,特此記錄。
『貳』 為什麼C語言程序運行時打開後自動閃退
以下一段代碼為例:
『叄』 c語言如何把c程序編譯成可執行的exe文件
1、編寫一段簡單的代碼,如下圖所示,編輯一段簡單的輸出語句。