軟件開發(fā)領(lǐng)域里,開發(fā)者們?cè)趯?yīng)用遷移至安卓平臺(tái)時(shí),紛紛尋求適宜的框架。在此過程中,Kivy和Flet這兩個(gè)框架引起了廣泛的討論和爭(zhēng)議。
一Kivy框架概況
Kivy是一個(gè)合了多種工具和庫(kù)的平臺(tái),專用于構(gòu)建跨平臺(tái)的圖形用戶界面應(yīng)用程序。舉例來說,它允許開發(fā)者用同一份代碼,在iOS、Windows、MacOS、Linux、Web以及tvOS等多個(gè)操作系統(tǒng)上發(fā)布應(yīng)用。曾有一支小型獨(dú)立開發(fā)者團(tuán)隊(duì),成員散布于美國(guó)各地,他們希望用有限的開發(fā)資源制作一款可在多個(gè)平臺(tái)上運(yùn)行的小游戲。鑒于Kivy成本低廉且基本滿足需求,他們選擇了Kivy。團(tuán)隊(duì)成員表示,盡管很多基礎(chǔ)功能需要他們自行開發(fā),但學(xué)習(xí)成本相對(duì)較低。

Kivy在開發(fā)大型或性能要求高的項(xiàng)目時(shí),可能會(huì)顯現(xiàn)出不足之處。一位在上海某軟件公司開發(fā)過大型辦公應(yīng)用的程序員表示,在用Kivy進(jìn)行開發(fā)時(shí),因?yàn)樾枰獑为?dú)制作許多組件,這導(dǎo)致項(xiàng)目的開發(fā)周期超出了預(yù)期,工作效率也不高。
二Kivy的性能與適用性

