0 votos

Abre `Algo.app` con Rosetta usando la terminal

Digamos que quiero una función de línea de comandos para abrir Xcode (o realmente, cualquier aplicación) bajo Rosetta.

Para las utilidades de la línea de comandos, puedo hacerlo: arch -x86_64 UTILITY pero eso no se extiende realmente a las aplicaciones completas. ¿Existen argumentos de lanzamiento ocultos que pueda pasar a open para forzar una instancia de Rosetta?

0voto

Nyque Puntos 101

Me encontré con esto mientras buscaba cómo hacer lo mismo para mi propia aplicación, así que pensé en publicar lo que funcionó para mí en caso de que otros también se enfrentan al mismo problema.

No es un argumento de línea de comandos en sí, pero puede añadir LSArchitecturePriority a Info.plist.

Según Documentación de Apple :

Utilice esta clave para priorizar la ejecución de una arquitectura específica en un binario universal. Esta clave contiene una matriz de cadenas, con cada cadena especifica el nombre de una arquitectura soportada. El orden de las cadenas en la matriz representa su preferencia para ejecutar la aplicación. Por ejemplo, si especifica primero la arquitectura x86_64 para una aplicación universal aplicación universal, el sistema ejecuta esa aplicación bajo la traducción de Rosetta en silicio de Apple.

Así que sólo hay que añadir

<key>LSArchitecturePriority</key>
<array>
    <string>x86_64</string>
</array>

a su Info.plist para que se abra con Rosetta por defecto sólo con open -a example.app .

Nota: Como se indica en la documentación, sólo funciona para binarios universales, así que para comprobar si su aplicación es un binario universal, ejecute

lipo -archs example.app/Contents/MacOS/exec

y si la salida es

x86_64 arm64

o

x86_64 arm64e

significa que tu aplicación es un binario universal.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X