从配置 Kivy、Buildozer 到 Android app 运行
CSDN刪減版,2023年1月11日
文章目錄
- 零、前言
- 一、VBox和Ubuntu
- 1、安裝VBox
- 2、配置虛擬機與安裝Ubuntu
- 二、Anaconda與虛擬環境
- 1、安裝Anaconda
- 2、創建虛擬環境
- 三、Buildozer
- 1、Ubuntu換源
- 2、【censored】
- 3、安裝Buildozer與構建app
- 1)安裝Buildozer
- 2)首次構建app
- 3)再次構建app
- 四、后記
零、前言
Kivy和Buildozer是什么自行百度。本文主要介紹如何打通從配置Kivy、在Win10(沒測試別的,但應該別太離譜就行)中的VBox上安裝Ubuntu及配套必要步驟、安裝Buildozer、app編譯上線一條龍的過程。上述內容除Win10安裝外均會從頭演示一遍(部分步驟沒有圖,因為沒有截屏或沒必要放圖)。
一、VBox和Ubuntu
之所以要安裝這倆是因為Buildozer不支持Windows系統,想要在Win10上使用需要安裝虛擬機。當然如果你的開發環境本身就是Linux,或者你有VMware或其它安裝了Ubuntu的虛擬機,在不影響后續的前提下可以跳過此步驟。下文也如此,請自行選擇執行的步驟。
1、安裝VBox
VBox全稱Oracle VM Virtual Box,是一款虛擬機軟件,類似VMware,但是是免費的。有關內容詳見其官網和CSDN站內教程。安裝過程本身不復雜,按照安裝包(可在官網下載,但我是在別處搞的,理論上區別不大)指導進行即可,此處不易遇到問題。安裝完成后打開截圖如下。
其中PC1是我已經安裝好的虛擬機,剛安裝好的VBox左側“工具”下方應該是空的。P.S.:我剛剛才發現我之前安了VMware。
2、配置虛擬機與安裝Ubuntu
1、你應該去Ubuntu官網下載.iso文件,我使用的版本是18.04,剛開始嘗試使用20.04但不知為何在首次啟動輸入用戶名和密碼時死活輸不進去(測試了鍵盤正常),故換用18.04。注意,不需要把.iso文件寫入光盤映像到U盤中!
2、點擊“新建”,出現如下圖所示界面,按照圖中選擇即可。其中“文件夾”是你虛擬機的保存路徑,VBox會自動在此路徑下創建一個和“名稱”同名的文件夾,故不需要手動新建一個。
3、下一步,給虛擬機分配內存,默認是1024M,如果你電腦配置較高可分高點,我分配的是2048M。
4、下一步,創建虛擬硬盤,選擇“現在創建虛擬硬盤”,隨后默認VDI即可。選擇“動態分配”或“固定大小”,我選的是固定大小,分配時間較長但可加快虛擬機速度。虛擬硬盤的位置默認即可,但大小應盡量大,因為Buildozer及其依賴工具將占用大量空間,默認是10G,我選的是64G。
5、此時應該出現如下畫面。其中參數可能和上述參數不同,因為是演示,并未仔細設置。
需要注意的是顯存剛剛并沒有設置,默認是16M。你需要把顯存改成128M,否則開機后會奇卡無比。具體修改方法為“設置”→“顯示”→“屏幕”→“顯存大小”,如下圖。
如果電腦有余裕,可以把CPU數目也設置高點,具體方法為“設置”→“系統”→“處理器”,默認是1核,我由于是筆記本性能有限,設置的是2核。
6、為了能夠正常地與主機共用剪切板,你需要進行幾個額外的設置。
①“設置”→“存儲”→“屬性”,勾選“使用主機輸入輸出(I/O)緩存”。
②選中你剛剛創建的虛擬硬盤,屬性中勾選“固態驅動器”,如下圖。
③“常規”→“高級”,將共享粘貼板選為“雙向”,下面的拖放也順手改成雙向。隨后OK保存。絕大部分網上的教程到這一步就沒了,但仍然無法使用粘貼板。
④接9。
7、啟動虛擬機,第一次啟動時VBox會讓你選擇.iso文件,這時選擇你剛剛下載好的.iso文件即可。稍等一會你就可以看見巴掌大小的屏幕了,這是因為VBox的默認分辨率是幾百乘幾百(具體忘了),如果你不習慣這個大小,在第8步中會有處理方法。
接下來的步驟是在虛擬機內部操作,正常的安裝步驟,如果你之前安裝過Ubuntu系統應該很熟悉,不熟悉的話按照系統提示也可以完成。安裝耗時因電腦而異,且主機需要聯網。安裝完成后Ubuntu要求你彈出光盤映像并重啟,但你無法彈出,故直接右上角×,選擇強制退出即可。需要注意的是,安裝好虛擬機并第二次啟動時不會讓你選擇.iso文件,但默認啟動順序還是該文件,你需要調整啟動順序。具體方法為“設置”→“系統”→“主板”,在“啟動順序”中把“硬盤”移動到最上方。
8、你需要調節屏幕大小,當然如果你習慣的話可以不調。啟動虛擬機,在虛擬機窗口左上角“管理”→“全局設定”→“顯示”,把“最大屏幕尺寸”,改成“提示”,隨后你就可以自己調節下方的寬度和高度了,你也可以在這里看到默認的寬高。我調的是1280*960。如下圖。
OK保存。此時你再去Ubuntu中調節屏幕尺寸(具體方法自行百度)便可以改變屏幕大小了。
9、我們需要解決6中④的遺留問題,即粘貼板仍然無法使用的問題。在虛擬機窗口選擇“設備”→“安裝增強功能”,稍等一會可以看到你的Ubuntu桌面上出現了一張光盤,隨后會自動讓你輸入密碼,這個密碼就是你第7步安裝Ubuntu時設置的密碼,下同。此步也不易出現問題,按照提示操作完成即可。重啟后(如果要求重啟)便可正常使用粘貼板,如果你看到光盤還在你的桌面上,右鍵彈出即可。此時你也可以發現Ubuntu桌面分辨率可以自適應你的窗口大小了,不知道這和第8步有沒有關系,但總歸是好事。
10、為了后期傳輸文件方便,你應該在虛擬機窗口“設備”→“共享文件夾”中按提示設置共享文件夾,如下圖,其中紅圈圈出的按鈕即為添加共享文件夾。
添加成功后該共享文件夾會出現在你Ubuntu的桌面上,此文件夾中的文件在Ubuntu和主機(Win10)中均可訪問。到此虛擬機安裝完成。
二、Anaconda與虛擬環境
隨后在Ubuntu中安裝Anaconda,配置虛擬環境,因為要在虛擬環境中安裝Buildozer,也方便管理和出問題回滾(刪除虛擬環境即可)。
1、安裝Anaconda
安裝Anaconda的教程實際上已經有很多了,且流程較為固定,不再贅述。我百度了幾個基本沒問題教程貼在下面。
Ubuntu安裝Anaconda詳細步驟(Ubuntu21.10,Anaconda3)
Ubuntu安裝Anaconda(Ubuntu18.04,Anaconda3)
之所以說基本沒問題,是因為到教程中在命令行輸入conda list或者類似的conda命令驗證安裝是否成功時,可能顯示找不到conda,或者conda沒有權限不可執行之類的問題。可按需進行如下操作。
1、找不到conda大概率是沒有把conda添加到路徑。此文章把在Ubuntu中如何添加到路徑講的很詳細,可以參考。我選擇修改profile文件添加到路徑。在終端下輸入如下命令打開編輯profile文件。每個終端第一次使用sudo時回車后需要輸入一次密碼,輸入并回車即可。
sudo gedit /etc/profile在文件末尾添加如下文本。
export PATH=/your/path/anaconda3/bin:$PATH其中的“/your/path/anaconda3/bin”替換為你的conda對應位置的路徑,下同。隨后保存并關閉文件,重啟虛擬機即添加完成。
2、沒有權限一般是你的conda文件權限沒有可執行一項。若一切正常,conda文件的權限應該如下圖所示。其中“執行”右側應該勾選,上方應該均為讀寫。
但你無法在此界面更改權限,需要使用chmod更改,在終端輸入如下代碼。
其中“-R”代表遞歸更改該目錄及其文件和子目錄的權限,777為讀寫執行。深入了解chmod指令含義可自行百度。
3、此時再輸入conda list應該成功顯示conda安裝的包,conda安裝成功。
2、創建虛擬環境
有關conda虛擬環境的操作可以參照此博文,也可自行百度,難度不大。從頭創建虛擬環境,你需要在命令行中執行如下命令。
conda create -n your_env_name python=X.X其中“your_env_name”為你虛擬環境的名稱,“X.X”為你的python版本,我使用的是3.8。隨后按照conda的英文提示描述按需操作即可。
創建完環境之后,執行如下命令驗證創建是否成功。
若一切正常,返回信息應該如下圖所示。
圖中顯示我創建了一個名為“python38_kivy”的環境,其所在路徑為“/home/pc1/anaconda3/envs/python38_kivy”。為了一會執行的便利性,你需要將該路徑的“./bin”子路徑添加到Ubuntu路徑中,即在profile文件末尾添加如下文本并保存。
隨后進入該路徑下,把名為“python”的可執行文件改名為你虛擬環境的名稱,即“your_env_name”(我的習慣,為了在命令行中調用方便)。重啟電腦,此時在命令行輸入如下命令,應該會打印出該虛擬環境下安裝的包列表。
your_env_name -m pip list
隨后你需要在虛擬環境下安裝Kivy,按照其教程說明,命令行執行如下代碼。根據你的需要選擇Kivy依賴的量,我為以后方便安裝了全部依賴,即“full”。
到此虛擬環境創建完成。
三、Buildozer
由于【censored】,在安裝Buildozer之前有兩個前置項,即Ubuntu換源和Linux【censored】。當然,如果你人在海外則不用進行此操作。
1、Ubuntu換源
如果你不換源,你可以享受到【censored】提供的優質上網速度和連接質量,但我們這種【censored】沒有資格使用使用如此【censored】的服務,故我們需要自覺換源,為國家節省資源。同理,Ubuntu換源的教程也有很多,我選擇了幾個較為靠譜的貼在下方,按照操作即可。需要注意的是,不同版本的Ubuntu源的細節有差異,需要按照你的版本操作。
Ubuntu 18.04 更換國內源
如何為你的 Ubuntu 20.04 換源
2、【censored】
今天我們的任務不是發表評論,而是搞app,故懂的都懂,不懂的說了也不懂。你最好會基礎的Windows【censored】技術,故此部分安排稍顯滑稽,因為有此技術的人應該能自行解決Linux下的【censored】問題。具體操作可參照【censored】、詢問熟人或直接【censored】搜索選用自己喜歡的方法,能達到目的均可。
3、安裝Buildozer與構建app
1)安裝Buildozer
你應該參考Buildozer文檔給的安裝步驟操作。首先在你的虛擬環境中安裝Buildozer項目,在命令行運行如下命令。
your_env_name -m pip install buildozer -i https://pypi.tuna.tsinghua.edu.cn/simple如果你按照我“創建虛擬環境”中此步進行了重命名,“your_env_name”即為你的目標虛擬環境名(下同,不再贅述),若沒有,請自行想辦法安裝。隨后安裝必要的Ubuntu包,在命令行依次運行如下命令。
sudo apt update sudo apt install -y git zip unzip openjdk-17-jdk python3-pip autoconf libtool pkg-config zlib1g-dev libncurses5-dev libncursesw5-dev libtinfo5 cmake libffi-dev libssl-dev如果你已經為Ubuntu換了源,你將節省大量時間。隨后運行如下命令。
your_env_name -m pip install --upgrade Cython==0.29.19 virtualenv至此Buildozer安裝完成。
2)首次構建app
由于構建Android app要安裝大量依賴包,包括NDK、JDK之類的玩意,第一次運行Buildozer時它會試圖下載它們。這是全流程最容易出問題的環節,也是對網絡要求最高的環節,這就是要【censored】的原因。當然,這個下載環節是一次性的,第二次構建app及以后均不需要此流程。此流程所需代碼并不多,但重點在遇到Bug隨機應變。
首先在合適位置創建一個main.py文件用于Buildozer構建入口,注意,所有由Buildozer構建的app都應該是以“main.py”為入口。作為測試,在該文件內部輸入如下代碼并保存,其運行效果是在屏幕中心顯示一個“Hello world”。
import kivy from kivy.app import App from kivy.uix.label import Labelclass MyApp(App):def build(self):return Label(text='Hello world')if __name__ == '__main__':MyApp().run()在該文件路徑下打開命令行(或者直接cd到其目錄下),運行如下命令。
buildozer init此時該目錄下會生成一個“buildozer.spec”文件,打開文件可以看到里面有很多可供編輯的選項及其對應的英文解釋。日后想定制app相關具體內容可根據其意義自行調整,但本次運行沒必要調整(當然你愿意可以自行調整一些內容,只要不影響app構建就行)。繼續運行如下命令。
buildozer android debug此時Buildozer開始第一次構建app,過一會可能會讓你同意若干次Google的協議,輸入“yes”即可繼續下載。依據網速區別,首次運行時間(不計排除錯誤)可能在數十分鐘到數小時不等。盡管已經提前【censored】,也可能遇到網絡問題??赡苡龅降膯栴}各種各樣,如下為幾個例子,但最重要的是依據其錯誤信息隨機應變。
1、“Error in the pull function”或下載進度卡死不動
網絡問題,Ctrl+C,再次運行構建命令。
2、“fatal: unable to access ‘https://github.com/…/”
此問題常出現在某個和sdl2(沒記錯的話)相關的“external”文件夾下的幾個圖像相關的文件夾,本質是Buildozer此部分下載網址有缺陷。遇到此問題你需要先把這幾個文件夾刪了,再運行構建命令,否則會報錯文件夾已存在。
3、無aidl
百度或Google自行安裝aidl即可。
如果你覺得哪都有問題,想重來一遍,只需要刪除“main.py”根目錄下的“bin”和“.buildozer”文件夾、刪除主文件夾(“./home/虛擬機名稱”,或者說“~”)下的“.buildozer”文件夾,此時相當于把進度回滾到運行構建命令之前。
若最后顯示如下圖,說明你構建成功了。你可以在成功運行完成后在“main.py”根目錄“bin”文件夾下找到構建好的.apk文件。
把該文件拷貝到手機中,安裝運行,可以得到結果如下。恭喜你,到此全部結束了。
3)再次構建app
替換“main.py”文件,刪除其同目錄下其它文件,再次輸入“buildozer init”并調整生成的“buildozer.spec”文件,再次構建即可。注意,千萬不要動主文件夾下的“.buildozer”文件夾,否則你又要重來一遍!
四、后記
此過程前前后后摸索了兩天,不得不說【censored】內互聯網是真的坑,一堆教程都是瞎講或者復制粘貼,好多bug都是【censored】解決的。還是那句話,能【censored】早【censored】,應【censored】盡【censored】。
總結
以上是生活随笔為你收集整理的从配置 Kivy、Buildozer 到 Android app 运行的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 这两款iPhone不要升级iOS14.5
- 下一篇: uni-app 微信小程序启用组件按需注