MAUI(C#)安卓开发起步

初级代码游戏的专栏介绍与文章目录-CSDN博客

我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。

这些代码大部分以Linux为目标但部分代码是纯C++的,可以在任何平台上使用。

源码指引:github源码指引_初级代码游戏的博客-CSDN博客


用visual studio MAUI开发安卓对C#、微软流是个比较方便的方法,虽然可能不如原生开发那么强悍,做一般性的应用是绰绰有余的。不过实话说,同时给苹果和安卓开发不一定能节省多少时间,处理平台差异非常头疼,MAUI并没有很完善地解决平台差异。

目录

[一、安装Visual Studio组件](#一、安装Visual Studio组件)

二、生成新项目

[2.1 应用类型](#2.1 应用类型)

​编辑

[2.2 框架版本](#2.2 框架版本)

[2.3 编译运行windows版](#2.3 编译运行windows版)

三、安卓模拟器运行

[3.1 安装模拟器](#3.1 安装模拟器)

[3.2 运行](#3.2 运行)

四、模拟器无法启动怎么办

[4.1 模拟器自身启动报错](#4.1 模拟器自身启动报错)

[4.2 启用虚拟化和Hyper-V](#4.2 启用虚拟化和Hyper-V)

五、认识项目基本结构

[5.1 目录结构](#5.1 目录结构)

[5.2 xaml](#5.2 xaml)

[5.3 启动顺序](#5.3 启动顺序)


一、安装Visual Studio组件

必须安装".NET Multi-platform App UI"开发才行。

二、生成新项目

2.1 应用类型

第一个项目可以从".NET MAUI应用"开始,这是最标准的。

2.2 框架版本

框架选择一般选长期支持的,如果你需要使用早期.NET版本,虽然项目里面可以改,但又不是可以改全部,所以呢,最好安装旧版本的visual studio。我现在用的版本只提供.NET8.0和9.0:

2.3 编译运行windows版

创建项目之后就可以直接编译运行,先试试"Windows Machine"的效果:

挺难看的。那个大按钮可以点击,点击之后按钮上的文字变为点击次数:

这就算项目创建成功了。但是不算可以起步了,因为我们要的事安卓版。

三、安卓模拟器运行

3.1 安装模拟器

在菜单栏打开"工具"-"Andriod"-"Android Device Manager":

点那个大大的"+"添加一个设备,默认是Pixel 7,无所谓了。API版本其实越低越好,越低兼容的设备越多。

需要自动下载一些东西,安装好后是这样:

不用点"开始",运行的时候会自动启动。

3.2 运行

改一下运行目标,从下拉中找到刚才建好的模拟器设备:

点一下开始运行...... 第一次会很慢,要先编译,再启动模拟器,然后各种准备,最后才能看见效果:

点一点也是一样的效果:

这就算准备工作大功告成,可以开始正式开发了。

四、模拟器无法启动怎么办

4.1 模拟器自身启动报错

如果运行程序发现报错:

如果有个消息框一闪而过,可以打开安装模拟器的那个界面,手动运行一下,一样会出错但消息款不会自动消失:

上面说得很清楚:

HAXM is deprecated and not supported by Intel any more. Please download and install Android Emulator Hypervisor Driver for AMD Processors, which also supports Intel Processors. Installing from SDK Manager is comming soon.

意思是用于Intel CPU的加速器HAMX已经启用,你要换一个,但那个还不能自动安装。

你去SDK Manager(就是安装模拟器的菜单的下面一个菜单)看,发现其实HAMX没装,Android Emulator Hypervisor Driver也没装,然后你就想是不是装一下这个就行了......

唉!别动,其实大概率是Hyper-V没装啊。没有Hyper-V才会去用HAXM或AEHD(就是Android Emulator Hypervisor Driver),但是我分别装了这两个也都没用,一切照旧,出错信息也不变。

4.2 启用虚拟化和Hyper-V

虚拟化一般在电脑的BIOS设定里开启,如果支持,一般默认是开启的。

Hyper-V是操作系统的附加组件,在"启用或关闭Windows功能"里添加。对于windows11,在【设置】-【 系统】-【 可选功能】-【 更多windows功能】:

安装好后重启系统,就会发现模拟器能够正确运行了。

你在其他资料里发现除了Hyper-V还有个相关需要勾选,但是在我的系统上,那个条目根本就不存在。

五、认识项目基本结构

5.1 目录结构

上面的属性、依赖项、平台目录暂时不用关注,平台目录下是每个平台的专属内容,暂时不需要修改。

下面的Resources、三个xaml、一个cs是重点。

5.2 xaml

xaml是界面描述,每一个都对应一个.xaml.cs文件,xmal里面所需的C#代码就在对应的cs文件里。

主界面对应的文件"MainPage.xaml",内容如下:

cs 复制代码
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="MauiApp1.MainPage">

    <ScrollView>
        <VerticalStackLayout
            Padding="30,0"
            Spacing="25">
            <Image
                Source="dotnet_bot.png"
                HeightRequest="185"
                Aspect="AspectFit"
                SemanticProperties.Description="dot net bot in a race car number eight" />

            <Label
                Text="Hello, World!"
                Style="{StaticResource Headline}"
                SemanticProperties.HeadingLevel="Level1" />

            <Label
                Text="Welcome to &#10;.NET Multi-platform App UI"
                Style="{StaticResource SubHeadline}"
                SemanticProperties.HeadingLevel="Level2"
                SemanticProperties.Description="Welcome to dot net Multi platform App U I" />

            <Button
                x:Name="CounterBtn"
                Text="Click me" 
                SemanticProperties.Hint="Counts the number of times you click"
                Clicked="OnCounterClicked"
                HorizontalOptions="Fill" />
        </VerticalStackLayout>
    </ScrollView>

</ContentPage>

里面有一句【Clicked="OnCounterClicked"】,这就是点击按钮时发生的事件处理程序的绑定,从对应的cs文件里很容易找到实现代码:

cs 复制代码
namespace MauiApp1
{
    public partial class MainPage : ContentPage
    {
        int count = 0;

        public MainPage()
        {
            InitializeComponent();
        }

        private void OnCounterClicked(object sender, EventArgs e)
        {
            count++;

            if (count == 1)
                CounterBtn.Text = $"Clicked {count} time";
            else
                CounterBtn.Text = $"Clicked {count} times";

            SemanticScreenReader.Announce(CounterBtn.Text);
        }
    }

}

5.3 启动顺序

程序从MauiProgram.cs启动,构造了一个"App"给系统,这个"App"就是App.xaml,打开App.maml.cs,可以看到构造了一个AppShell对象,这个AppShell对象就是AppShell.xaml,这个文件里面关联到了MainPage,AppShell的cs文件没什么特别的代码。

作为起步,我们只需要在MainPage上修改就可以了。


(这里是文档结束)

相关推荐
kfepiza4 分钟前
Python的循环和条件判断 笔记250303
开发语言·笔记·python
飞猿_SIR21 分钟前
Exoplayer2源码编译FFmpeg拓展模块实现音频软解码
android·ffmpeg·音视频
川石课堂软件测试1 小时前
涨薪技术|持续集成Git使用详解
开发语言·javascript·git·python·功能测试·ci/cd·单元测试
Warren981 小时前
使用SLF4J + Logback进行日志记录:
java·开发语言·前端·javascript·笔记·intellij-idea·logback
Ya-Jun1 小时前
Android Studio安装与配置详解
android·ide·android studio
窝窝和牛牛1 小时前
FastGPT 引申:基于 Python 版本实现 Java 版本 RRF
开发语言·开源
局外人_Jia1 小时前
【简单的C++围棋游戏开发示例】
开发语言·c++·c·visual studio
加油,旭杏1 小时前
C++方向的面经
开发语言·c++
m0_748246351 小时前
MySQL Workbench安装教程以及菜单汉化
android·数据库·mysql
王有品2 小时前
python之爬虫入门实例
开发语言·爬虫·python