You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VS2022中MAUI Android版本预处理器未按设备API版本生效问题

预处理器指令ANDROID33_0_OR_GREATER未按预期生效的解决方案

这个问题并非Visual Studio的bug,核心原因是预处理器指令是基于项目编译时指定的「目标Android版本(Target Framework)」生效,而非运行时连接的设备API版本。以下是具体解决思路和步骤:

  • 调整项目目标框架配置
    右键Android项目 → 属性 → 「应用」选项卡 → 找到「目标框架」设置:

    • 若希望连接API31设备时走#else分支,需将当前编译配置(Debug/Release)对应的目标框架设置为API31或更低版本,而非API33+。预处理器会根据编译时的目标框架判定分支,和运行设备无关。
  • 检查编译配置一致性
    确认当前选中的编译配置(Debug/Release)的目标框架设置正确,不同配置可能独立设定目标框架,避免出现配置不匹配的情况。

  • 改用运行时版本判断(按需选择)
    如果你的需求是根据运行时设备的API版本执行对应逻辑,预处理器指令不适用(它是编译时判定),应替换为运行时检测代码:

    class DeviceInfoProvider: IDeviceInfoProvider
    {
        public string GetAppVarsion()
        {
            if (Android.OS.Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.Tiramisu)
            {
                var packageManager = Platform.AppContext.PackageManager;
                var packageName = Platform.AppContext.PackageName;
                var flags = PackageManager.PackageInfoFlags.Of((int)PackageInfoFlags.MetaData);
                var appVer = packageManager.GetPackageInfo(packageName, flags).VersionName;
                return appVer;
            }
            else
            {
                var appVer = Platform.AppContext.PackageManager.GetPackageInfo(Platform.AppContext.PackageName, 0).VersionName;
                return appVer;
            }
        }
    }
    

    此代码会在App运行时检测设备的API版本,真正实现基于连接设备的分支逻辑。

内容的提问来源于stack exchange,提问作者o_w

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 05:25:09