Avalonia怎么在手机上运行 Avalonia for Android/iOS

8次阅读

要在手机上运行 Avalonia 应用,需分别完成 Android 和 iOS 的构建、签名与部署:Android 依赖。NET 8+、JDK 17+ 及 Android SDK,通过 VS 真机调试或生成 APK;iOS 必须配对 macOS 并用 Xcode 签名,依赖 Apple 开发者证书;两者共用同一套 XAML 和 ViewModel,核心难点在于环境配置与签名流程。

Avalonia 怎么在手机上运行 Avalonia for Android/iOS

要在手机上运行 Avalonia 应用,核心是分别完成 Android 和 iOS 平台的构建、签名与部署。两者流程不同,但都依赖 .NET 工作负载和平台 SDK 支持。下面分平台说明关键步骤和常见注意事项。

Android:真机调试与 APK 安装

Android 环境相对成熟,支持模拟器和实体机两种方式:

  • 必备 工具 :安装 .NET 8+ SDK、JDK 17+、Android SDK(含 platform-tools、build-tools、Android API 34+)、Visual Studio 2022(启用“Mobile development with .NET”工作负载)
  • 项目配置:确保 Android 项目(如 MyApp.Android)引用 Avalonia.Android 包,.csproj 中目标框架为 net8.0-android,并设置 34.0
  • 真机调试 :开启手机 USB 调试 → 用 USB 连接 电脑 → 在 VS 中选择设备 → 右键项目 →“设为启动项目”→ 按 F5 直接部署运行;首次会自动安装 APK 并启动
  • 生成独立 APK:右键项目 →“发布”→ 选择“文件夹”目标 → 使用 CLI 命令:dotnet publish -c Release -f net8.0-android -r android-arm64 --self-contained true,输出在 bin/Release/net8.0-android/android-arm64/publish/

iOS:需 macOS 配对 + Xcode 签名

iOS 构建无法纯 Windows 完成,必须通过网络配对一台运行 macOS 的机器(黑 苹果 或 Mac),由其调用 Xcode 编译和签名:

  • Mac 端准备:macOS 15+、Xcode 16+、已登录 Apple ID;VS 会自动安装 dotnet workload install ios 所需组件
  • Windows 配对:VS →“工具”→“选项”→“Xamarin”→“iOS Settings”,填入 Mac IP 和登录凭据 → 点击 Connect 等待加载完成
  • 签名配置:iOS 项目中打开 Info.plist 设置 Bundle Identifier(如 com.yourname.myapp);在项目属性 →“签名”页选择 Manual Provisioning,并填入证书名称(从 Mac 钥匙串复制)
  • 真机部署:连接 iPhone → 在 VS 中选择设备 → 启动调试;应用会自动安装并运行。注意:未加入 Apple 开发者计划时,证书仅有效期 7 天,到期需重连重装

共性要点:UI 适配与启动逻辑

无论 Android 还是 iOS,Avalonia 都通过统一入口抽象处理平台差异:

  • Android:主 Activity 继承 AvaloniaMainActivity,重写 CustomizeAppBuilder 注册平台服务(如字体、触摸事件)
  • iOSAppDelegate 继承 AvaloniaAppDelegateMain 方法调用 UIApplication.Main 启动
  • 安全区域适配:在页面 OnAttachedToVisualTree 中读取 TopLevel.GetTopLevel(this)?.InsetsManager.SafeAreaPadding,动态设置 Padding,避免刘海 / 圆角遮挡内容
  • 手势与导航 :移动端默认不带导航栏,需自行实现返回按钮或使用 INavigationService(配合 CommunityToolkit.Mvvm)管理页面

只要环境配置到位,Avalonia 的跨平台能力能让同一套 XAML 和 ViewModel 代码,在 Android 和 iOS 上原生运行,无需重写 UI 层。难点不在逻辑,而在初始环境打通和签名流程。

星耀云
版权声明:本站原创文章,由 星耀云 2026-01-02发表,共计1652字。
转载说明:转载本网站任何内容,请按照转载方式正确书写本站原文地址。本站提供的一切软件、教程和内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。
text=ZqhQzanResources