Desarrollar para iPhone/iPad: ¿Qué necesito y por dónde empiezo?

Angel G. Olloqui 02 July, 2010

Voy a empezar a escribir en este blog sobre iPhone/iPad, y como no puede ser de otra forma, empezaré por el principio: ¿Qué necesito y por dónde empiezo a programar para iPhone/iPad?

Vamos allá, pero aviso que no entraré en ningún detalle técnico todavía.


Requisitos previos

1.- Lo primero es hacerte con un Mac. Existen emuladores con los que podríais llegar a probar el entorno y hacer pequeños pinitos, pero el SDK de iPhone consume bastantes recursos, por lo que es imprescindible que os hagais con un MacOSX. Por cierto, a día de hoy sólo hay soporte para SnowLeopard, por lo que aseguraos que además vuestro Mac está actualizado.
2.- Crearte una cuenta en en Apple Developer Portal (http://developer.apple.com/iphone). Existen diferentes tipos de cuentas, desde las gratuitas hasta las de pago. Con las gratuitas podrás probar el SDK, pero no podrás subir aplicaciones al AppStore. Mi consejo es que desde el primer momento te des de alta como un desarrollador de pago, ya que el proceso de alta puede tardar algunos días y este tipo de cuentas te dan acceso a todo el material por unos 70€ al año.
3.- Descargarte el SDK de desarrollo de iPhone de http://developer.apple.com/iphone/. Bájate la versión más actual. En el momento de redactar este post era la 4.0, pero posiblemente las haya más actuales cuando lo leas. Independientemente de la versión, bája e instala el SDK en tu equipo. Ten paciencia porque son más de 2GB. Este SDK incluye, entre alguna otra, 4 grandes herramientas: XCode, Interface Builder, Simulator e Instruments. Ten en cuenta que el SDK de desarrollo para iPhone y iPad es el mismo, por lo que a partir de ahora hablaré de iPhone para referirme a ambos.

Con esto ya estarías listo para empezar a probar el SDK con los primeros ejemplos y tutoriales en un simulador. No obstante, si tu intención es probar la aplicación en un dispositivo, es imprescindible que te des de alta en el Provisioning Portal y añadas tu dispositivo a un provisioning profile válido. En las siguientes líneas te explico como hacerlo (sáltatelas si no te intersa probar sobre dispositivos reales):

4.- Logueate en el Developer Portal y accede a iPhone Provisioning Portal.
5.- Crear un certificado (de development): Entra en Certificates y sigue los pasos para crear un certificado nuevo. A grandes rasgos, lo que hay que hacer aquí simplemente es crear un nuevo certificado con el Keychain (Acceso a Llaveros en español) y subirlo y validarlo en el portal. Te aconsejo además que entres en tu Keychain y exportes la clave privada del certificado en un p12 y la guardes en un lugar seguro, porque si un día necesitas utilizar el certificado en otro equipo te hará falta.
6.- Dar de alta tus dispositivos: Entra en la sección devices y añade nuevos dispositivos con el UDID. Este UDID lo puedes obtener utilizando el iTunes o mediante el Organizer (incluido en el Xcode, dentro de herramientas). Si utilizas el iTunes, conecta tu dispositivo (no es necesario sincronizar) y accede a él desde el menu lateral izquierdo. En la pestaña de resumen verás el UDID (puede aparecer "Número de serie" en su lugar, si es así simplemente pincha sobre él para que cambie y te muestre el UDID). Cópialo (comando+c funciona, no lo hagas a mano!) y agrégalo en el portal junto con un nombre asociado.
Cuidado porque el portal limita a 100 el número de dispositivos que se pueden dar de alta, y NO se pueden borrar, así que mucho cuidado con utilizarlo indiscriminadamente porque pueden no ser tantos.
7.- Crear un appID: Un AppId no es una aplicación en sí misma, sino un identificador para una o más aplicaciones. Se utiliza para discriminar entre provisioning profiles y son fundamentales tenerlos bien configurados para temas más avanzados como APNS o InAppPurchase. De momento, con un AppId genérico será suficiente. Para crearlo, simplemente asignale un nombre ("all apps" por ejemplo) y pon como bundle identifier un *. El * es un comodin que nos permitirá referirnos a cualquier aplicación usando este AppId.
8.- Crear un provisioning profile (de development): Entra en provisioning y crea uno nuevo. Te pedirá asignarle un nombre, seleccionar un AppId y una lista de dispositivos. Mi consejo para el nombre es que independientemente de cuál elijas lleve la palabra "Development" y algo que te permita reconocer que es el provisioning genérico para todas las apps, ya que es posible que te juntes con muchos provisioning en el futuro si vas subir la aplicación al AppStore, tienes diferentes cuentas o utilizas temas avanzados como comentaba anteriormente. Por ejemplo, un buen nombre podría ser algo como "AngelAllAppsDevelopmentProfile". Con esto hecho, solo te falta descargar el profile que acabas de crear y instalarlo (basta con hacer doble click sobre él, o moverlo a la carpeta $user/Library/MobileDevice/Provisioning Profiles)

Antes de terminar con esta parte de los certificados, voy a explicar brevemente para que se usan:
Los provisioning profiles son archivos utilizados para firmar las aplicaciones en el momento de compilarlas. Los profiles de development te permiten compilar para ser instalados de forma directa en los dispositivos configurados (ver pasos anteriores), pero tienen una caducidad de 3 meses y no pueden tener más de 100 dispositivos dados de alta. Además, es necesario que el dispositvo tenga instalado el certificado para poder instalar la aplicación, pero como veremos si usamos las herramientas de desarrollo esto será automático. Si lo que pretendes es mandar la aplicación a una tercera persona, asegurate de que te ha dado su UDID, está dado de alta en el profile que corresponda y lo tiene instalado en su dispositivo antes de intentar instalar la aplicación. Para instalar el certificado en el dispositivo, al igual que una aplicación, puede hacerse también arrastrándolo a la biblioteca de su iTunes y sincronizando el dispositivo (cuidado porque en Windows no funciona bien, así que mejor si puede hacerlo en un Mac).


Vistazo de las herramientas del SDK

Tras la instalación del SDK tendrás 4 programas que utilizarás continuamente en tus desarrollos. Vamos a mencionarlos brevemente para que sepas para que se utilizan:

- XCode: Este es el IDE de desarrollo, por lo que es la principal herramienta que utilizarás para programar. El XCode tiene muchas herramientas, atajos de teclados y truquitos, pero los irás aprendiendo con la práctica (posiblemente en el futuro haga un post sobre esto, pero ahora es demasiado). Lo principal de esta herramienta es que entiendas que a la izquierda tienes el árbol lógico de ficheros (digo lógico porque lo que organices en este árbol no se cambiará en el sistema de ficheros, sólo aquí dentro de XCode, así que cuidado con el desorden), y a la derecha la zona de escritura. Un elemento importante de esta herramienta es el selector que aparece arriba a la izquierda (entre el menú de la aplicación y el árbol de ficheros), con la que podrás elegir si quieres desplegar en un simulador o un dispositivo, así como la configuración (debug o release). Ambas configuraciones te sirven igual, únicamente es recomendable que uses el modo debug para hacer pruebas durante el desarrollo puesto que llevan más información de trazas. Volveremos a esto cuando hagamos un HelloWorld.
- Interface Builder: Esta herramienta es el IDE gráfico. Te servirá para crear vistas de forma sencilla, arrastrando componentes desde una paleta de componentes sobre un lienzo, editar sus propiedades principales (color, tamaño, posición, opacidad, ...) y enazarlos con el código.
- iPhone Simulator: Es un simulador de iPhone. Se arranca cuando configuras la aplicación para ejecutar sobre un simulador. A casi todos los efectos funciona igual que un dispositivo, pero es importante saber que este simulador no tiene límites de memoria y tiene una capacidad de CPU sensiblemente superior a los dispositivos reales. Por ello, no podemos estar seguros de que una aplicación funciona correctamente hasta probarla en un dispositivo auténtico. La gran ventaja es que se arranca e instalan aplicaciones más rápido que en un dispositivo real por lo que es muy útil para el día a día.
- Instruments: Esta herramienta la usareis menos, pero nos permitirá revisar la aplicación en busca de leaks de memoria o consumo de CPU. No entraré en más detalle puesto que es un tema más avanzado.

De aquí en adelante

Y de momento esto es todo lo que considero importante para un post de introducción. No quiero extenderme más por ahora, pero el próximo día haré un pequeño HelloWorld donde explicaré en mayor profundidad las herramientas y en el futuro me meteré con temas más técnicos de Objective-C (el lenguaje de programación utilizado), arquitectura de Cocoa Touch (el framework sobre el que programamos), APIs, etc.

Tags: ios, ipad, iphone, provisioning profiles, certificates, xcode, instruments