C# .net9 Avalonia Android 开发环境搭建 demo运行
0 新建项目
1 搭建环境
安装环境
如何搭建Android开发环境 | Avalonia Docs
Setting up the Android SDK for Xamarin.Android - Xamarin | Microsoft Learn
安装xamarin环境
修改.net9
修改目录下的文件指定 avalonia版本11.3.3
3 使用avalonia Prism.DryIoc.Avalonia 框架
nuget 安装Prism.DryIoc.Avalonia
using Avalonia; using Avalonia.Controls.ApplicationLifetimes; using Avalonia.Data.Core.Plugins; using Avalonia.Markup.Xaml; using MyGoldTest.ViewModels; using MyGoldTest.Views; using System; using Prism.DryIoc; using Prism.Ioc; using Prism.Modularity; namespace MyGoldTest; public partial class App : PrismApplication { public override void Initialize() { AvaloniaXamlLoader.Load(this); base.Initialize(); // Required to initialize Prism.Avalonia - DO NOT REMOVE } public override void OnFrameworkInitializationCompleted() { // Line below is needed to remove Avalonia data validation. // Without this line you will get duplicate validations from both Avalonia and CT BindingPlugins.DataValidators.RemoveAt(0); // if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) // { // desktop.MainWindow = new MainWindow // { // DataContext = new MainWindowViewModel() // }; // } // else if (ApplicationLifetime is ISingleViewApplicationLifetime singleViewPlatform) // { // singleViewPlatform.MainView = new HomeView() // { // DataContext = new HomeViewViewModel() // }; // } base.OnFrameworkInitializationCompleted(); } protected override AvaloniaObject CreateShell() { GlobalCls.Container = Container; if (ApplicationLifetime is ISingleViewApplicationLifetime singleViewPlatform) { //安卓不能使用Window,使用usercontrol return Container.Resolve<HomeView>(); } return Container.Resolve<MainWindow>(); } protected override void RegisterTypes(IContainerRegistry containerRegistry) { // Add Services and ViewModel registrations here Console.WriteLine("RegisterTypes()"); // Services //// containerRegistry.RegisterSingleton<ISampleService, ISampleService>(); // Views - Region Navigation //// containerRegistry.RegisterForNavigation<DashboardView, DashboardViewModel>(); // Dialogs //// containerRegistry.RegisterDialog<MessageBoxView, MessageBoxViewModel>(); //// containerRegistry.RegisterDialogWindow<CustomDialogWindow>(nameof(CustomDialogWindow)); /// containerRegistry.RegisterForNavigation<FooterView,FooterViewViewModel>(); containerRegistry.RegisterForNavigation<HeaderView,HeaderViewViewModel>(); containerRegistry.RegisterForNavigation<BodyView,BodyViewViewModel>(); containerRegistry.RegisterForNavigation<HomeView,HomeViewViewModel>(); containerRegistry.RegisterForNavigation<Page1View,Page1ViewViewModel>(); containerRegistry.RegisterForNavigation<Page2View,Page2ViewViewModel>(); containerRegistry.RegisterForNavigation<Page3View,Page3ViewViewModel>(); containerRegistry.RegisterForNavigation<Page4View,Page4ViewViewModel>(); } protected override void ConfigureModuleCatalog(IModuleCatalog moduleCatalog) { // Register modules //// moduleCatalog.AddModule<DummyModule.DummyModule1>(); } }
4 运行效果
5 禁用启动动画
<!-- 添加这行来禁用启动画面 --> <item name="android:windowDisablePreview">true</item>