用途:指导将 Xamarin.Android 原生应用迁移到 .NET for Android。策略是新建项目并复制代码,不要原地修改旧项目文件。
主要能力与流程:用 dotnet new android 新建项目;把代码和资源复制进去;更新 MSBuild 属性;修改 AndroidManifest.xml;删除 Resource.designer.cs;更新 NuGet 依赖;必要时迁移绑定库;用 <UseMauiEssentials>true</UseMauiEssentials> 替代 Xamarin.Essentials;处理编码变化;删除 bin/ 与 obj/ 后构建,并在真机上测试。参考资料见 references/android-migration-api.md(SDK 样式模板、MSBuild 属性表、ABI 转换、命名空间映射、CLI 命令)。
关键注意点:从 AndroidManifest.xml 移除 <uses-sdk>,改用 <TargetFramework>net8.0-android</TargetFramework> 和 <SupportedOSPlatformVersion>21</SupportedOSPlatformVersion>;删除 Resource.designer.cs 以免重复符号错误;不支持 .dll.config 与 <dllmap>,使用 System.Configuration.ConfigurationManager 的应用应迁移到 appsettings.json 或平台首选项;使用 Essentials 时每个 Activity 都要重写 OnRequestPermissionsResult;AndroidManifest.xml 位置改为项目根目录。
平台差异:OEM 渲染差异和阴影表现可能只在真机出现;Android Wear 引用不受支持需删除;MAndroidI18n 被移除,改用 System.Text.Encoding.CodePages;AotAssemblies 弃用,改用 RunAOTCompilation;jar2xml 不支持,使用默认 class-parse 解析器;DebugType=full 不支持,使用默认 portable。
NuGet 兼容:面向 monoandroid 的包通常仍可在 .NET for Android 上工作,多数无需重编译(iOS/Mac 不适用)。无兼容版本时可自行用 .NET TFM 重编译、找预览版或换替代方案。
限制:资料未提供具体价格、平台支持范围、版本升级路径细节;若同时采用 .NET MAUI 控件,应参考 maui-current-apis 技能规避已弃用 API。建议从多厂商真机测试。