Avalonia开发(二)项目结构解析

Avalonia,结构,项目 · 浏览次数 : 54

小编点评

**Avalonia项目结构介绍** **平台** | **FirstAvaloniaApp.Desktop** | **FirstAvaloniaApp.Android** | **FirstAvaloniaApp.iOS** | **FirstAvaloniaApp.Browser** | ---|---|---|---|---| **项目类型** | Desktop程序 | Android程序 | iOS程序 | Web应用程序 | **项目结构** | Program.cs | MainActivity.cs | Main.cs | **默认生成的文件** | Program.cs | AndroidManifest.xml、MainActivity.cs | AppDelegata.cs、Info.plist | **平台初始化** | UsePlatformDetect:加载平台基础内容 | Activity属性,主题、图标、启动页 | N/A | **编译** | 直接生成exe程序 | 无法生成apk程序 | 无法生成apk程序 | **运行** | Windows:直接生成exe程序 | Android:运行在模拟器或真机上 | iOS:运行在模拟器或真机上 | **其他文件** - Android项目包含 Properties、AppBundle、Program.cs、runtimeconfig.template.json等文件。 - iOS项目包含 Asset Catalogs、Resources、AppDelegata.cs、Entitlements.plist等文件。 **总结** Avalonia是一个跨平台的开发框架,支持Windows、Android和iOS平台。项目使用AppBuilder类构建平台初始化服务,主要用于以下目的: - 加载平台基础内容 - 配置应用程序配置 - 运行应用程序 目前,Avalonia的某些内容还处于早期阶段,对于特定平台的需求,选择还是要谨慎一些。

正文

一、前言

Avalonia开发(一)环境搭建 文章中介绍了Avalonia的介绍、开发环境的搭建、项目创建,以及项目FirstAvaloniaApp项目结构的介绍。本篇文章将介绍各平台的项目介绍。

二、Desktop项目结构

FirstAvaloniaApp.Desktop项目中默认生成的只有两个文件:Program.csapp.manifest(程序文件清单)

Program.cs 主要是Main函数,指定程序运行的一些条件

看一下BuildAvaloniaApp()函数,使用的是lambda表达式,里面用到了类为AppBuilder,后面的为几个静态方法

  • Configure<T>AppBuilder中的静态方法,用于生成一个AppBuilder的实例。

  • UsePlatformDetect:静态扩展方法,用于加载平台需要的一些基础内容,如渲染等。位于Avalonia.Desktop.dll类库中

  • WithInterFont:静态扩展方法,用于加载字体的相关处理,位于Avalonia.Fonts.Inter.dll库中

  • LogToTrace:静态扩展方法,用于一些日志信息的输出,位于Avalonia.Controls.dll库中。

项目完成编译后,对于Windows平台的话,直接生成对应的exe程序。

三、Android项目结构

FirstAvaloniaApp.Android 项目内包括Android需要的 Properties\AndroidManifest.xmlResourcesIcon.pngMainActivity.cs几个文件/文件夹。在这里我们主要讲的是MainActivity.cs

MainActivity继承自AvaloniaMainActivity<TApp>类,并实现虚方法CustomizeAppBuilder。此虚方法主要是执行加载字体,在父类中存在执行了用于加载Android系统相关资源的一些东西,如果想继续研究的话,可以参考Avalonia的源代码,这里不再详细赘述。

MainActivity类上面添加了Activity属性,指定主题、图标、启动页等相关内容。

项目完成编译后,如果不使用模拟器或者真机运行的话不会生成apk文件,只是简单的生成了对应dll文件。

连接真机,并打开调试功能,可以将apk程序安装到手机上运行。

三、iOS项目结构

FirstAvaloniaApp.iOS 项目内包含的基础文件(夹)比较多,如:Asset CatalogsResourcesAppDelegata.csEntitlements.plistInfo.plistMain.cs。因没有开发过iOS的应用,某些文件(夹)具体作用不得而知。

Main.cs:入口函数,传入了AppDelegata.cs的类型

AppDelegata.cs继承自AvaloniaAppDelegate<TApp>类,并实现虚方法CustomizeAppBuilder,执行一些平台的相关内容。

Entitlements.plist是权限相关的内容

Info.plist是对程序的一些内容的设置。

是否能运行,未验证。

四、Browser项目结构

目前还处于早期阶段,尚未准备好用于生产
FirstAvaloniaApp.Browser 项目内包含的PropertiesAppBundleProgram.csruntimeconfig.template.json

Program.cs:定义一个主函数。

看一下BuildAvaloniaApp()函数,使用的是lambda表达式,里面用到了类为AppBuilder,后面的为几个静态方法

  • Configure<T>AppBuilder中的静态方法,用于生成一个AppBuilder的实例。

可以在浏览器中运行。

