基础介绍
.NET MAUI (Multi-platform App UI) 是微软推出的跨平台应用开发框架,允许开发者使用C#和XAML创建可在Windows、macOS、iOS和Android上运行的原生应用。
本文档将详细介绍如何使用.NET MAUI编译Android应用。
核心优势
跨平台开发:一套代码,多平台运行
原生性能:提供接近原生应用的性能表现
统一开发体验:使用熟悉的C#语言和.NET生态系统
单一代码库:维护一套代码即可支持多个平台
丰富的生态系统:利用.NET生态系统的强大功能
简单使用
环境搭建
以下只介绍.net MAUI的环境配置,关于Android开发环境的配置不再描述;
安装与配置
- vs安装时需要选择安装时选择以下工作负载
- 安装.NET MAUI环境,命令如下:
dotnet workload install maui
dotnet workload install maui-android
- 验证.NET MAUI是否成功安装,命令如下:
dotnet workload list
创建项目
创建新的MAUI项目
使用命令行创建项目:
dotnet new maui -n MyMauiApp
或使用Visual Studio模板:
File -> New -> Project -> .NET MAUI App
.
配置Android设置
- 修改项目文件 (MyMauiApp.csproj)
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net9.0-android</TargetFrameworks>
<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">$(TargetFrameworks);net9.0-windows10.0.19041.0</TargetFrameworks>
<OutputType>Exe</OutputType>
<RootNamespace>MyMauiApp</RootNamespace>
<UseMaui>true</UseMaui>
<SingleProject>true</SingleProject>
<ImplicitUsings>enable</ImplicitUsings>
<!-- Android特定配置 -->
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'android'">21.0</SupportedOSPlatformVersion>
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows'">10.0.17763.0</SupportedOSPlatformVersion>
<TargetPlatformMinVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows'">10.0.17763.0</TargetPlatformMinVersion>
</PropertyGroup>
</Project>
- 在Platforms/Android/AndroidManifest.xml目录下配置Android清单文件如下:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<application android:allowBackup="true" android:icon="@mipmap/appicon" android:roundIcon="@mipmap/appicon_round" android:supportsRtl="true"></application>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
</manifest>
签名配置
配置签名文件
生成签名文件后,将签名文件、签名别名等信息填入项目配置中,比如MyMauiApp.csproj
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
<AndroidKeyStore>True</AndroidKeyStore>
<AndroidSigningKeyStore>sense.keystore</AndroidSigningKeyStore>
<AndroidSigningKeyAlias>sense</AndroidSigningKeyAlias>
<AndroidSigningKeyPass>sense123</AndroidSigningKeyPass>
<AndroidSigningStorePass>sense123</AndroidSigningStorePass>
</PropertyGroup>
编译方式
命令行编译
调试版本编译
# 编译Android调试版本
dotnet build -f net9.0-android
# 或指定配置
dotnet build -f net9.0-android -c Debug
发布版本编译
# -p指定Android sdk的存在路径
dotnet publish -f net9.0-android -c Release -p:AndroidPackageFormat=apk -p:AndroidSdkDirectory="F:\AndroidBuilding\android-sdk"
VS编译
调试模式
- 在Visual Studio中选择"Android Emulator"作为目标设备
- 按F5或点击"开始调试"按钮
- 应用将在模拟器中启动并附加调试器
发布模式
- 右键点击项目 -> Properties
- 选择"Android"选项卡
- 配置签名信息
- Build -> Build Solution (Release配置)
编译输出
程序编译成功后,默认在bin/Release/net9.0-android/
目录下生成Android apk和aab文件。
安全防范措施
安全问题
.NET MAUI框架编译的Android应用,编译打包后一些代码逻辑是生成Dex文件存放在APK中,Dex文件包含了类、方法、成员等信息,甚至包含了源文件名,使用jadx/jd-gui等工具可以轻松反编译出源代码,包内的音视频和图片等资源文件也容易被直接窃取使用,严重损害开发者利益,如图所示:
防范措施
针对Android应用,Virbox Protector
工具在对Android程序的保护上有着成熟的方案,可以实现对Android程序的dex文件和资源文件的保护,具体方案参考官网文档安卓 APK/AAB 保护最佳实践。