Configuración del entorno de trabajo iOS/OSX (Delphi XE4)
Las últimas versiones de Delphi incluyen, tal y como podéis leer en las características del producto, soporte para dispositivos iOS y OSX (MAC). Hace tiempo que deseaba probar estas características, así que aprovechando que estos día he tenido acceso a una máquina Apple, he probado a “poner en marcha” el entorno de desarrollo y a hacerlo funcionar.
En general el proceso ha sido más sencillo de lo que pensaba (aunque tal vez también con más pasos de los que esperaba…). Hay que realizar varias operaciones, pero en sí, ninguno complicada.
Todavía no dispongo de un dispositivo iOS, así que me he tenido que quedar (conformar) en el punto de ejecutar la aplicación en OSX (en la versión 10.8) utilizando los simuladores correspondientes a estos dispositivos.
Según la documentación necesitamos tener instalada una versión OS X 10.7 Lion o 10.8 Mountain Lion en nuestro MAC. A partir de ahí, para dispositivos móviles, es necesario contar con una versión iOS 5.1 o superior.
Contenido
Instalación de XCode en MAC
Para iniciar la configuración de nuestro equipo, lo primero que debemos instalar es XCode. El entorno de desarrollo en MAC. En mi caso lo he descargado directamente de “Apple App Store”, aunque si disponéis del DVD de instalación, es posible que podáis instalarlo desde allí.
En mi caso he descargado la versión 4.6.2, que es la que actualmente se encuentra en la App Store y me está funcionando sin problemas.
Para poder completar el proceso de descarga se os pedirá el ID de Apple. Si no lo tenéis llegados a este punto, desde aquí mismo podéis creároslo. Una vez completado comenzará el proceso de descarga.
Instalación de PAServer
Una vez instalado XCode, lo siguiente que necesitamos es la aplicación Platform Assitant (PAServer) que nos ayudará a desarrollar aplicaciones multiplataforma. Es el servidor remoto de que necesitamos instalar para poder comunicar nuestro IDE (windows) con nuestro MAC. Por defecto PAServer trabaja con el puerto 64211, como veremos en la instalación. Si deseamos podemos cambiarlo, y tanto en un caso como en otro, tendremos que tener presente esto a la hora de trabajar en Windows con él.
Es lógico que antivirus y firewalls pueden bloquear o avisar en algún momento del uso de este puerto y en caso de fallos de comunicación, podemos iniciar por revisar estos programas (si los tenemos instalados).
Para la instalación de PAServer necesitamos el fichero RADPAServerXE4.pkg, que podemos conseguir de varias formas:
OPCIÓN 1: Si hemos realizado la instalación de XE4 en Windows, junto con la instalación, se copia este fichero dentro de la estructura de carpetas de la instalación. En mi máquina, por ejemplo (Windows 7), se encuentra en:
«C:\Program Files (x86)\Embarcadero\RAD Studio\11.0\PAServer\RADPAServerXE4.pkg»
Bastará con copiarlo a nuestro MAC e instalarlo.
En Windows Vista o en XP el directorio de instalación es muy similar a este, modificando la primera carpeta de la ruta.
OPCIÓN 2: La otra opción, es directamente descargarlo desde la página de Embarcadero e instalarlo directamente desde la máquina OSX. Se puede encontrar en:
http://installers.codegear.com/release/radstudio/11.0/PAServer/RADPAServerXE4.pkg
Una vez que iniciamos la instalación, basta con seguir los pasos del asistente para instalar la aplicación. Una vez finalizada tendremos la aplicación RAD PAServer XE4.
Al ejecutarla, la aplicación nos pedirá un password para posteriormente poder conectarse (podemos dejarlo en blanco) y nos solicitará permisos de root para poder continuar. Una vez en marcha, podremos ver el puerto por el que la aplicación está esperando conexiones, que si no hemos modificado, será el 64211, como hemos comentado anteriormente.
Otras configuraciones
Dentro de XCode, necesitaremos instalar algunos “componentes” adicionales, si no están instalados, necesarios para poder trabajar y para poder acceder a los simuladores de los diferentes dispositivos.
Abrimos XCode, accedemos a las preferencias y dentro de la sección Downloads, seleccionamos:
-
Command Line Tools
-
iOS Simulator 5.1 si no está instalado.
-
… si deseaís alguno más, podéis instalarlo opcionalmente.
Configuraciones en el IDE (Delphi)
De vuelta en el IDE de Delphi (windows) es necesario realizar algunos cambios relativos a la conexión con el equipo OSX. Para poder conectar ambos equipos, debemos crear un “Perfil de conexión” (Profile Manager) desde el IDE de Delphi, donde especificaremos los datos de conectividad entre ambos. Desde las opciones (Tools/Options) accederemos a la sección Connection Profile Manager.
Crearemos un nuevo “perfil” (“profile”) donde especificaremos el nombre de la conexión, el sistema a conectar (OSX en nuestro caso), la dirección IP de nuestro MAC, el puerto de conexión (por defecto 64211, si no lo hemos modificado) y el password, si es que hemos especificado alguno en la ejecución de PAServer.
Desde esta misma ventana podemos testear la conexión que hemos configurado. Para ello deberemos tener en marcha PAServer en nuestra máquina con OSX. Si hay algún problema de conexión, obtendremos un mensaje de “Connection failed”, si por el contrario, la conexión es correcta obtendremos un mensaje de “Connection succeeded”, como los que aparecen más abajo.
Adicionalmente debemos añadir en la Sección “SDK Manager”, los perfiles necesarios para los diferentes dispositivos sobre los que vayamos a desarrollar. Podemos añadir tantos perfiles como necesitemos, seleccionando el sistema (OSX, IOS), la conexión configurada anteriormente en el “Connection Profile Manager” y un SDK entre los disponibles.
Si todo esto es correcto, ya deberíamos tener configurada nuestra conexión entre ambos equipos con todo lo necesario para trabajar.
Probando el entorno de desarrollo (Windows/OSX)
Para probar nuestra configuración. vamos a crear una aplicación básica que podamos ejecutar tanto en nuestro sistema Windows, como en nuestro equipo MAC. Para ello crearemos una nueva “Firemonkey Desktop application” (HD).
Bastará con un simple formulario y un par de botones. en mi caso además he añadido una imagen con una animación (TFloatAnimation) que la hace rotar constantemente y un efecto (TShadowEffect) sobre este mismo componente que le añade una sombra.
El código disponible en el botón es lo suficientemente sencillo para no necesitar grandes explicaciones.
procedure TForm1.Button1Click(Sender: TObject); var Str:string; begin Str := 'Hola mundo!!! ;'; {$IFDEF MSWINDOWS} Str := Str + ' (ejecutando en MS Windows)'; {$ELSE} Str := Str + ' (ejecutando en OSX)'; {$ENDIF} ShowMessage(Str); end; |
He añadido un condicional (MSWINDOWS) simplemente para distinguir el mensaje que aparecerá en la ejecución en Windows con el que aparecerá en la ejecución en OSX. Hay muchos más condicionales que se pueden utilizar referentes a la plataforma de despliegue, a la versión del sistema, al procesador,… que se pueden consultar aquí.
Si ejecutamos el programa, el resultado es el esperado. Nuestra aplicación Windows que cuando se pulsa el botón, muestra un mensaje de sistema con el mensaje “Hola Mundo !!!”, seguido del texto condicional.
Para poder ejecutar este mismo programa en OSX y comprobar si nuestra configuración es correcta, necesitamos añadir como plataforma de despliegue OSX. En el IDE basta con seleccionar en el “Project Manager” que deseamos añadir esta nueva “Target platform”. Si las configuraciones anteriores (SDK) se han realizado correctamente, en el desplegable ya aparecerá la opción OSX, para seleccionar.
Basta con crear esta nueva “target platform” y seleccionarla como la predeterminada (doble click).
Si compilamos y ejecutamos ahora nuestra aplicación, y pasamos a nuestra máquina OSX (con PAServer ejecutando), veremos cómo la aplicación se ejecuta sin problemas. Si en este caso pulsamos sobre el botón, comprobaremos que el mensaje se despliega en pantalla con un par de diferencias. El estilo es nativo de OSX (como es de esperar) y el mensaje en el que hemos usado el condicional, ahora muestra el correspondiente a OSX.
Probando el entorno de desarrollo (iOS)
Finalmente, aunque no pueda probarlo en un dispositivo real (que necesitaría estar conectado por USB al MAC) puedo testear algo similar con un dispositivo iOS, en este caso utilizando los simuladores.
A diferencia de versiones anteriores de Delphi, en XE4 ya dispongo de los simuladores en el entorno de desarrollo, de forma que puedo diseñar mi aplicación de una forma más cómoda.
Es este caso desde el menú Nuevo, voy a seleccionar “Firemonkey mobile Application”. Una vez que accedo al asistente de aplicaciones móviles (que se ve en la imagen que hay encima de este párrafo) podemos seleccionar entre alguna plantillas ya existentes de aplicaciones, o simplemente la opción de “Blank Application”.
Para mi ejemplo voy a seleccionar “Header/Footer with Navigation”, que me creo una aplicación en blanco, con la plantilla seleccionada (añade paneles en la parte superior e inferior de la pantalla.)
Ahora podemos ver en el IDE de Delphi el simulador y podemos seleccionar entre los diferentes dispositivos (a la derecha) que podemos utilizar; iPad, iPhone, iPhone 5 y Custom device. También tenemos un botón (primero a la izquierda) con el que podemos rotar la vista del dispositivo para comprobar como se ve la aplicación, en todas las orientaciones.
Si ejecutamos la aplicación y cambiamos a la máquina OSX, veremos como se pone en marcha el simulador de iOS y podemos probar nuestra aplicación. El este caso, como era de esperar, el mismo código utilizando antes sigue funcionando y en este caso el mensaje mostrado sale con el estilo del sistema utilizado.
De igual modo podríamos seleccionar diferentes dispositivos en el “Project manager” para poder probar la aplicación en diferentes “targets”.
Una vez que ejecutamos la aplicación desde la máquina destino (OSX) podemos modificar el comportamiento de esta en el momento de ejecutar. Podemos seleccionar diferentes escalas de visualización y tenemos opciones para girar el dispositivo, agitarlo, pulsar los botones, simular teclado, activar/desactivar la barra de estado y en general, simular todos los comportamientos posibles del aparato.
Con esto, doy por completado este primer artículo introductorio. Espero que sirva como una guía, junto con la documentación existente en Embarcadero, para aquellas personas que quieran iniciar las pruebas con Delphi para desarrollar en iOS/OSX.
Como siempre, los comentarios, sugerencias, críticas y demás serán bienvenidos.
Un saludo y hasta la próxima.
Embarcadero MVP.
Analista y Programador de Sistemas Informáticos.
Estudios de Informática (Ingeniería Técnica Superior) en la UPC (Universidad Politécnica de Barcelona).
Llevo utilizando Delphi desde su versión 3. Especialista en diseño de componentes, Bases de Datos, Frameworks de Persistencia, Integración Continua, Desarrollo móvil,…
Muy bien tutorial Neftalí,como es usual ud siempre brindando muy buena informacion y detallada al minimo,una vez mas ser agradece por su tiempo y el aporte hecho.
Saludos
Pablo A
Lima – Peru
Vaya, qué buen trabajo, seguro que muchos te lo agradecerán.
Saludos.
@casimiro
@Pablo
Gracias a ambos. Espero que así sea y que sea de utilidad a alguien que esté en el mismo punto.
Un saludo.
Que bien, muchas gracias. Me ha servido mucho.
Hola he seguido tu tutorial para desarrollar una app en delphi xe4, y no consigo que funcione. me consigo conectar con el servidor rad paserver de la maquina virtual, pero a la hora de ejecutar la aplicacion en delphi, me sale un mensaje de «session ended», y no salgo de ahi. He configurado el «connection profile manager» y las dos «SDK manager». no sabras a que es debido?? Es que no encuentro a nadie con el mismo problema en internet.
Un saludo y muchas gracias
David Hernanz
@DAVID
Hola.
En mi caso no tuve ningun problema. La verdad es que fue todo como la seda a la primera.
¿Tal vez algun programa que esté cerrándote la conexión?
Si tienes antivirus, firewall,… desactívalos temporalmente para probar.
Un saludo.
Muy buena ilustración pero por que no hay simuladores en windows para los dispositivos ios seriamucho mas interesentaes
@Carlos E Velez Farak
Hola Carlos.
Pues las 2 últimas imágenes te muestran tanto el simulador en Windows, como el simulador en iOS. El el caso de Windows el simulador es para el diseño, suficiente para lo que se necesita, pues al fin y al cabo estamos programando para dispositivos iOS.
Un saludo.
David, tengo el mismo problema que tu. ..lo lograste resolver?.. Gracias. Saludos
Gracias por el tutorial Neftali, por favor podrias poner las maquinas y sistemas operativos que usas?, yo con iMac 10.6.8 (Snow Leopard) y XE4 sobre W7 (32 bits) y maquina con i3 no va, tengo el mismo error que David (session ended). He mirado firewall, antivirus, etc y no hay nada que cierre ninguna conexion…Gracia. Saludos.
@Jesus
Hola.
En mi caso, delphi lo tengo en un Windows 7 64 bits (i5), y el MAC tiene OS X Mountain Lion 10.8.2.
Un saludo.
Hola Neftali. Gracias por la informacion. Efectivamente, he puesto Mountain Lion 10.8.4 en un disco externo y todo va como la seda ahora.
Saludos
Jesus
Hola amigo. muy buena explicacionn. Hasta el momento solo he podido simular una aplicacion mobile en la Mac.pero como puedo compilar el producto finalEn Delphi Xe2 existiÂa una opcion Export to Xcode. te generaba los archivos necesarios para compilar el proyecto en xcode.pero, Delphi XE4 no tiene la opcion. cual es el paso a seguir o como puedo abrir mi proyecto firemonkey en el xcode para compilar el .app final. Saludos
@Luis Pineda
Hola Luis.
Debes generar un proyecto Firemonkey y generar como plataforma de salida al compilar OSX. Con eso debería ser suficiente.
Tutorial muy interesante, lamentablemente a mi tambiien me da el error de Connection to 87.230.60.1 failed on port 64211.
He comprobado antivirus, firewall, etc., nada. El equipo que tengo en la cuenta de Macincloud tiene el OSX 10.8.4
¿Alguna sugerencia? Saludos.
Que buen tutorial, me ha funcionado en OS X 10.8.5, y; con XE6… Seguro que estarás preparando otro tutorial con Android. Saludos
Hola. Vi que un usuario tiene el error de session ended. Alguen que tenga la solucion? A mi me pasa lo mismo. Ya deshabilite antivirus. Firewall. Q opinan?
@marcos
¿En qué punto te da este error?
Buenas he segido el manual y he consegudio ejecuar la aplicacion en el Mac osx pero no tengo manera de hacerla ejecutar en iOS me da un error.
[PAClient Error] Error: E0264 Unable to execute ‘»/usr/bin/codesign» –en «/Users/Username/RADPAServer/scratch-dir/MY_Mac/Hola_Mundo.app/Entitlements.plist» -s «iPhone Developer?» -f «/Users/Username/RADPAServer/scratch-dir/My_Mac/Hola_Mundo.app»‘ (Error 1)
[PAClient Error] Error: E0264 iPhone Developer: no identity found
Alguien me puede devir a que es debido??
Indicar lo siguiente
Mac Osx 10.10.2
SDK 8.2
Tengo certificado de desarrollador
Con Xcode 6.2 puedo crear app para iOS y se ejecutan en el iphone
Tambien puedo compilar desde XE7 app para OSx
@Peterdog
Hola.
Básicamente lo que te falta es pagar la licencia de Apple para obtener una firma digital y poder con ella firmar las aplicaciones. En otro caso no podrás ejecutarlas.
Revisa este link, aquí se explica bastante bien:
http://www.clubdelphi.com/foros/showthread.php?t=83934
La dirección para obtener lo necesario es esta:
https://developer.apple.com/programs/
Un saludo.
Hola Neftalí,
Estoy valorando la posibilidad de comprarme un Mac de sobremesa (dejar Windows totalmente).
Pero antes tengo que asegurarme de la compatibilidad con los programas que utilizo, al menos los imprescindibles, que se puedan instalar en Mac y que funcionen correctamente.
En este caso Delphi (D10.2 Tokio). ¿Podrías decirme si se puede instalar? ¿Si funciona correctamente? Y, en su caso, darme algún enlace para informarme?
No se trata de desarrollar desde Win para Mac, sino de desarrollar desde Mac para Mac con Delphi.
Comentario: un conocido me dijo hace varios meses «cuando lleves dos días con mac, no querrás volver a Windows» y lo he ido madurando…
Muchas gracias y un saludo.
@Pedro-Juan
Hola Pedro no hay Delphi que puedas instalar en la mac. a no ser que dentro le instales una VM con Windows.