Kivy在開發(fā)簡(jiǎn)易小應(yīng)用方面確實(shí)有其獨(dú)特優(yōu)勢(shì)。比如,一位自由職業(yè)者在家中為個(gè)人興趣制作一個(gè)記錄日常收支的安卓小應(yīng)用,地點(diǎn)就在他倫敦的住所。他選擇了Kivy,經(jīng)過簡(jiǎn)單的學(xué)習(xí)便能夠熟練操作。由此可見,若只是想要制作一個(gè)功能基礎(chǔ)的小工具,Kivy確實(shí)是一個(gè)不錯(cuò)的選擇。
Kivy并非專為安卓系統(tǒng)設(shè)計(jì)。在安卓原生系統(tǒng)上開發(fā)高性能、復(fù)雜的應(yīng)用時(shí),常常會(huì)遇到性能和兼容性的難題。調(diào)查數(shù)據(jù)顯示,當(dāng)需要充分利用安卓系統(tǒng)的特性時(shí)——比如某些健康監(jiān)測(cè)軟件需要與安卓系統(tǒng)級(jí)別的傳感器深度結(jié)合——Kivy便難以滿足這些需求。
三Flet框架基本情況
Flet項(xiàng)目擁有詳盡的文檔資料。官網(wǎng)不僅提供了英文版本,還設(shè)有中文版,以方便不同語(yǔ)言背景的用戶查閱。開發(fā)者可以利用基于Python的Flet控件來創(chuàng)建用戶界面。即便是在東京,一些前端經(jīng)驗(yàn)不足的初學(xué)者,在學(xué)習(xí)了Flet之后,也能迅速掌握,快速搭建出簡(jiǎn)易的交互式應(yīng)用程序。
Flet操作起來十分簡(jiǎn)便,比如編寫Flet計(jì)數(shù)器程序時(shí),有現(xiàn)成的示例可以借鑒。而且,它的應(yīng)用非常靈活,比如直接運(yùn)行腳本就能在網(wǎng)頁(yè)上顯示“Hello,F(xiàn)let”,甚至可以通過輸入命令“hello:app”來啟動(dòng)相關(guān)應(yīng)用。
四Flet的獨(dú)特優(yōu)勢(shì)
Flet無(wú)需開發(fā)者擁有前端經(jīng)驗(yàn),這一特點(diǎn)顯著降低了開發(fā)難度。尤其在眾多小型創(chuàng)業(yè)公司中,例如北京的一家新興科技公司,為了內(nèi)部辦公需要,他們便利用Flet輕松搭建了各種管理界面。
Flet能夠與Flask、Django等web服務(wù)器相配合,替代內(nèi)置的FletWeb服務(wù)器,使生產(chǎn)工作負(fù)載運(yùn)行更加可靠。比如,某數(shù)據(jù)服務(wù)公司在服務(wù)中融入了Flet開發(fā)的交互式實(shí)時(shí)儀表板,此舉顯著提升了整體運(yùn)營(yíng)效率。
<PRe style="margin-top: 20px; margin-bottom: 20px; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-alternates: normal; font-size-adjust: none; font-kerning: auto; font-optical-sizing: auto; font-feature-settings: normal; font-variation-settings: normal; font-variant-position: normal; font-variant-emoji: normal; font-stretch: normal; font-size: 13px; line-height: 1.5; font-family: Consolas, monaco, monospace; color: rgb(238, 238, 238); tab-size: 4; overflow: auto; padding: 10px; border-width: 1px 1px 1px 5px; border-style: solid; border-color: rgb(229, 229, 229) rgb(229, 229, 229) rgb(229, 229, 229) rgb(0, 110, 255); border-image: initial; border-radius: 3px; background-color: rgb(38, 38, 38); cursor: text;">import flet from flet import IconButton, Page, Row, TextField, icons def main(page: Page): page.title = "Flet counter exAMPle" page.vertical_alignment = "center" txt_number = TextField(value="0", text_align="right", width=100) def minus_click(e): txt_number.value = int(txt_number.value) - 1 page.update() def plus_click(e): txt_number.value = int(txt_number.value) + 1 page.update() page.add( Row( [ IconButton(icons.REMOVE, on_click=minus_click), txt_number, IconButton(icons.ADD, on_click=plus_click), ], alignment="center", ) ) flet.app(target=main)五兩者對(duì)比在開發(fā)難度上
Kivy在多平臺(tái)開發(fā)中學(xué)習(xí)成本較低,特別是對(duì)于有經(jīng)驗(yàn)的開發(fā)者來說。而Flet則對(duì)前端新手更為友好。據(jù)一個(gè)線上開發(fā)者社區(qū)的數(shù)據(jù)統(tǒng)計(jì),初入開發(fā)領(lǐng)域的人學(xué)習(xí)Flet比學(xué)習(xí)Kivy要容易得多。
Kivy在復(fù)雜平臺(tái)特性的開發(fā)上,難度比Flet更大。以安卓系統(tǒng)的新功能為例,比如傳感器融合功能相關(guān)場(chǎng)景,Kivy的處理顯得較為復(fù)雜。而Flet則能通過其他方式繞開這些復(fù)雜性,實(shí)現(xiàn)類似的功能。
六二者對(duì)比在性能和兼容性方面
Kivy并非專為安卓平臺(tái)打造,因此其在安卓系統(tǒng)中的性能與兼容性方面存在不少問題。以一家專注于安卓智能家居控制系統(tǒng)開發(fā)的企業(yè)為例,他們使用Kivy進(jìn)行開發(fā)后,遭遇了不少兼容性問題。
import UVicorn from pathlib import Path import flet as ft import flet_fastAPI async def main(page: ft.Page): await page.add_async( ft.Text("Hello, Flet!") ) app = flet_fastapi.app(main) if __name__ == '__main__': uvicorn.run(f'{Path(__file__).stem}:app', host="0.0.0.0", port=5555)
Flet雖然在使用過程中跨平臺(tái)性能和兼容性上存在一些小問題,但總體來說,通過與其他工具的結(jié)合等方式,這些問題是可以得到彌補(bǔ)的。例如,某個(gè)開發(fā)多平臺(tái)小游戲的團(tuán)隊(duì)就先用Flet制作了初始版本,隨后又針對(duì)不同平臺(tái)進(jìn)行了各自的優(yōu)化,整個(gè)開發(fā)過程相當(dāng)順暢。
在您考慮將程序遷移至安卓平臺(tái)時(shí),是傾向于選擇Kivy還是Flet?期待大家踴躍點(diǎn)贊、轉(zhuǎn)發(fā),并在評(píng)論區(qū)發(fā)表您的看法。

標(biāo)簽:
本文鏈接:http://m.373753.com/xinwendongtai/1545.html
版權(quán)聲明:站內(nèi)所有文章皆來自網(wǎng)絡(luò)轉(zhuǎn)載,只供模板演示使用,并無(wú)任何其它意義!