使用 Avalonia 开发 UOS 原生应用
最近很火的是國產(chǎn)的操作系統(tǒng) UOS 系統(tǒng),這個系統(tǒng)現(xiàn)在存在的問題就是生態(tài)沒搭建起來。作為 dotnet 開發(fā)者,可以通過很多不同方向的技術(shù)為 UOS 系統(tǒng)生態(tài)貢獻應用,如 Xamarin 和 GTK# 或 wine 和 win32 應用,或 mono 和 WinForms 應用等。本文將安利大家使用 Avalonia 框架開發(fā) UOS 上的原生應用
什么是 Avalonia 簡單說法就是原 WPF 的開發(fā)者沒事干寫的一套全平臺框架,這個框架將 UI 布局和 UI 渲染抽離,通過在不同的平臺注入平臺原生的渲染框架做到了全平臺。理論上無論哪個平臺,只要符合渲染原理能夠封裝注入進去,那么將可以用上 Avalonia 框架
咱的 UOS 系統(tǒng)是基于 deepin 基于 debian 10 的系統(tǒng),剛好在 dotnet core 支持范圍。接下來將通過 dotnet core 全平臺的特性,加上 Avalionia 和平臺無關(guān)的布局和交互計算框架,配合具體平臺渲染和交互,就可以做到在 UOS 上開發(fā)原生的應用
我有一個 Windows 的設備,在 Windows 上開發(fā)的效率比較高,本文的代碼編寫和構(gòu)建都將會在 Windows 上進行。當然,用純 UOS 下開發(fā)也是可以的,只是前提是對 Linux 要比較熟悉
請從模版創(chuàng)建開始,從零從控制臺搭建的細節(jié)太多了,也不是本文關(guān)注的內(nèi)容
先通過 Git 下載 官方的模版庫?https://github.com/AvaloniaUI/avalonia-dotnet-templates
然后通過 cd 命令進入到 avalonia-dotnet-templates 文件夾,通過下面代碼安裝此模版。注意,只有在首次使用才需要安裝模版
dotnet new --install ./上面代碼是通過 dotnet 模版安裝的方法,安裝當前文件夾才存在的模版
如果安裝成功,理論上應該可以從輸出里面看到下面代碼
Avalonia .NET Core App avalonia.app [C#] ui/xaml Avalonia .NET Core MVVM App avalonia.mvvm [C#] ui/xaml Avalonia UserControl avalonia.usercontrol [C#] ui/xaml Avalonia Window avalonia.window [C#] ui/xaml接下來新建一個空白文件夾,用命令行進入此文件夾(為什么不用 VisualStudio 原因是命令行說起來更簡單)在命令行輸入下面代碼創(chuàng)建一個 Avalonia 應用
dotnet new avalonia.app此時將會在當前文件夾里面創(chuàng)建一個 Avalonia 應用
一個空白的 Avalonia 應用默認帶有 Hellow 界面,先不要嘗試修改界面邏輯,請先發(fā)布運行一下
使用 Avalonia 帶來的優(yōu)勢是部署特別方便,原因是 dotnet core 部署非常方便,通過下面命令就可以獨立發(fā)布一個 dotnet core 應用。獨立發(fā)布將不需要任何依賴,可以做到在 Linux 上復制文件的方式安裝
dotnet publish -c release -r linux-x64 --self-contained此時就完成了生成,嘗試將?bin\release\netcoreapp3.0\linux-x64\publish\?文件夾復制到 UOS 系統(tǒng)上。我采用的方法是在本機先將 Publish 文件夾壓縮為 Publish.zip 文件,然后用下面兩句代碼開啟一個 http 靜態(tài)文件服務器
dotnet tool install --global dotnet-servedotnet serve -p 1007 -a 0.0.0.0關(guān)于上面開啟靜態(tài)文件服務器的方法請看?dotnet serve 一句話開啟文件服務器 通過 HTTP 將文件共享給其他設備
在 UOS 上訪問?http://xx.xx.xx.xx:1007?就能看到開啟的靜態(tài)文件服務器,找到里面的 publish.zip 文件,下載下來,可以在 UOS 的資源管理器里面,右擊解壓縮
此時需要通過命令行給他一個權(quán)限才能運行,在 UOS 通過快捷鍵 ctrl+alt+t 打開命令行,通過 cd 命令進去下載的文件夾的路徑。默認都會下載到?~/Download?文件夾,這里可執(zhí)行文件是一個不帶后綴的文件。如我創(chuàng)建的項目是 avalonial 此時我生成的可執(zhí)行文件就是和項目名相同的不帶后綴名的文件,使用下面代碼就可以讓這個文件有權(quán)限執(zhí)行
chmod 777 ./avalonial接下來可以選擇用命令行輸入?./avalonial?執(zhí)行,也可以如下圖在資源管理器里面雙擊運行
在成功跑起來之后,再請小伙伴修改界面,寫出還玩的應用。此時部署炸了就肯定不會說 Avalonia 不兼容 UOS 了
現(xiàn)在 AvaloniaUI 是完全開源的,我也在這個項目里面水了改注釋的代碼,歡迎小伙伴組隊貢獻代碼
總結(jié)
以上是生活随笔為你收集整理的使用 Avalonia 开发 UOS 原生应用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【One by One系列】Identi
- 下一篇: 云原生那些顶级开源项目,你都用过哪些?