五、发布

5.1 Desktop发布

发布选择文件夹,执行到最后,会生成一个Properties\PublishProfiles\FolderProfile.pubxml文件,
经过本人的测试,对于WindowsLinuxoxs三个平台的桌面程序均可以正常发布(使用的单文件发布),Windows平台程序可以正常运行,对于其他两个系统的程序,因没有机器,未进行验证。

Windows发布后的文件列表

Linux发布后的文件列表

oxs发布后的文件列表

5.2 Android发布

选择了文件夹选项,不能正常发布生成apk程序。

5.3 iOS发布

选择了文件夹选项,在Windows平台上不能正常发布程序。

5.4 Browser发布

选择了文件夹选项,在Windows平台上可以发布,但是在publish文件夹中没有文件。

结果分析

五、总结

各个平台的程序都使用了AppBuilder这个类,主要用于构建初始化特定平台的初始化服务工作。

目前,Avalonia的某些内容还不成熟,对于特定平台的需求,选择还是要谨慎一些。

Avalonia系列文章

1、 Avalonia开发(一)环境搭建

与Avalonia开发(二)项目结构解析相似的内容:

Avalonia开发(二)项目结构解析

一、前言 在Avalonia开发(一)环境搭建 文章中介绍了Avalonia的介绍、开发环境的搭建、项目创建,以及项目FirstAvaloniaApp项目结构的介绍。本篇文章将介绍各平台的项目介绍。 二、Desktop项目结构 FirstAvaloniaApp.Desktop项目中默认生成的只有两个

在虚拟机VMware上安装OpenKylin开源操作系统

# 在虚拟机(VMware)上安装OpenKylin开源操作系统 今天我们一下学习下开放麒麟系统的安装。也是我的开源项目在OpenKylin上运行的实践。 希望通过该项目了解和学习Avalonia开发的朋友可以在我的github上拉取代码,同时希望大家多多点点star。 https://github

基于Avalonia 11.0.0+ReactiveUI 的跨平台项目开发1-通用框架

# 基于Avalonia 11.0.0+ReactiveUI 的跨平台项目开发1-通用框架 ### Avalonia简介: Avalonia是.NET的一个跨平台UI框架,提供了一个灵活的样式系统,支持广泛的操作系统,如Windows、Linux、macOS,并对Android、iOS和WebAss

基于Avalonia 11.0.0+ReactiveUI 的跨平台项目开发2-功能开发

# 基于Avalonia 11.0.0+ReactiveUI 的跨平台项目开发2-功能开发 ![image-20230718225201652](https://www.raokun.top/upload/2023/07/image-20230718225201652.png) **项目简介**:目

Avalonia开发Markdown编辑器

# Avalonia开发Markdown编辑器 今天熟悉Avalonia UI,做一个Markdown的文本编辑器。 代码我上传了Github,地址: [https://github.com/raokun/AvaloniaMarkdown.git](https://github.com/raokun

Avalonia开发(一)环境搭建

一、介绍 开源 GitHub:https://github.com/AvaloniaUI/Avalonia/ 多平台支持,包括Windows、mac OS、Linux、iOS、Android、Samsung Tizen(很快支持)、WebAssembly IDE支持,Visual Studio扩展支

动手学Avalonia:基于SemanticKernel与硅基流动构建AI聊天与翻译工具

Avalonia是什么? Avalonia是一个跨平台的UI框架,专为.NET开发打造,提供灵活的样式系统,支持Windows、macOS、Linux、iOS、Android及WebAssembly等多种平台。它已成熟并适合生产环境,被Schneider Electric、Unity、JetBrai

解决WPF+Avalonia在openKylin系统下默认字体问题

一、openKylin简介 openKylin(开放麒麟) 社区是在开源、自愿、平等和协作的基础上,由基础软硬件企业、非营利性组织、社团组织、高等院校、科研机构和个人开发者共同创立的一个开源社区,致力于通过开源、开放的社区合作,构建桌面操作系统开源社区,推动Linux开源技术及其软硬件生态繁荣发展。

Avalonia中用FluentAvalonia+DialogHost.Avalonia实现界面弹窗和对话框

# Avalonia中用FluentAvalonia+DialogHost.Avalonia实现界面弹窗和对话框 本文是项目中关于 **`弹窗界面`** 设计的技术分享,通过 **`FluentAvalonia`+`DialogHost.Avalonia`** 开源nuget包来实现项目中需要 **

Avalonia项目在OpenKylin运行踩坑

# Avalonia项目在OpenKylin运行踩坑 本篇博客记录OpenKylin开源操作系统中运行Avalonia项目遇到的各种问题,会一直更新,最新的内容请点击文末的链接跳转到我的[博客原文地址](https://www.raokun.top/archives/avalonia-xiang-m