2010-04-23 7 views
5

Mi aplicación necesita utilizar una biblioteca que solo está disponible para Python y Ruby. Desde mi entendimiento, Apple permite que Ruby se ejecute en iPhone, siempre y cuando los usuarios no puedan ejecutar código arbitrario (Rhomobile usa Ruby).¿Usando el código de Ruby/Python en una aplicación de iPhone OS?

¿Cómo puedo agrupar Ruby/Python con mi aplicación, llamar a una función de mi código Obj-C y obtener el resultado (una cadena) en C o formato Obj-C?

Respuesta

3

No puede. El nuevo acuerdo SDK prohibits using original languages other than C, C++, or Objective-C y el acuerdo SDK siempre han prohibido la interpretación dinámica de código. Existe cierta ambigüedad acerca de cómo se aplicarán estas reglas, pero para estar seguro, es mejor evitar otros idiomas hasta que se resuelvan los problemas.

EDIT: Además, por lo que yo sé, no hay manera técnica actual para ejecutar Python en el iPhone, según this question. He oído hablar de incrustar Lua en aplicaciones de iPhone, pero no en Python. Puede hacer Python with a jailbroken iPhone, pero no a través de la tienda de aplicaciones.

La situación de Ruby es casi tan mala, como por this question. El iPhone no incluye un intérprete de Ruby, y compilers están muy lejos de funcionar. Rhomobile trabaja empacando un intérprete y un framework con el ejecutable, que dudo que supere el nuevo acuerdo SDK. Si realmente quieres usar Ruby, Rhomobile probablemente sea la mejor opción (ya que implementar tu propio intérprete probablemente sería mucho trabajo, e igualmente poco probable que sea aprobado). Es un panorama bastante deprimente en este momento: lo máximo que podemos esperar es que MacRuby finalmente funcione y Apple lo apruebe. Sin embargo, eso está muy lejos.

EDIT 2: También acabo de enterarme de tinypy, que podría funcionar para Python. Sin embargo, dudo que funcione con bibliotecas reales.

+0

Estoy dispuesto a arriesgarme con Apple; Creo que me dejarán pasar. ¿Alguien sabe como hacer esto? – igul222

+7

@ igul222, piensas mal. –

+0

Sí, esperaba ese comentario. Me doy cuenta de que no es ideal de ninguna manera, pero realmente no hay ninguna alternativa C/C++/ObjC (excepto hacer el procesamiento en un servidor y enviar los resultados de vuelta, lo que requiere una conexión de red). La aplicación se degradaría con gracia si algo se rompe en el futuro, pero la única alternativa real es volver a escribir la biblioteca en C, una opción tan dolorosa (al menos para un programador inexperto como yo) que al menos me gustaría probar esto. ruta primero. – igul222

3

FYI hay muchas aplicaciones basadas en Rhodes Rhomobile en la App Store que incluyen Wikipedia, MyHumana, RhoLogic para SugarCRM, Multilingüe, TrackR y docenas más. Muchos están afuera en http://rhomobile.com. Hablamos con Apple a menudo y tomamos medidas para asegurar el cumplimiento continuo de todos los términos de servicio de iOS.

También estrictamente hablando, lo que se envía con la aplicación nativa final no es un intérprete sino (en todas las plataformas, excepto BlackBerry) un ejecutor de códigos de bytes Ruby 1.9. Y la verdadera interpretación (eval) está desactivada intencionalmente.

Cuestiones relacionadas