Cómo desarrollar una aplicación para iOS que pueda ejecutar / compilar código

Realmente no hay ninguna razón por la cual esto no sería posible. Lo único que se me ocurre es que * podría * ser un obstáculo es que es posible que Apple no permita dicha aplicación en la App Store.

De hecho, Apple tiene una aplicación para iPad que presumiblemente compila Swift: Swift Playgrounds. No estoy seguro de si realmente está compilando o simplemente emulando la compilación de alguna manera.

Pero volvamos a su idea … Aquí hay algunas cosas que es posible que desee investigar:

  1. Un lugar en el que es posible que desee examinar es la comunidad de jailbreak de iOS. Una vez liberado, un dispositivo iOS básicamente se convierte en una computadora de mano con variante UNIX (muy particular), y sé que puede instalar gdb y llvm, al menos en sistemas operativos más antiguos. Hay una aplicación llamada cycript (Cycript) que es una especie de intérprete híbrido Objective-c / Javascript que le permite interactuar con una aplicación a un nivel dinámico mientras se ejecuta. Objective-c está compilado, pero hay muchas cosas que puede hacer para interactuar con los elementos internos de la aplicación y los marcos en tiempo de ejecución.
  2. Depuración distribuida: LLVM en realidad admite la capacidad de ejecutar código en un dispositivo y ejecutar el depurador en otro lugar. No he hecho demasiado con esto, y no es para los débiles de corazón, pero tal vez puedas encontrar algún tipo de compilador / depurador distribuido para algunos de tus idiomas de destino. De esa manera no tendría que ejecutar la cadena de herramientas en su aplicación. Sin embargo, es probable que aún tenga problemas para ejecutar el binario (que es donde entra en juego el jailbreak y la naturaleza dinámica de Objective-c). Teóricamente, si puede vincular la salida de su compilador de terceros como una biblioteca dinámica, puede inyectar su binario nuevamente en su aplicación en ejecución y ejecutar su helloworld o lo que sea. Realmente puedes hacer esto con aplicaciones comerciales.
  3. He tenido éxito al inyectar cycript en varias aplicaciones descifradas de la App Store para hacer algunos cambios y hurgar en su base de código para ver cómo funcionan ciertas cosas. Necesita un dispositivo con jailbreak para descifrar la aplicación de destino, pero una vez descifrado puede firmarlo con sus propias credenciales y cargarlo en cualquier dispositivo. Sin embargo, su millaje puede variar en cuanto a si su aplicación ingresa a la tienda de aplicaciones.

¡Buena suerte!