如何实现多端
本质上,是一个核心程序+多个启动器。Desktop和移动端(Android和IOS)需要分别写启动器。
例如,核心程序=AvaloniaDemo,如果需要在移动端运行,就需要创建移动端的启动程序。
移动端启动程序
- 首先,我们创建新项目,项目模板选择Avalonia.Net App,随便起个名字。我们这里叫AvaloniaDemo.Android。
创建完成后,我们使用编辑项目文件来查看项目文件,这时文件里的内容应该是
<Project Sdk="Microsoft.NET.Sdk"><PropertyGroup><TargetFramework>net9.0-android</TargetFramework><OutputType>Exe</OutputType><Nullable>enable</Nullable><UseMaui>false</UseMaui><SupportedOSPlatformVersion>21</SupportedOSPlatformVersion></PropertyGroup><ItemGroup><PackageReference Include="Avalonia.Android" Version="11.3.6" /></ItemGroup><ItemGroup><ProjectReference Include="..\AvaloniaDemo\AvaloniaDemo.csproj" /></ItemGroup>
</Project>
注意TargetFramework标签和outputType标签
- 然后编辑MainActivity.CS,代码是
[Activity(Label = "AvaloniaDemo", MainLauncher = true,Theme = "@style/Theme.AppCompat.Light.NoActionBar")]
public class MainActivity : AvaloniaMainActivity<AvaloniaDemo.App>
{protected override void OnCreate(Bundle savedInstanceState){base.OnCreate(savedInstanceState);}
}
关键代码是当前类一定要继承自AvaloniaMainActivity,泛型是主程序的App。
- 编辑AvaloniaDemo的App.cs
- 移动端必须要使用View而不是Window,否则在运行到MainWindow的构造函数时会报错。
- 判断当前是不是移动端程序,使用
if (ApplicationLifetime is ISingleViewApplicationLifetime singleViewPlatform)
- 最后,就可以启动AvaloniaDemo.Android了
桌面端启动程序
同样使用项目模板选择Avalonia.Net App创建项目,在Program.cs里,修改BuildAvaloniaApp函数内AppBuilder.Configure的泛型为AvaloniaDemo的App