如何使用Python打包APK
之前偶爾接觸到了python開發(fā)app的工具kivy(也能開發(fā)windows/linux/mac應(yīng)用),然后發(fā)現(xiàn)網(wǎng)上教程極少,甚至第一步打包apk就勸退了很多人,我也踩了很多坑,最后還是一一解決了,這里寫個(gè)文章記錄下。
我選擇用buidlozer打包apk,主要參考官方文檔:https://buildozer.readthedocs.io/en/latest/installation.html
從文檔上看,這個(gè)工具主要是在linux和macos上用,我這邊主要用windows,所以我選擇用虛擬機(jī)來搭建打包環(huán)境。
整個(gè)搭建過程錄頻傳到b站上了,供參考python安卓開發(fā)——kivy打包安卓APK逐步教學(xué)
一、準(zhǔn)備linux環(huán)境和相關(guān)工具
這里直接VMware+Ubuntu20.04解決環(huán)境問題,這一有個(gè)坑,一定要用18以上的ubuntu,否則可能因?yàn)閛penssl版本導(dǎo)致后續(xù)步驟失敗。如何安裝虛擬機(jī)和在虛擬機(jī)上安裝系統(tǒng)就不贅述了,一般按照安裝引導(dǎo)就ok。
安裝完成后為了后續(xù)方便使用,建議安裝以下兩個(gè)工具:
- openssl-server(linux)+Mobaxterm(windows)。ssh登錄linux,方便windows下貼命令,否則的話需要安裝vmware-tools,但是感覺這個(gè)不太好用。另外也可以通過這個(gè)來在虛擬機(jī)和windows間傳輸文件。這個(gè)配置也簡(jiǎn)單,直接
sudo apt install openssl-server
即可 - samba。linux上配置samba方便共享文件,這樣windows可以直接添加網(wǎng)絡(luò)位置,可以方便地在windows上編輯文件并在linux編譯運(yùn)行??蓞⒖疾┪摹驹敿?xì)步驟】Ubuntu安裝Samba服務(wù)及配置共享文件夾進(jìn)行配置
二、準(zhǔn)備python環(huán)境
官方文檔說的需要3.8以上版本,因此我也就直接用3.8了。
為了后續(xù)方便,還是用conda來管理python環(huán)境,我這里用的miniconda,因?yàn)槲募∫恍?,所需要的功能也都有?/p>
conda create -n kivy python=3.8 source activate kivy pip install kivy
然后把我們?cè)趙indows下寫的程序傳到虛擬機(jī)里面,代碼是一段簡(jiǎn)單的demo如下,python ./main
驗(yàn)證ok
from kivy.app import App from kivy.uix.button import Button class TestApp(App): def build(self): return Button(text='iPaoMi') TestApp().run()
三、buildozer打包apk
在工程目錄下,執(zhí)行以下命令
3.1 初始化
在工程目錄下執(zhí)行buildozer init
,會(huì)生成一個(gè).spec
配置文件,內(nèi)容可以自己看看,包括App名稱等,這里我也沒有仔細(xì)研究。
3.2 buildozer -v android debug
接下來是個(gè)巨坑,官方文檔上說明是執(zhí)行buildozer -v android debug
,如果你是初次運(yùn)行,就可以去泡一杯咖啡了。因?yàn)檫@個(gè)過程中會(huì)自動(dòng)下載SDK/NDK等內(nèi)容。
然后第一個(gè)坑就來了,如果你是ubuntu16,那么大概跑了十幾分鐘后會(huì)失敗,提示ssl之類的錯(cuò)誤。
其實(shí)這里并不需要魔法,可以正常下載,原因就在ubuntu的ssl版本。
SDK里面用的python3.10.10,要求openssl版本大于1.1.1
如果你愿意折騰,可以試試升級(jí)一下是否能解決這個(gè)問題,但我建議直接用ubuntu20.04,按官方文檔來。
然后是第二個(gè)坑,如果下載過程中網(wǎng)絡(luò)波動(dòng)導(dǎo)致失敗,重新嘗試下載時(shí),會(huì)提示文件已存在,或者是某某工具找不到
因?yàn)橹跋螺d未完成但是可能文件已經(jīng)存在,這將影響工具對(duì)下載狀態(tài)的判斷,需要?jiǎng)h除工程目錄下的.buildozer文件夾和用戶目錄下的.buildozer文件夾
然后是第三個(gè)坑,下了十幾分鐘文件后,有一個(gè)文件無法下載,看域名確實(shí)是需要魔法才能下載,但是這并不意味著我們需要這個(gè)文件
重新執(zhí)行之前的命令,發(fā)現(xiàn)沒有出現(xiàn)前面的問題,開始正式編譯了,最終生成目錄bin,并在其下能找到apk文件。
四、驗(yàn)證
這里沒有像官方文檔中建議那樣直接用USB調(diào)試,而是簡(jiǎn)單的將APK文件拖入安卓模擬器驗(yàn)證,執(zhí)行ok。
后續(xù)修改代碼內(nèi)容重新編譯,大約只需要半分鐘即可打包完成。也就是第一次使用比較困難。
到此這篇關(guān)于如何使用Python打包APK的文章就介紹到這了,更多相關(guān)Python打包APK內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python代碼調(diào)試Debug的實(shí)用技巧分享
我們?nèi)粘懘a過程中,難免會(huì)寫出各類錯(cuò)誤,這些錯(cuò)誤可能是語法錯(cuò)誤、邏輯錯(cuò)誤或運(yùn)行時(shí)錯(cuò)誤,所以本文為大家分享了一些Python調(diào)試Debug的技巧,感興趣的可以了解下2024-11-11Pandas如何對(duì)帶有Multi-column(多列名稱)的數(shù)據(jù)排序并寫入Excel中
這篇文章主要介紹了Pandas如何對(duì)帶有Multi-column(多列名稱)的數(shù)據(jù)排序并寫入Excel中問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02Python簡(jiǎn)單獲取網(wǎng)卡名稱及其IP地址的方法【基于psutil模塊】
這篇文章主要介紹了Python簡(jiǎn)單獲取網(wǎng)卡名稱及其IP地址的方法,結(jié)合實(shí)例形式分析了Python基于psutil模塊針對(duì)本機(jī)網(wǎng)卡硬件信息的讀取操作簡(jiǎn)單使用技巧,需要的朋友可以參考下2018-05-05Python unittest生成測(cè)試報(bào)告過程解析
這篇文章主要介紹了Python unittest生成測(cè)試報(bào)告過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09