如何使用Python打包APK
之前偶爾接觸到了python開(kāi)發(fā)app的工具kivy(也能開(kāi)發(fā)windows/linux/mac應(yīng)用),然后發(fā)現(xiàn)網(wǎng)上教程極少,甚至第一步打包apk就勸退了很多人,我也踩了很多坑,最后還是一一解決了,這里寫(xiě)個(gè)文章記錄下。
我選擇用buidlozer打包apk,主要參考官方文檔:https://buildozer.readthedocs.io/en/latest/installation.html
從文檔上看,這個(gè)工具主要是在linux和macos上用,我這邊主要用windows,所以我選擇用虛擬機(jī)來(lái)搭建打包環(huán)境。
整個(gè)搭建過(guò)程錄頻傳到b站上了,供參考python安卓開(kāi)發(fā)——kivy打包安卓APK逐步教學(xué)
一、準(zhǔn)備linux環(huán)境和相關(guān)工具
這里直接VMware+Ubuntu20.04解決環(huán)境問(wè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下貼命令,否則的話(huà)需要安裝vmware-tools,但是感覺(jué)這個(gè)不太好用。另外也可以通過(guò)這個(gè)來(lái)在虛擬機(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)境
官方文檔說(shuō)的需要3.8以上版本,因此我也就直接用3.8了。
為了后續(xù)方便,還是用conda來(lái)管理python環(huán)境,我這里用的miniconda,因?yàn)槲募∫恍枰墓δ芤捕加小?/p>
conda create -n kivy python=3.8 source activate kivy pip install kivy
然后把我們?cè)趙indows下寫(xiě)的程序傳到虛擬機(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名稱(chēng)等,這里我也沒(méi)有仔細(xì)研究。
3.2 buildozer -v android debug
接下來(lái)是個(gè)巨坑,官方文檔上說(shuō)明是執(zhí)行buildozer -v android debug
,如果你是初次運(yùn)行,就可以去泡一杯咖啡了。因?yàn)檫@個(gè)過(guò)程中會(huì)自動(dòng)下載SDK/NDK等內(nèi)容。
然后第一個(gè)坑就來(lái)了,如果你是ubuntu16,那么大概跑了十幾分鐘后會(huì)失敗,提示ssl之類(lèi)的錯(cuò)誤。
其實(shí)這里并不需要魔法,可以正常下載,原因就在ubuntu的ssl版本。
SDK里面用的python3.10.10,要求openssl版本大于1.1.1
如果你愿意折騰,可以試試升級(jí)一下是否能解決這個(gè)問(wèn)題,但我建議直接用ubuntu20.04,按官方文檔來(lái)。
然后是第二個(gè)坑,如果下載過(guò)程中網(wǎng)絡(luò)波動(dòng)導(dǎo)致失敗,重新嘗試下載時(shí),會(huì)提示文件已存在,或者是某某工具找不到
因?yàn)橹跋螺d未完成但是可能文件已經(jīng)存在,這將影響工具對(duì)下載狀態(tài)的判斷,需要?jiǎng)h除工程目錄下的.buildozer文件夾和用戶(hù)目錄下的.buildozer文件夾
然后是第三個(gè)坑,下了十幾分鐘文件后,有一個(gè)文件無(wú)法下載,看域名確實(shí)是需要魔法才能下載,但是這并不意味著我們需要這個(gè)文件
重新執(zhí)行之前的命令,發(fā)現(xiàn)沒(méi)有出現(xiàn)前面的問(wèn)題,開(kāi)始正式編譯了,最終生成目錄bin,并在其下能找到apk文件。
四、驗(yàn)證
這里沒(méi)有像官方文檔中建議那樣直接用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)粘?xiě)代碼過(guò)程中,難免會(huì)寫(xiě)出各類(lèi)錯(cuò)誤,這些錯(cuò)誤可能是語(yǔ)法錯(cuò)誤、邏輯錯(cuò)誤或運(yùn)行時(shí)錯(cuò)誤,所以本文為大家分享了一些Python調(diào)試Debug的技巧,感興趣的可以了解下2024-11-11Pandas如何對(duì)帶有Multi-column(多列名稱(chēng))的數(shù)據(jù)排序并寫(xiě)入Excel中
這篇文章主要介紹了Pandas如何對(duì)帶有Multi-column(多列名稱(chēng))的數(shù)據(jù)排序并寫(xiě)入Excel中問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02Python簡(jiǎn)單獲取網(wǎng)卡名稱(chēng)及其IP地址的方法【基于psutil模塊】
這篇文章主要介紹了Python簡(jiǎn)單獲取網(wǎng)卡名稱(chēng)及其IP地址的方法,結(jié)合實(shí)例形式分析了Python基于psutil模塊針對(duì)本機(jī)網(wǎng)卡硬件信息的讀取操作簡(jiǎn)單使用技巧,需要的朋友可以參考下2018-05-05基于Python?wxPython開(kāi)發(fā)文件管理工具
這篇文章主要為大家詳細(xì)介紹了如何基于wxPython開(kāi)發(fā)一個(gè)文件管理工具,該工具提供了多種實(shí)用功能,代碼結(jié)構(gòu)清晰,易于理解和擴(kuò)展,需要的可以了解下2025-02-02解決python opencv無(wú)法顯示圖片的問(wèn)題
今天小編就為大家分享一篇解決python opencv無(wú)法顯示圖片的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-10-10Python unittest生成測(cè)試報(bào)告過(guò)程解析
這篇文章主要介紹了Python unittest生成測(cè)試報(bào)告過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09