Paso a paso: cómo optimizar el lanzamiento de aplicaciones en MAUI con MacOS

Primeros pasos con MAUI en MacOS:

En este post vamos a echar un vistazo a nuestro primer proyecto en MAUI y la instalación de todos los elementos necesiarios para este propósito. Este post usa la version .NET MAUI 0.8.6.0

Instalación:

En primer lugar, descargaremos e instalaremos VisualStudio 2022 preview. En la instalación solo debemos tener en cuenta que para poder ver los resultados en MacOS y en Android, también debemos instalar los respectivos SDKs

Una vez instalado visual studio 2022, debemos instalar MAUI desde un terminal. Abrimos un terminal e introducimos la siguiente sentencia con permisos de administrador

dotnet workload install maui

Una vez realizada la instalación, debemos hacer check, para comprobar que tenemos todos los componentes necesarios, para ello, tenemos un comando check.

Pero antes de lanzar el check debemos lanzar un comando para instalar este check:

dotnet tool install -g redth.net.maui.check

Lo cual debería indicarnos lo siguiente:

Puede invocar la herramienta con el comando siguiente: maui-check

La herramienta «redth.net.maui.check» (versión ‘0.8.6’) se instaló correctamente.

Una vez instalado el checker, podemos lanzarlo con el siguiente comando

maui-check

la consola debería indicar lo siguiente

_   _   _____   _____     __  __      _      _   _   ___

| \ | | | ____| |_   _|   |  \/  |    / \    | | | | |_ _|

|  \| | |  _|     | |     | |\/| |   / _ \   | | | |  | |

_  | |\  | | |___    | |     | |  | |  / ___ \  | |_| |  | |

(_) |_| \_| |_____|   |_|     |_|  |_| /_/   \_\  \___/  |___|

 

???? .NET MAUI Check v0.8.6.0 ????

En este proceso, el checker, nos va a ir indicando que elementos nos faltan para poder usar MAUI al 100% tales como el JDK de Android, SKD de android, SKD de iOS… etc

En caso de no tenerlo, nos ofrecerá instalarlo de la siguiente manera:

???? OpenJDK 11.0 Checkup

– 1.8.0-25

