源於: https://blog.csdn.net/qq_37030400/article/details/107620264?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~all~first_rank_v2~rank_v25-6-107620264.nonecase&utm_term=kivy%20pycharm%20%E6%89%93%E5%8C%85
一、准備工具
- Pycharm ,也可以用Jupyter或者其它編輯器代替,只是一個編輯器罷了;
- 虛擬機**VirtualBox**,我下載的是Windows平台的;
- 插件:Oracle_VM_VirtualBox_Extension_Pack-4.3.12-93733.vbox-extpack,kivydev.ova(VirtualBox附帶);
二、安裝kivy
可以在CMD運行框內鍵入pip install指令安裝kivy,然后用在Jupyter上進行編輯。由於我用的編輯器主要是Pycharm,所以我在Pycharm上安裝。
1.在cmd命令框內鍵入(使用Jupyter的用戶參考)
pip install Kivy-1.11.1-cp37-cp37m-win_amd64.whl pip install kivy_deps.glew-0.2.0-cp37-cp37m-win_amd64.whl pip install kivy_deps.gstreamer-0.2.0-cp37-cp37m-win_amd64.whl pip install kivy_deps.sdl2-0.2.0-cp37-cp37m-win_amd64.whl
2.在Pycharm里安裝kivy
[注]angle也可以不安裝
或者在Pycharm的命令框里安裝,和CMD里安裝是一樣的。
同樣在里面鍵入
pip install Kivy-1.11.1-cp37-cp37m-win_amd64.whl pip install kivy_deps.glew-0.2.0-cp37-cp37m-win_amd64.whl pip install kivy_deps.gstreamer-0.2.0-cp37-cp37m-win_amd64.whl pip install kivy_deps.sdl2-0.2.0-cp37-cp37m-win_amd64.whl
三、安裝虛擬機
1.下載VirtualBox以后,安裝到自定義的目錄下(強烈建議全英文)
2.安裝插件:雙擊Oracle_VM_VirtualBox_Extension_Pack-4.3.12-93733.vbox-extpack文件,就能安裝。
四、建立共享文件夾
因為虛擬機無法和Windows直接交互,所以文件傳輸必須依靠共享文件夾進行)。
我在這里創建了一個VirtualDisk文件夾作為共享文件夾
【這一步可以理解為創建一個空白文件夾】,我們需要記住它的位置。
然后將之前下載好的kivydev.ova復制到這個文件夾里(不復制也可以,但是要保證所有文件的路徑都是英文路徑)
五、導入kivydev.ova系統
安裝完成的虛擬機是沒有任何系統的,此時需要導入kivydev.ova系統。
在【管理】菜單下,點擊【導入虛擬電腦】
選擇下載好的kivydev.ova文件
導入
等兩三分鍾就可以完成導入。
導入完成。
六、配置虛擬機
點擊設置,進入虛擬機的設置界面,然后找到最下面的【共享文件夾】,點擊右邊的加號,添加共享文件夾位置。
粘貼我們之前創建的【共享文件夾】位置,將【自動掛載】打勾,點擊確定,配置完成。
其它配置可以調節運行內存(我比較喜歡設為1024),顯存(我設置為128)等等,也可以不動。
至此,我們已經完成了kivy安裝和虛擬機部分的安裝,接下來就要寫一個寫一個程序,進行打包測試。
七、編輯一個kivy程序進行測試
可以將我的代碼復制到Pycharm里進行編譯,編譯沒問題的話將文件復制到共享文件夾內,重命名為“main.py”,方便下一步在虛擬機內進行調用。
這是一個簡易畫板功能的代碼。
from kivy.app import App from kivy.uix.widget import Widget from kivy.graphics import Color,Ellipse,Line from random import random from kivy.uix.button import Button class MyWidgetWidget(Widget): def on_touch_down(self, touch): color=(random(),random(),random()) with self.canvas: Color(*color) touch.ud['Line']=Line(points=(touch.x,touch.y),width=5) def on_touch_move(self, touch): touch.ud['Line'].points=touch.ud['Line'].points+[touch.x,touch.y] class MyPaintApp(App): def build(self): parent=Widget() self.painter=MyWidgetWidget() clearbtn=Button(text="Clear") clearbtn.bind(on_release=self.clear_canvas) parent.add_widget(self.painter) parent.add_widget(clearbtn) return parent def clear_canvas(self,obj): self.painter.canvas.clear() if __name__=="__main__": MyPaintApp().run()
運行效果(按住鼠標左鍵隨便在畫布上畫幾筆):
八、打包成Apk文件
打開我們創建完成的虛擬機。點擊啟動。
加載會比較慢,耐心等待到進入Linux桌面。
如果出現錯誤,cancel掉就可以繼續了。
打開桌面的File System,接着點擊左邊欄sf_VirtualDisk(我們之前創建的共享文件夾)。里面有我們保存的"main.py"和"kivydev.ova"。
點擊左邊欄kivydev目錄下找到kivy,在kivy目錄下進入accordion。再將"main.py"復制到當前目錄下(即**/home/kivydev/kivy/accordion/**目錄下)。它會覆蓋此目錄下的示例——一個main.py文件。因為打包的時候,主程序的名字都是main.py。
右擊空白區域,打開 Open Terminal Here命令框。
(如果目錄下沒有buildozer.spec文件,執行這一步)在此框內鍵入
buildozer init
- 1
生成一個buildozer.spec文件
接着再輸入命令
gedit buildozer.spec
- 1
打開buildozer.spec文件,主要修改Title(應用名字,我設置為SamplePainter),package.name(打包名,同樣設置成SamplePainter),package.domain(打包成哪一種ios或者安卓,這里我不改,默認打包成安卓文件)。其余的建議暫時不要修改。
修改完成后保存 Save,關閉文件,回到命令框。
在命令框內鍵入:
buildozer android_new debug
- 1
進行打包,此過程需要等待幾分鍾。
打包完成,按照提示的地址尋找打包后的文件。
關閉命令框,在bin文件夾下看見我們的應用SamplePainter,另一個MyApplication是示例文件,不予理會。
把這個文件復制到共享文件夾內。
九、發送到手機並安裝
回到Windows,打開我們的共享文件夾VirtualDis,可以看見創建的SamplePainter.apk文件。
把文件發送到手機,【注意】如果文件名后綴不是apk,請手動重命名為apk后綴。安裝到手機。
打開App,看看效果:
還可以。
十、總結
kivy功能不算強大,但是很便捷,可以把想法快速部署到移動端,希望大家創造自己獨特的App!有空再寫寫我的kivy小項目嘿嘿!