10.15.2023

Ejecutando aplicaciones MAUI en MacOS con Visual Studio Code: “Bad CPU type in executable”

 Una vez solucionado el error mostrado en el post anterior, recibí el siguiente mensaje cuando intentaba ejecutar la aplicación generada:

“Bad CPU type in executable”

Para solucionar este problema busque cómo ejecutar una aplicación MAUI en una Mac que utiliza un procesador M2. 

Lo primero que busqué es que puede estar causando este error y me encontré que hay dos posibles causas:

  1. Mac M2 no soporta los programas de 32 bits a partir de Catalina OS, por lo tanto, tratar de instalar un programa que no es de 64 bits o que tiene algunas librerías de 32 bits va a provocar este error.

  2. Migración de procesador de Intel a procesadores Apple Silicon. Cuando se dio el reemplazo de los procesadores de Intel a los procesadores M1 provocó que las aplicaciones diseñadas para los procesadores Intel no funcionaran en las Macs basadas en ARM64 - esta es la causa más común. 

Para solucionar este problema cuando es causado por la razón 2 antes expuesta - mi caso - se debe instalar un traductor binario dinámico que se agregó por primera vez en el sistema operativo MacOS Big Sur. Este traductor lo que hace es traducir las aplicaciones basadas en los procesadores Intel para que puedan correr en los procesadores de Apple sin modificar el código, específicamente traduce instrucciones x86_64 por instrucciones ARM. 

Este traductor se llama Rosetta 2 y en mi caso lo instalé desde el terminal del sistema operativo. La instrucción a ejecutar es la siguiente:


/usr/sbin/softwareupdate -install-rosetta -agree-to-license


Una vez ejecutada la instrucción procedemos a ejecutar el programa que ha generado la instrucción dotnet new. Para llevar a cabo esta ejecución procedemos con el siguiente comando:

dotnet build -t:Run -f net8.0-ios

El resultado de la ejecución de dicho comando se puede ver en la siguiente figura.


10.14.2023

Ejecutando aplicaciones MAUI en MacOS con Visual Studio Code: “The launch profile "(Default)" could not be applied.”

Tratando de ejecutar ejecutar un proyecto generado automáticamente utilizando el cli de dotnet con el comando “dotnet new maui” me tope con una serie de errores que voy a ir describiendo en una serie de posts durante estas semanas. 

El primer error que me dio tratando de ejecutar la aplicación antes mencionada fue : “The launch profile "(Default)" could not be applied.” A continuación la pantalla con todo el detalle del error.



Como se puede apreciar en el mensaje de error hay uno en específico que indica que el proyecto apunta a varios frameworks. Lo primero que busqué es cómo saber cuáles frameworks tengo instalados? Para esto encontré el siguiente comando que me lista los frameworks que tengo instalados en la Mac.

dotnet --list-sdks

El resultado a la hora de ejecutar el comando anterior me dio la siguiente salida:

7.0.401 [/usr/local/share/dotnet/sdk]

8.0.100-rc.1.23463.5 [/usr/local/share/dotnet/sdk]

Como se ve en la salida, tengo dos versiones instaladas. Yo quería utilizar la versión 8 rc y por lo tanto para ese propósito tengo que ejecutar el comando run especificando la versión del framework que quiero utilizar:


dotnet build -t:Run -f net8.0-ios   


  • La descripción del comando anterior es la siguiente:

  • -t:Run: Especifica el target del buid como “Run”, lo que va a tratar de ejecutar la aplicación después de construirla

  • -f net8.0.100-ios: Especifica el “target framework” que se va a utilizar, en este caso, el 8.0.100 para ios

Una vez ejecutado el comando anterior, la compilación supera el error descrito en el título del post - al menos en mi caso.

En el próximo post vamos a mostrar el siguiente error que apareció después de la solución indicada anteriormente.