軟件開發領域里,開發者們在將應用遷移至安卓平臺時,紛紛尋求適宜的框架。在此過程中,Kivy和Flet這兩個框架引起了廣泛的討論和爭議。
一Kivy框架概況
Kivy是一個合了多種工具和庫的平臺,專用于構建跨平臺的圖形用戶界面應用程序。舉例來說,它允許開發者用同一份代碼,在iOS、Windows、MacOS、Linux、Web以及tvOS等多個操作系統上發布應用。曾有一支小型獨立開發者團隊,成員散布于美國各地,他們希望用有限的開發資源制作一款可在多個平臺上運行的小游戲。鑒于Kivy成本低廉且基本滿足需求,他們選擇了Kivy。團隊成員表示,盡管很多基礎功能需要他們自行開發,但學習成本相對較低。

Kivy在開發大型或性能要求高的項目時,可能會顯現出不足之處。一位在上海某軟件公司開發過大型辦公應用的程序員表示,在用Kivy進行開發時,因為需要單獨制作許多組件,這導致項目的開發周期超出了預期,工作效率也不高。
二Kivy的性能與適用性

Kivy在開發簡易小應用方面確實有其獨特優勢。比如,一位自由職業者在家中為個人興趣制作一個記錄日常收支的安卓小應用,地點就在他倫敦的住所。他選擇了Kivy,經過簡單的學習便能夠熟練操作。由此可見,若只是想要制作一個功能基礎的小工具,Kivy確實是一個不錯的選擇。
Kivy并非專為安卓系統設計。在安卓原生系統上開發高性能、復雜的應用時,常常會遇到性能和兼容性的難題。調查數據顯示,當需要充分利用安卓系統的特性時——比如某些健康監測軟件需要與安卓系統級別的傳感器深度結合——Kivy便難以滿足這些需求。
三Flet框架基本情況
Flet項目擁有詳盡的文檔資料。官網不僅提供了英文版本,還設有中文版,以方便不同語言背景的用戶查閱。開發者可以利用基于Python的Flet控件來創建用戶界面。即便是在東京,一些前端經驗不足的初學者,在學習了Flet之后,也能迅速掌握,快速搭建出簡易的交互式應用程序。
Flet操作起來十分簡便,比如編寫Flet計數器程序時,有現成的示例可以借鑒。而且,它的應用非常靈活,比如直接運行腳本就能在網頁上顯示“Hello,Flet”,甚至可以通過輸入命令“hello:app”來啟動相關應用。
四Flet的獨特優勢
Flet無需開發者擁有前端經驗,這一特點顯著降低了開發難度。尤其在眾多小型創業公司中,例如北京的一家新興科技公司,為了內部辦公需要,他們便利用Flet輕松搭建了各種管理界面。
Flet能夠與Flask、Django等web服務器相配合,替代內置的FletWeb服務器,使生產工作負載運行更加可靠。比如,某數據服務公司在服務中融入了Flet開發的交互式實時儀表板,此舉顯著提升了整體運營效率。
<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)五兩者對比在開發難度上
Kivy在多平臺開發中學習成本較低,特別是對于有經驗的開發者來說。而Flet則對前端新手更為友好。據一個線上開發者社區的數據統計,初入開發領域的人學習Flet比學習Kivy要容易得多。
Kivy在復雜平臺特性的開發上,難度比Flet更大。以安卓系統的新功能為例,比如傳感器融合功能相關場景,Kivy的處理顯得較為復雜。而Flet則能通過其他方式繞開這些復雜性,實現類似的功能。
六二者對比在性能和兼容性方面
Kivy并非專為安卓平臺打造,因此其在安卓系統中的性能與兼容性方面存在不少問題。以一家專注于安卓智能家居控制系統開發的企業為例,他們使用Kivy進行開發后,遭遇了不少兼容性問題。
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雖然在使用過程中跨平臺性能和兼容性上存在一些小問題,但總體來說,通過與其他工具的結合等方式,這些問題是可以得到彌補的。例如,某個開發多平臺小游戲的團隊就先用Flet制作了初始版本,隨后又針對不同平臺進行了各自的優化,整個開發過程相當順暢。
在您考慮將程序遷移至安卓平臺時,是傾向于選擇Kivy還是Flet?期待大家踴躍點贊、轉發,并在評論區發表您的看法。

標簽:
本文鏈接:http://m.www9463.cn/xinwendongtai/1545.html
版權聲明:站內所有文章皆來自網絡轉載,只供模板演示使用,并無任何其它意義!