当前位置: 首页 > news >正文

.NET MAUI框架编译Android应用流程

基础介绍

.NET MAUI (Multi-platform App UI) 是微软推出的跨平台应用开发框架,允许开发者使用C#和XAML创建可在Windows、macOS、iOS和Android上运行的原生应用。

本文档将详细介绍如何使用.NET MAUI编译Android应用。

核心优势

  • 跨平台开发:一套代码,多平台运行

  • 原生性能:提供接近原生应用的性能表现

  • 统一开发体验:使用熟悉的C#语言和.NET生态系统

  • 单一代码库:维护一套代码即可支持多个平台

  • 丰富的生态系统:利用.NET生态系统的强大功能

简单使用

环境搭建

以下只介绍.net MAUI的环境配置,关于Android开发环境的配置不再描述;

安装与配置

  1. vs安装时需要选择安装时选择以下工作负载

在这里插入图片描述

  1. 安装.NET MAUI环境,命令如下:
dotnet workload install maui
dotnet workload install maui-android
  1. 验证.NET MAUI是否成功安装,命令如下:
dotnet workload list

创建项目

创建新的MAUI项目
  • 使用命令行创建项目:dotnet new maui -n MyMauiApp

  • 或使用Visual Studio模板:File -> New -> Project -> .NET MAUI App.

配置Android设置
  1. 修改项目文件 (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>
  1. 在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编译

调试模式

  1. 在Visual Studio中选择"Android Emulator"作为目标设备
  2. 按F5或点击"开始调试"按钮
  3. 应用将在模拟器中启动并附加调试器

发布模式

  1. 右键点击项目 -> Properties
  2. 选择"Android"选项卡
  3. 配置签名信息
  4. 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 保护最佳实践。

http://www.lryc.cn/news/618121.html

相关文章:

  • 计算机视觉(7)-纯视觉方案实现端到端轨迹规划(思路梳理)
  • 《飞算Java AI:从安装到需求转实战项目详细教学》
  • 解决anaconda打包幻境是报错:ImportError: cannot import name ‘tarfile‘ from ‘backports‘
  • Java多线程基础总结
  • 云原生环境Prometheus企业级监控实战
  • 【编程实践】关于Vscode无法连接Anaconda解译器的问题
  • 手机蓝牙无感开锁在智能柜锁与智能箱包中的整体解决方案
  • MySql——B树和B+树区别(innoDB引擎为什么把B+树作为默认的数据结构)
  • 2025-8-11-C++ 学习 暴力枚举(2)
  • STM32学习笔记7-TIM输入捕获模式
  • 【OpenGL】LearnOpenGL学习笔记06 - 坐标系统、MVP变换、绘制立方体
  • 复杂提示词配置文件
  • Tricentis Tosca:现代软件测试的自动化利器
  • 内存作假常见方案可行性分析
  • MySQL,Redis重点面试题
  • 最短路问题从入门到负权最短路
  • 基于51单片机指纹识别管理门禁密码锁系统设计
  • 集成电路学习:什么是URDF Parser统一机器人描述格式解析器
  • 19.Linux DHCP服务
  • 数据结构:串、数组与广义表
  • 【Leetcode】随笔
  • 每日算法刷题Day61:8.11:leetcode 堆11道题,用时2h30min
  • 普通大学本科生如何入门强化学习?
  • 【ros-humble】4.C++写法巡场海龟(服务通讯)
  • Linux运维学习第十四周
  • 【3D Gen 入坑(1)】Hunyuan3D-Paint 2.1 安装 `custom_rasterizer` 报错完整排查
  • PyTorch基础(使用Numpy实现机器学习)
  • Vue 中的 Class 与 Style 绑定详解2
  • ubuntu24.04设置登陆背景图片
  • Pytest项目_day12(yield、fixture的优先顺序)