(/Users//Library/Developer/Xamarin/jdk/microsoft_dist_openjdk_1.8.0.25)

 

────────────────────────────────────────────────────────────────

???? Recommendation: Install OpenJDK11

────────────────────────────────────────────────────────────────

 

???? Attempt to fix? [y/n] (y): y

⏳ Attempting to fix: OpenJDK 11.0

Installing Download and Install Microsoft OpenJDK 11…

Installed Download and Install Microsoft OpenJDK 11.

Fix applied.  Checking again…

???? OpenJDK 11.0 Checkup

– 1.8.0-25

(/Users//Library/Developer/Xamarin/jdk/microsoft_dist_openjdk_1.8.0.25)

✔ 11.0.10

(/Library/Java/JavaVirtualMachines/microsoft-11.jdk/Contents/Home/bin/..)

Ofrecerá la instalación de todos los componentes excepto de Xcode 13 Beta 5 (11 de octubre de 2021,  puede ser que en un futuro pida otra versión de Xcode) que tendremos que realizarla a mano.

Si la maquina ya tiene instalada una version de xcode que no sea la requerida, previamente debemos seleccionar la version como predeterminada, para ello en la consola, una vez mas, como administrado ejecutaremos lo siguiente:

xcode-select -s <Path de la versión de xcode>

Una vez echo todo esto, lanzaremos un ultimo check y el resultado final deberia ser el siguiente:

_   _   _____   _____     __  __      _      _   _   ___

| \ | | | ____| |_   _|   |  \/  |    / \    | | | | |_ _|

|  \| | |  _|     | |     | |\/| |   / _ \   | | | |  | |

_  | |\  | | |___    | |     | |  | |  / ___ \  | |_| |  | |

(_) |_| \_| |_____|   |_|     |_|  |_| /_/   \_\  \___/  |___|

???? .NET MAUI Check v0.8.6.0 ????

───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

This tool will attempt to evaluate your .NET MAUI development environment.

If problems are detected, this tool may offer the option to try and fix them for you, or suggest a way to fix them yourself.

Thanks for choosing .NET MAUI!

───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

Synchronizing configuration… ok

Scheduling appointments… ok

???? OpenJDK 11.0 Checkup

– 1.8.0-25 (/Users/danielcardena/Library/Developer/Xamarin/jdk/microsoft_dist_openjdk_1.8.0.25)

✔ 11.0.10 (/Library/Java/JavaVirtualMachines/microsoft-11.jdk/Contents/Home/bin/..)

???? Visual Studio 8.10.0 Checkup

✔ Visual Studio for Mac (8.10.10.8)

???? Android SDK Checkup

✔ emulator (30.8.4)

✔ build-tools;31.0.0 (31.0.0)

✔ platforms;android-31 (1)

✔ system-images;android-31;google_apis;x86_64 (8)

✔ platform-tools (31.0.3)

✔ cmdline-tools;3.0 (3.0)

???? Android Emulator Checkup

✔ Emulator: pixel_c_-_api_16 found.

???? XCode 13 Beta 5 Checkup

✔ Xcode.app (13 Beta 5)

???? .NET SDK Checkup

– 2.1.701 – /usr/local/share/dotnet/sdk/2.1.701

– 3.0.100 – /usr/local/share/dotnet/sdk/3.0.100

– 3.1.101 – /usr/local/share/dotnet/sdk/3.1.101

– 3.1.102 – /usr/local/share/dotnet/sdk/3.1.102

– 3.1.402 – /usr/local/share/dotnet/sdk/3.1.402

– 3.1.405 – /usr/local/share/dotnet/sdk/3.1.405

– 3.1.406 – /usr/local/share/dotnet/sdk/3.1.406

– 3.1.411 – /usr/local/share/dotnet/sdk/3.1.411

– 3.1.413 – /usr/local/share/dotnet/sdk/3.1.413

– 5.0.101 – /usr/local/share/dotnet/sdk/5.0.101

– 5.0.102 – /usr/local/share/dotnet/sdk/5.0.102

– 5.0.103 – /usr/local/share/dotnet/sdk/5.0.103

– 5.0.302 – /usr/local/share/dotnet/sdk/5.0.302

– 5.0.401 – /usr/local/share/dotnet/sdk/5.0.401

– 6.0.100-rc.1.21463.6 – /usr/local/share/dotnet/sdk/6.0.100-rc.1.21463.6

???? .NET SDK – Workload Deduplication Checkup

???? .NET SDK – Workloads (6.0.100-rc.1.21458.32) Checkup

✔ android-aot (Microsoft.NET.Sdk.Android.Manifest-6.0.100 : 31.0.100-rc.1.12) installed.

✔ ios (Microsoft.NET.Sdk.iOS.Manifest-6.0.100 : 15.0.100-rc.1.1534) installed.

✔ maccatalyst (Microsoft.NET.Sdk.MacCatalyst.Manifest-6.0.100 : 15.0.100-rc.1.1534) installed.

✔ tvos (Microsoft.NET.Sdk.tvOS.Manifest-6.0.100 : 15.0.100-rc.1.1534) installed.

✔ macos (Microsoft.NET.Sdk.macOS.Manifest-6.0.100 : 12.0.100-rc.1.1534) installed.

✔ maui (Microsoft.NET.Sdk.Maui.Manifest-6.0.100 : 6.0.100-rc.1.1608) installed.

✔ wasm-tools (microsoft.net.workload.mono.toolchain.manifest-6.0.100 : 6.0.0-rc.1.21451.13) installed.

✔ microsoft-net-sdk-emscripten (microsoft.net.workload.emscripten.manifest-6.0.100 : 6.0.0-rc.1.21430.3) installed.

───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

 

✔ Congratulations, everything looks great!

Crear un nuevo proyecto MAUI:

Como aun no tenemos un wizard que nos permita crear proyectos MAUI como lo que tenemos actualmente para Xamarin Forms, la mejor manera es lanzarlo desde consola.

Desde la consola podemos ver todos los proyectos que podemos crear con .net , con dotnet new –list

Busines central 1

Para crear el proyecto, en el terminal, nos dirigimos el path donde queremos crear el proyecto e introducimos donet new maui y deberia aparecer un mensaje de confirmación.

El proyecto tomara el nombre de la carpeta que hemos creado para el proyecto. SI nos dirigimos a la carpeta sobre la que ejecutamos el comando, deberíamos ver el proyecto ya creado.

Si abrimos este proyecto con VisualStudio 2022 preview veremos la siguiente estructura:

Como ya hemos visto en anteriores POST, una de las principales características de MAUI es su “all-in-one”, por lo tanto en un mismo proyecto tenemos Android / iOS / MacOs / Windows.

Los archivos expecificos de cada una de estas plataformas lo encontraremos dentro de Platforms.

Dentro de recursos es donde añadiremos todos los recursos graficos y de fuentes del proyecto

App.xaml tiene la misma función que tenia este archivo en proyecto Xamarin Froms

MainPage es una pantalla demo que nos ofrece esta plantilla.

Por ultimo tenemos MauiProgram, este es el lanzador de la aplicación donde, entre otras cosas, añadiremos las funtes.

Una vez realizados los pasos anteriores, podemos lanzar la aplicación, seleccionando primeramente el destino (como estamos en mac solo podemos lanza iOS Android o MacOs) y ejecutando como hacemos normalmente.

¿Quieres saber más sobre el uso de .NET MAUI y sus funcionalidades ?

Ponte en contacto con nosotros y uno de nuestros expertos podrá ayudarte