MAUI(C#)安卓开发起步

news2025/4/21 10:14:22

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

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

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

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


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

目录

一、安装Visual Studio组件

二、生成新项目

2.1 应用类型

 ​编辑

2.2 框架版本

2.3 编译运行windows版 

三、安卓模拟器运行

3.1 安装模拟器

3.2 运行

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

4.1 模拟器自身启动报错

 4.2 启用虚拟化和Hyper-V

 五、认识项目基本结构

5.1 目录结构

5.2 xaml

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”,内容如下:

<?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文件里很容易找到实现代码:

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上修改就可以了。


(这里是文档结束)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2310659.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PPT小黑第26套

对应大猫28 层次级别是错的&#xff0c;看着是十页&#xff0c;导入ppt之后四十多页 选中所有 红色蓝色黑色 文本选择标题&#xff1a;选择 -格式相似文本&#xff08;检查有没有漏选 漏选的话 按住ctrl 点下一个&#xff09; 要求新建幻灯片中不包含原素材中的任何格式&…

【Linux-网络】HTTP的清风与HTTPS的密语

&#x1f3ac; 个人主页&#xff1a;谁在夜里看海. &#x1f4d6; 个人专栏&#xff1a;《C系列》《Linux系列》《算法系列》 ⛰️ 道阻且长&#xff0c;行则将至 目录 &#x1f4da; 引言 &#x1f4da; 一、HTTP &#x1f4d6; 1.概述 &#x1f4d6; 2.URL &#x1f5…

解决docker认证问题 failed to authorize: failed to fetch oauth token

报错信息[bash1]解决方案 全局代理打开“buildkit”: false &#xff0c;见[图1] [bash1] >docker build -t ffpg . [] Building 71.8s (3/3) FINISHED docker:desktop-linux> [internal] load bui…

无人机应用探索:玻纤增强复合材料的疲劳性能研究

随着无人机技术的快速发展&#xff0c;轻量化已成为其结构设计的核心需求。玻纤增强复合材料凭借高强度、低密度和优异的耐环境性能&#xff0c;成为无人机机身、旋翼支架等关键部件的理想选择。然而&#xff0c;无人机在服役过程中需应对复杂多变的环境&#xff1a;高空飞行时…

Visual Studio工具

高亮显示匹配的标签&#xff08;小括号&#xff0c;中括号&#xff0c;大括号&#xff09;

STM32Cubemx配置E22-xxxT22D lora模块实现定点传输

文章目录 一、STM32Cubemx配置二、定点传输**什么是定点传输&#xff1f;****定点传输的特点****定点传输的工作方式****E22 模块定点传输配置****如何启用定点传输&#xff1f;****示例** **应用场景****总结** **配置 1&#xff1a;C0 00 07 00 02 04 62 00 17 40****解析** …

WPF+WebView 基础

1、基于.NET8&#xff0c;通过NuGet添加Microsoft.Web.WebView2。 2、MainWindow.xaml代码如下。 <Window x:Class"Demo.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/win…

蓝桥杯算法——铠甲合体

问题描述 暗影大帝又开始搞事情了&#xff01;这次他派出了 MM 个战斗力爆表的暗影护法&#xff0c;准备一举摧毁 ERP 研究院&#xff01;MM 个暗影护法的战斗力可分别用 B1,⋯,BMB1​,⋯,BM​ 表示。 ERP 研究院紧急召唤了 NN 位铠甲勇士前来迎战&#xff01;每位铠甲勇士都…

docker:Dockerfile案例之自定义centos7镜像

1 案例需求 自定义centos7镜像。要求&#xff1a; 默认登录路径为 /usr可以使用vim 2 实施步骤 编写dockerfile脚本 vim centos_dockerfile 内容如下&#xff1a; #定义父镜像 FROM centos:7#定义作者信息 MAINTAINER handsome <handsomehandsome.com># 设置阿里云…

学习笔记:IC存储总结(ROM,RAM, EEPROM, Flash, SRAM, DRAM, DDL)

一&#xff0c;概述 半导体存储器是一种可以存储大量二值信息的半导体器件。在电子计算机及一些其他的数字系统的工作过程中&#xff0c;需要对大量的数据进行储存。由于数据处理的数据量和运算速度的要求&#xff0c;因此把存储量和存取速度作为衡量存储器的重要指标。 在电子…

Scala:统计每个单词出现的个数并打印

目录 问题拆解&#xff1a; 解题步骤&#xff1a; 1. 拆分所有字符串为单词 2. 遍历所有单词并统计 3. 打印结果 基础版代码实现&#xff1a; 代码解释&#xff1a; 输出结果&#xff1a; 为什么这样设计&#xff1f; 继承的APP是个啥&#xff1f; 使用高阶函数式编…

C++前缀和

个人主页&#xff1a;[PingdiGuo_guo] 收录专栏&#xff1a;[C干货专栏] 大家好&#xff0c;今天我们来了解一下C的一个重要概念&#xff1a;前缀和 目录 1.什么是前缀和 2.前缀和的用法 1.前缀和的定义 2.预处理前缀和数组 3.查询区间和 4.数组中某个区间的和是否为特定…

图解MOE大模型的7个核心问题并探讨DeepSeekMoE的专家机制创新

原文地址:https://newsletter.maartengrootendorst.com/p/a-visual-guide-to-mixture-of-experts #mermaid-svg-FU7YUSIfuXO6EVHa {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-FU7YUSIfuXO6EVHa .error-icon{fill…

SpringBoot项目集成ElasticSearch

1. 项目背景 处于失业找工作的阶段&#xff0c;随便写写吧~ 没啥背景&#xff0c;没啥意义&#xff0c;Java后端越来越卷了。第一学历不是本科&#xff0c;感觉真的是没有一点路可走。 如果有路过的小伙伴&#xff0c;如果身边还有坑位&#xff0c;不限第一学历的话&#xff0…

DeepSeek大模型深度解析:架构、技术与应用全景

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。https://www.captainbed.cn/north 文章目录 一、大模型时代与DeepSeek的定位1.1 大模型发展历程回顾大模型发展历程时间轴&#xff08;20…

Dubbo+Zookeeper

Apache ZooKeeper 通过当前页面下载Zookeeper 在这里启动zookeeper 可以根据这个页面简单学习一下&#xff0c;但是没有集成mysql&#xff0c;也会出现一些报错&#xff0c;且在这之后我们要使用的管理页面是vue的dubbo-admin dubbo学习三&#xff1a;springboot整合dubbozo…

从厨电模范到数字先锋,看永洪科技如何助力方太集团开启数字新征程

在数字化洪流席卷全球的宏大背景下&#xff0c;企业转型升级的紧迫性与重要性日益凸显&#xff0c;成为驱动行业进步的关键引擎。在这一波澜壮阔的转型浪潮中&#xff0c;方太集团——厨电领域的璀璨明珠&#xff0c;以其前瞻性的战略视野和不懈的创新精神&#xff0c;携手数据…

前端基础之组件自定义事件

我们可以通过使用给组件绑定事件&#xff0c;当组件触发该事件时&#xff0c;就能进行值得返回 我们可以使用v-on属性来给子组件绑定自定义事件&#xff0c;此时该事件就会存在vc中&#xff0c;然后通过this.$emit来触发绑定的事件&#xff0c; 这样就能实现不需要app.vue来给子…

基于DeepSeek(本地部署)和RAGFlow构建个人知识库

总结自视频&#xff08;很强的小姐姐视频&#xff0c;讲解清晰明了&#xff09;&#xff1a;【知识科普】【纯本地化搭建】【不本地也行】DeepSeek RAGFlow 构建个人知识库_哔哩哔哩_bilibili 1. 背景 deepseek官方网页版也虽然很强&#xff0c;能够满足绝大部分需求&#xf…

学习工具的一天之(burp)

第一呢一定是先下载 【Java环境】&#xff1a;Java Downloads | Oracle 下来是burp的下载 Download Burp Suite Community Edition - PortSwigger 【下载方法二】关注的一个博主 【BurpSuite 安装激活使用详细上手教程 web安全测试工具】https://www.bilibili.com/video/BV…