Guia a La Galaxia App

269
12 a P R I M E R A V E R S I Ó N E N E S P A N O L Don’t Panic GUÍA A LA GALAXIA DE APLICACIONES MÓVILES

description

guia android

Transcript of Guia a La Galaxia App

  • 12a

    PRIMERA VERSIN EN ESPANOL

    Dont Panic GUA A LA GALAXIA DE APLICACIONES MVILES

  • Enough Software GmbH + Co. KG Sgestrasse 70 28195 Bremen

    Alemania www.enough.de

    Por favor, enva tu feedback, preguntas o solicitudes de patrocinio a:

    [email protected] Sguenos en Twitter: @enoughsoftware

    Servicios y Herramientas para Todas las Plataformas Mviles

    publicada por:

    12a Edicon Febrero 2013Esta Gua se publica bajo Licencia

    Creative Commons Algunos Derechos Reservados.

    Direccin Artstica y Diseo por

    Andrej Balaz (Enough Software)

    Traduccin realizada con la colaboracin de

  • I Prlogo

    1 La Galaxia Mvil: Introduccin1 Topologa: Factores de Formato y Patrones de Uso2 Formacin Estelar: Creando un Servicio Mvil6 El Universo de los Sistemas Operativos Mviles13 Sobre Tiempo y Espacio13 Perdido en el Espacio

    15 Diseo Conceptual para Mviles15 Capturando la idea17 Diseando la Experiencia de Usuario

    23 Android23 El Ecosistema25 Prerrequisitos26 Implementacin29 Testeo31 Compilacin32 Firma32 Distribucin33 Monetizacin

    Gua a la Galaxa de Aplicaciones MvilesContenidos

  • 35 BlackBerry: Aplicaciones Java35 El Ecosistema37 Prerrequisitos37 Implementacin40 Testeo41 Firma41 Distribucin42 Aprende Ms

    44 BlackBerry 1044 El Ecosistema45 Desarrollo53 Testeo53 Firma54 Distribucin

    56 iOS56 El Ecosistema57 Descripcin General de la Tecnologa60 Testeo & Debugging61 Aprende Ms

    64 Java ME (J2ME)64 El Ecosistema65 Prerrequisitos66 Implementacin70 Testeado71 Portar73 Firma75 Distribucin76 Aprende Ms

  • 79 Windows Phone79 El Ecosistema80 Implementacin86 Testeo y Analticas87 Distribucin88 Aprende Ms

    91 Windows 891 Prerrequisitos92 Implementacin97 Distribucin98 Aprende Ms

    100 Hacia Multiplataforma100 Diferencias Clave Entre Plataformas Mviles106 Estrategias Multiplataforma110 Frameworks de Aplicaciones Multiplataforma115 Motores de Juego Multiplataforma

    118 Tecnologas Web120 HTML5122 La Fragmentacin Requiere Adaptacin126 Testear Tecnologas Web128 Aprende Ms

    130 Accesibilidad132 Aplicaciones Android Accesibles133 Aplicaciones BlackBerry Accesibles134 Aplicaciones iOS Accesibles135 Aplicaciones Symbian/Qt Accesibles135 Aplicaciones Windows Phone y Windows 8 Accesibles136 Aplicaciones Web Mvil Accesibles

  • 138 Aplicaciones Corporativas: Estrategia Y Desarrollo139 Estrategia141 Gestin de Dispositivos y Aplicaciones en la Empresa144 Plataformas de Aplicaciones Mviles Corporativas (MEAPs)145 Seguridad En Aplicaciones Corporativas

    148 Analticas Mviles148 Ponindote En Marcha150 Decidir Qu Medir150 Deinir Cmo Medir152 Adaptando Tu Cdigo153 Gestionando Los Resultados153 Privacidad155 Aprende Ms

    157 Implementando Rich Media158 Streaming versus Almacenamiento Local160 Descarga Progresiva161 Conversores de Medios

    163 Implementando Servicios Basados en Localizacin164 Cmo Obtener Datos de Posicin166 Servicios de Mapas167 Implementando Soporte a Localizacin en Diferentes Plataformas168 Herramientas Para Aplicaciones LBS

    171 Comunicaciones de Campo Cercano173 Modos de operacin NFC175 Usos actuales de NFC

  • 176 Implementacin de NFC

    178 Implementando Vibracin Hptica178 Consideraciones de Diseo de Vibracin Hptica180 iOS181 Android183 BlackBerry 10183 Windows 8

    185 Implementando Realidad Aumentada186 Escenarios de Uso de RA en Mviles187 Seguimiento190 SDKs de Realidad Aumentada193 Introduccin al Desarrollo de RA

    198 Seguridad De La Aplicacin200 Amenazas a Tus Aplicaciones 201 Protegiendo Tu Aplicacin205 Mejores Prcticas206 Herramientas207 Aprende Ms209 Conclusiones

    211 Testeando Tu Aplicacin211 Testeabilidad: El Caballo Ganador212 Desarrollo Guidado por Pruebas214 Pruebas Unitarias215 Testear a Travs de Las Cinco Fases del Ciclo de Vida de una Aplicacin

  • 220 Testeo Interactivo223 Automatizacin de Pruebas227 Cuidado Con Las Especiicaciones

    229 Monetizacin230 Pago Por Descarga232 Pagos En Aplicacin234 Publicidad Mvil235 Participacin en Ingresos236 Indirect Sales236 Mercado de Componentes239 Eligiendo tu Modelo de Monetizacin240 Tiendas de aplicaciones244 Qu Puedes Ganar?245 Aprende Ms

    247 Eplogo

    248 Acerca de los Autores

  • IPrlogoPrlogo

    PrlogoHan pasado exactamente cuatro aos desde que se public la primera versin de esta gua. En el prlogo de aquella primera edicin, dijimos: "Los problemas ms importantes para los desarrolladores mviles son sin duda la fragmentacin y la distribucin". Aunque el paisaje del ecosistema mvil ha experimentado grandes cambios desde entonces, continuamos pensando que esto sigue siendo cierto. Y el paisaje contina cambiando: probablemente, esta 12 edicin introduce ms cambios que las anteriores. Para relejar los cambios recientes en el mercado, hemos decidido eliminar los captulos dedicados a Qt y bada y reemplazarlos por nuevos captulos independientes de plataforma, que cubren tecnologas clave como realidad aumentada, analticas y prototipado. Adems, el captulo de introduccin general ha sido ampliado de manera signiicativa, y ahora ofrece una exhaustiva visin actualizada sobre el siempre cambiante mundo mvil. Por ltimo, todos los dems captulos tambin se han revisado y actualizado como de costumbre. Es casi imposible encontrar una gua ms objetiva y actualizada que ensee cmo empezar como proveedor de aplicaciones o desarrollador, y cmo llevar la oferta mvil existente al siguiente nivel.

    Tambien estamos muy contentos de que sea la primera edicin disponible en castellano. Muchas gracias por ello a Javier y Eva, de la Universitat Oberta de Catalunya.

    Qu ocurri en la industria mvil desde nuestra ltima edicin? Apple lanz el iPhone 5 con gran xito, Android se convirti en el lder mundial indiscutible en sistemas smart-phone, y Microsoft lanz Windows 8 y Windows Phone 8.

  • IIPrlogo

    Mark Zuckerberg critic el enfoque HTML5 del propio Facebook y se encontr con un incremento masivo de su uso tras dar un giro hacia aplicaciones nativas; luego, Canonical present Ubuntu para mviles y, por ltimo, BlackBerry nos ha sorprendido a los desarrolladores con canciones de amor y el lanzamiento de BlackBerry OS 10.

    A partir de ahora, vamos a establecer un ciclo de publicacin semestral. As que esperamos publicar la 13 edicin alrededor de septiembre de 2013. Si consideris que le falta contenido, queris participar de alguna manera, o sabis de posibles patrocinadores para ste proyecto: Poneos en contacto a travs de [email protected]. ste es un proyecto abierto y comunitario e invitamos a todos a impulsarlo para llevarlo an ms lejos.

    Estamos deseando saber de vosotros!

    Robert + Marco / Enough SoftwareBremen, Febrero de 2013

  • 1La Galaxia Mvil: Introduccin

    La Galaxia Mvil: IntroduccinBienvenido al mundo del desarrollo mvil, un lugar donde antiguos gigantes se tambalean y nacen nuevas estrellas, aparentemente de forma habitual.

    ste libro se centra en el desarrollo de aplicaciones mviles, lo que incluye una serie de fases tales como: planiicacin y especiicacin, prototipado y diseo, implementacin, testeo interno y despliegue, publicacin en una tienda de aplicaciones, descubrimiento por los usuarios, instalacin, uso y feedback. En ltima instancia, queremos que nuestros usuarios disfruten utilizando nuestras aplicaciones y que nos den valoraciones positivas para alentar a otros a hacer lo mismo.

    Sigue leyendo para aprender cmo desarrollar aplicaciones para las principales plataformas. Si sta es la primera vez que has considerado involucrarte en este tema, te recomendamos no demorarlo ms ya que el mundo se est enfocando rpidamente hacia el mvil como forma predominante en la informtica, y es probable que otros te adelanten si esperas demasiado.

    Aunque el desarrollo de aplicaciones mviles tiene algunos puntos en comn con el de otro tipo de software, tambin posee caractersticas especicas. Vamos a tratar algunas de ellas a continuacin.

    Topologa: Factores de Formato y Patrones de UsoHay que diferenciar entre smartphones, tablets y telfonos de gama media (en ingls feature phones). Cada factor de forma plantea sus propios retos de usabilidad; por ejemplo, un tablet

    PO

    R

    R

    ober

    t Vi

    rkus

    & M

    arco

    Tab

    or &

    Mat

    os K

    apet

    anak

    is

  • 2La Galaxia Mvil: Introduccin

    exige una navegacin diferente a un telfono. Adems, los sistemas de televisin resultan cada vez ms atractivos para los desarrolladores mviles como nuevo factor de forma.

    Naturalmente, los patrones de uso de Android diieren de los de iOS, que diieren a su vez de los de aplicaciones para Windows Phone, etctera.

    Debes, por tanto, abstenerte de proporcionar la misma expe-riencia en todos los formatos, o incluso en todos los sistemas en los que funcionar tu aplicacin. De lo contrario, corres el riesgo de ofrecer un servicio mediocre a algunos segmentos de tus usuarios.

    Formacin Estelar: Creando un Servicio MvilHay varias maneras de producir un servicio mvil:

    Aplicacin (app) Sitio Web SMS, USSD1 y STK2

    AplicacionesLas aplicaciones se ejecutan directamente en el dispositivo. Se pueden desarrollar como nativas, web o hbridas.

    1 es.wikipedia.org/wiki/USSD2 en.wikipedia.org/wiki/SIM_Application_Toolkit

  • 3Aplicaciones NativasUna aplicacin nativa est programada en un lenguaje especico con APIs propias de la plataforma. Se suele comprar, descargar y actualizar a travs de la tienda de aplicaciones especica de la plataforma. Las aplicaciones nativas suelen ofrecer mejor rendimiento, integracin ms completa y la mejor experiencia de usuario en comparacin con otras opciones; sin embargo, el desarrollo nativo suele ser tambin la opcin de desarrollo ms compleja.

    Aplicaciones WebUna aplicacin web (web-app/web-based) se basa en HTML5, JavaScript y CSS, y no depende de ninguna tienda de aplicacio-nes. Es un sitio almacenado localmente en el mvil que trata de emular el look-and-feel (aspecto y comportamiento) de una aplicacin. Un famoso ejemplo de una aplicacin web es la del Financial Times, que abandon la tienda de aplicaciones con el in de evitar compartir los ingresos de los suscriptores; justo a la inversa, la aplicacin web basada en Facebook iOS fue pu-esta al da como aplicacin nativa para mejorar dramticamente su rendimiento y usabilidad. Hay frameworks para aplicaciones web que permiten construir un contenedor nativo de manera

  • 4La Galaxia Mvil: Introduccin

    que puedan ser publicadas en las tiendas de aplicaciones, por ejemplo Phonegap3.

    Aplicaciones HbridasExiste una exagerada controversia en torno a si las aplicaciones nativas son el futuro o si lo son las aplicaciones web. Para muchos de los desarrolladores de aplicaciones mviles, esta controversia ya no existe porque la aproximacin hbrida al desarrollo de aplicaciones se ha convertido en algo bastante comn: una aplicacin puede utilizar cdigo nativo para incrementar su rendimiento e integrarse con la plataforma, mientras que utiliza una webview con contenido basado en HTML5 para otras cosas. Una aplicacin hbrida hace uso tanto de las tecnologas nativas como las web. Partes de ella se comportan como una aplicacin nativa, mientras que otras se ejecutan sobre tecnologas web. Estas partes pueden utilizar la conexin a Internet para ofrecer contenido actualizado. Mien-tras que esto podra ser visto como un inconveniente, el uso de las tecnologas web permite a los desarrolladores mostrar contenido actualizado sin tener que volver a subir la aplicacin a las tiendas de aplicaciones. El desafo clave es combinar las capacidades nicas de tecnologas nativas y web para crear una aplicacin verdaderamente fcil de usar y atractiva.

    Sitio webUn sitio web se ejecuta en su mayor parte en tu servidor, pero puedes acceder a varias funciones del dispositivo con JavaScript, por ejemplo para almacenar datos de forma local o solicitar la ubicacin actual del dispositivo. A diferencia de las aplicaciones, los sitios web para mviles son inherentemente multiplataforma. Sin embargo, no debes suponer que un navegador mvil siempre estar basado en WebKit, fjate en

    3 www.phonegap.com

  • la peticin de Microsoft a los desarrolladores de webs mviles, para que no creen sus sitios web basndose slo en WebKit4.

    SMS, USSD y STKLos servicios sencillos pueden ser realizados con SMS, USSD o STK. Todo el mundo sabe cmo funciona el sistema de mensajera de texto SMS (Short Message Service), y todos los telfonos son compatibles con l, pero necesitas convencer a

    4 blogs.windows.com/windows_phone/b/wpdev/archive/2012/11/15/adapting-your-webkit-optimized-site-for-internet-explorer-10.aspx

  • 6La Galaxia Mvil: Introduccin

    los usuarios de que recuerden comandos de texto para servicios ms complejos. Algunos operadores ofrecen APIs para servicios de mensajera que funcionan para dispositivos que slo usan WiFi, tales como las APIs de red de Deutsche Telekom5. El USSD (Servicio Suplementario de Datos no Estructurados, del ingls Unstructured Supplementary Service Data) es un protocolo GSM utilizado para enviar sencillos mens basados en texto, cuyas capacidades dependen de la compaa operadora y el disposi-tivo. El STK (SIM Application Toolkit) permite implementar aplicaciones interactivas de bajo nivel directamente en la tarjeta SIM de un telfono.

    El STK puede parecer irrelevante cuando nos centramos en aplicaciones para smartphones, sin embargo M-Pesa, por ejemplo, es una aplicacin STK que est transformando las transacciones inancieras en Kenia y otros pases.6

    El Universo de los Sistemas Operativos MvilesEl espacio mvil es mucho ms diverso que otras reas TIC. Cuando ests desarrollando software para ordenadores de so-bremesa, tienes bsicamente 3 sistemas operativos para elegir, pero en el caso de los mviles hay muchos ms. Este libro ofrece una introduccin a aquellos ms relevantes actualmente, pero hay que ser consciente de que el entorno mvil cambia continuamente a una velocidad que rara vez se observa en otros negocios. Hemos visto muchas tecnologas prometedoras aparecer y desaparecer en breves espacios de tiempo, sin importar lo grandes que eran las compaas que las respaldaban o la relevancia que tuvieran previamente en el mercado.

    5 www.developergarden.com/apis6 memeburn.com/2012/03/how-m-pesa-disrupts-entire-economies/

  • 7La Galaxia Mvil: Introduccin

    As que sigue leyendo, aprende cmo es el mercado actual y sigue observndolo por tu cuenta (o asegrate de tener la ltima edicin de nuestra gua a mano).

    Quasars: Android e iOSCuando la gente habla acerca de las aplicaciones mviles, en su mayora slo se reieren a Android e iOS. Por qu? En trminos de cuota de mercado, estas dos plataformas combinadas domi-nan el mercado de smartphones con casi el 90% de cuota en mercados clave, en particular los EE.UU.7 (ver la tabla siguiente para los nmeros globales). El estudio Developer Economics 20128 tambin muestra que iOS y Android estn a la cabeza en trminos de atencin por parte de los desarrolladores, es decir, el porcentaje de desarrolladores utilizando una plataforma, independientemente de la plataforma que ellos consideran su 'primaria'. Android era lder, con un 76% de los desarrol-ladores trabajando en ella, seguido de iOS con un 66%. Ambas mostraron un aumento de atencin en comparacin con el ao 2011. Otra investigacin del 2012, por Appcelerator e IDC9 coincide en que los desarrolladores estn interesados principal-mente en Android e iOS, aunque muestran las cifras invertidas. Este estudio indic que casi el 90% de los encuestados estaban interesados en iOS, con Android en un porcentaje algo menor, del 80%. A pesar de las diferencias, estos dos informes apuntan a un hecho: si vas a utilizar Android o iOS, tendrs muchsima competencia.

    7 blog.nielsen.com/nielsenwire/online_mobile/nielsen-tops-of-2012-digital/8 www.developereconomics.com9 www.idc.com/getdoc.jsp?containerId=prUS23619612

  • 8La Galaxia Mvil: Introduccin

    Materia Oscura: Plataformas de Mviles de Gama MediaSi bien los smartphones tienen todo el protagonismo, muchas partes del mundo pertenecen al universo del mvil de gama media. A nivel mundial, el 60% de todos los telfonos vendidos en el tercer trimestre del 2012 han sido telfonos de gama media10, con una base instalada muy superior a esa cifra. Los mayores vendedores son Samsung y Nokia. Nokia asegura tener bastante xito con su Nokia Store ya que hay ms de 500 desar-rolladores que han tenido ms de 1 milln de descargas de sus aplicaciones11. Estudios del 2011 muestran que las plataformas poco promocionadas ofrecen en realidad mejores oportunidades para los desarrolladores: las aplicaciones para telfonos de gama media en la tienda OVI de Nokia tuvieron 2,5 veces ms descargas en comparacin con las aplicaciones del Apple App Store12. Aunque se pueden desarrollar aplicaciones nativas para telfonos de gama media cuando se tiene estrecha relacin con el comercializador, por lo general se desarrollan aplicaciones para estos telfonos utilizando JavaME o BREW.

    Supernovas: Windows 8, Windows Phone, BlackBerry 10 y AliyunSe convertirn estas plataformas en espectaculares historias de xito o en desafortunados captulos de la industria mvil? Nadie lo sabe con seguridad, pero hay seales ambivalentes abiertas a la interpretacin.

    Mientras que la adopcin inicial de Windows 8 fue mayor en nmeros absolutos en comparacin con Windows 7, la adopcin relativa ha sido ms lenta13. Las ventas de PCs siguen disminuy-

    10 www.gartner.com/it/page.jsp?id=223731511 www.developer.nokia.com/Distribute/Statistics.xhtml12 www.research2guidance.com/apps-on-nokias-ovi-store-had-2.5-times-higher-

    download-numbers-in-q2-2011-compared-to-apps-on-apple-app-store/13 phonearena.com/news/Wait-so-Windows-8-is-not-outpacing-Windows-7-

    adoption-rate_id37212

  • 9La Galaxia Mvil: Introduccin

    endo, tal vez los consumidores estn a la espera de atractivos modelos con pantallas tctiles que destacaran los beneicios de Windows 8? La recepcin de Windows 8 vara, por tanto, entre rotundamente hostil y decididamente eufrica.

    Windows Phone recibi una cobertura de prensa razonable-mente buena con su lanzamiento de WP8, pero todava tenemos que esperar a ver los nmeros reales de mercado. La adopcin global parece estar incrementndose lentamente, y en Italia Windows Phone ha estado incluso rompiendo la barrera del 10%14. Las aplicaciones se han duplicado prcticamente en el 2012 y las descargas de aplicaciones han aumentado, por lo que an hay esperanza.

    BlackBerry 10 acaba de ser lanzado, y su acogida inicial ha variado entre el escepticismo y el entusiasmo, pero lo ms importante es que todos los operadores importantes ofrecern dispositivos BlackBerry 10.

    Aliyun se ha lanzado en un solo dispositivo en China, con una cuota de mercado desconocida. Atrajo publicidad principalmente porque Google presion a Acer para que no lanzara un dispositivo Aliyun basado en la pertenencia de Acer a la Open Handset Alliance, y en el hecho de que la tienda de aplicaciones de Aliyun promocionaba algunas aplicaciones Google Android que haban sido pirateadas15. A pesar de que Aliyun airma estar basado en Linux, el cdigo fuente no ha sido hecho pblico.

    Enanas Blancas: Symbian y badaSymbian y Samsung bada son slo sombras de lo que una vez fueron . Aunque bada tuvo una vida muy corta, Samsung anunci que seguir viviendo dentro de la futura plataforma

    14 guardian.co.uk/technology/2012/oct/02/windows-phone-europe-market15 news.cnet.com/8301-1035_3-57513651-94/alibaba-google-just-plain-wrong-

    about-our-os

  • 10La Galaxia Mvil: Introduccin

    Tizen, pero no especiicaron de qu manera. Symbian ha sido forzado a entrar en modo mantenimiento, a pesar de que Nokia todava lanza algunos emblemticos dispositivos basados en Symbian como el PureView 808, pues su importancia y cuota de mercado continan cayendo drsticamente a nivel mundial.

    Estrellas Recin Nacidas: Firefox OS, Mer, Sailish, Tizen, UbuntuVeamos algunas novedades interesantes del 2013.

    La iniciativa Boot-to-Gecko de Mozilla ahora se llama Firefox OS16. Este sistema operativo est basado en tecnologas web abiertas y ZTE, y Alcatel lanzar dispositivos basados en l en el 2013. Curiosamente, Firefox OS ya ha sido portado a las populares plataformas hacker Raspberry Pi y Pandaboard17. Firefox OS estar dirigido principalmente a dispositivos de fcil insercin en el mercado, por lo que puede tener un gran impacto sobre las futuras ventas de smartphones en pases en desarrollo.

    El proyecto Mer18 contina la plataforma MeeGo y propor-ciona la base para Sailish OS de Jolla19. Se prev lanzar Sailish OS en el 1er trimestre de 2013, y su interfaz de usuario basada en gestos ha sido elogiada por algunos de quienes ya la han podido ver.

    Se espera que los dispositivos Tizen20 sean lanzados en el 2013 por Samsung y Lenovo. Aparentemente impulsado con cierta moderacin por Samsung e Intel, Tizen tiene como objetivo no slo los smartphones, sino tambin televisores, tablets, netbooks y sistemas de infotenimiento en vehculos.

    16 mozilla.org/irefoxos17 rawkes.com/articles/there-is-something-magical-about-irefox-os18 merproject.org19 jolla.com20 tizen.org

  • 11La Galaxia Mvil: Introduccin

    Por ltimo, pero no menos importante, Canonical present Ubuntu21 para dispositivos mviles. La idea es llevar la potencia de un PC a los telfonos.

    Cifras Precisas: Cuotas de Mercado de Sistemas OperativosEchando un vistazo a la cuota de mercado mundial de smart-phones, la imagen parece simple:

    PlataformaCuota de Mer-cado a inales de 2012

    Ventas en el tercer trimes-tre de 2012 (millones de unidades)

    Base instalada a inales de 2012 (mil-lones de unidades)

    Android (Google)

    53% 129 710

    iOS (Apple) 19% 27 260

    Symbian (Nokia)

    14% 4 190

    BlackBerry (RIM)

    8% 8 104

    bada (Samsung)

    >2% 5 30

    Windows Phone (Microsoft)

  • 12La Galaxia Mvil: Introduccin

    puedes estar seguro de que no es tan sencillo. Los propietarios de smartphones son todava una minora. Hay ms gente con telfonos de gama media y en muchas regiones del mundo se sigue optando, en el momento de comprar un nuevo dispositivo, por uno de ellos antes que por un smartphone: Ppor ejemplo, en toda la regin MEA (del ingls Middle East & Africa), el 80% de todos los telfonos vendidos en el cuarto trimestre del 2012 han sido de gama media22. Estos dispositivos ni siquiera apare-cen en la tabla anterior, probablemente porque los usuarios de estos telfonos no suelen utilizar aplicaciones y, por lo tanto, no son de inters para muchos desarrolladores.

    Nuevas plataformas tales como BB10 no aparecen en muchas estadsticas porque son nuevas en el mercado. Sin embargo, una de estas plataformas todava podra ser la mejor opcin para tu caso de negocio.

    Tambin hay que recordar que se trata de cifras globales; la participacin en el mercado regional de cada plataforma es una historia muy diferente. En un mundo donde el contenido geolocalizado est aumentando en importancia, es fundamental conocer los detalles y las caractersticas de su mercado de origen. Por ejemplo, China es actualmente el mayor mercado de smartphones y donde Android domina claramente, con una cuota de mercado superior al 90%23.

    Para obtener informacin sobre la cuota de mercado en tu regin objetivo, echa un vistazo a recursos en lnea tales como comscore24, StatCounter25, VisionMobile26 o Gartner27.

    22 gulfnews.com/business/technology/apple-microsoft-to-steal-market-share-in-mea-smartphone-sales-1.1112944

    23 www.techinasia.com/android-market-share-china-2012/24 comscoredatamine.com/category/mobile25 gs.statcounter.com26 visionmobile.com27 gartner.com

  • 13La Galaxia Mvil: Introduccin

    Sobre Tiempo y Espacio

    Como desarrolladores, tendemos a mostrar una gran pasin por nuestros sistemas predilectos. Sin embargo no debemos olvidar que estas tecnologas son slo eso, tecnologas que son relevantes en un momento y lugar dado, pero nada ms. S, algunas lamewars son divertidas pero, en retrospectiva, siempre son pueriles. Que levanten la mano aquellos que participaron en el debate Atari versus Amiga, en los viejos y buenos aos 80! Probablemente no muchos de vosotros, pero seguramente, entendis a los que nos referimos. Iniciativas como FairPhone28 pueden ser ms importantes que el sistema operativo o el proveedor que elijas en el futuro.

    Perdido en el Espacio

    Si ests perdido en la selva del desarrollo mvil, no te preo-cupes, mantn la calma y sigue leyendo. Explora tus opciones y evala el problema que deseas resolver, tu pblico objetivo y tu know-how. Pon un gran esfuerzo en disear la experiencia de tu servicio, concntrate en el problema en cuestin, y mantenlo simple. Es mejor hacer una cosa bien que hacer "todo" slo regular. Invierte en el diseo y la usabilidad de la solucin. Por ltimo, pero no menos importante, encontrar el nicho de mercado adecuado es a menudo mejor que tratar de copiar algo que ya ha tenido xito. Esta gua te ayudar a tomar una decisin informada!

    28 fairphone.com

  • 14La Galaxia Mvil: Introduccin

  • 15Diseo Conceptual para Mviles

    Diseo Conceptual para MvilesTener una idea es uno de esos maravillosos momentos "Aj!. De repente sabes qu hacer y tienes la conianza de que tu idea va a resolver el problema al que se enfrentan tus usuarios potenciales. Esos momentos son generalmente precedidos de mucha investigacin y experiencia, pero el tomar consciencia instantneamente es lo que probablemente hace decir a la gente que tener ideas es fcil. Ms difcil es transformar el concepto en un producto que funcione, sobre todo dentro de las limitaciones del medio en el que deseas expresar tu idea: una aplicacin mvil. No slo aspiras a construir una aplicacin estable, tambin quieres que sea til y fcil de usar. Antes de entrar en diseo y programacin, vale la pena emplear un poco de tiempo en perfeccionar tu idea.

    Capturando la idea

    Escribe un resumen que describa tu concepto de aplicacin en unas pocas frases. Trata de explicarla a varias personas (que no sean miembros del equipo) para ver cmo de bien la compren-den y se relacionan con ella.

    Deine tu contenido. Pregntate cul es el contenido bsico de la aplicacin. Dependiendo del tipo de aplicacin, podran ser fotografas (Pinterest), feeds generados por el usuario (Twitter), textos (lectores de libros), etc. Una vez que identiicas el valor principal que tu aplicacin va a ofrecer, es ms fcil enfocar correctamente la interfaz de usuario. Por ejemplo, si ests creando una aplicacin de lectura de libros probablemente querrs asegurarte de que la tipografa es de buena calidad.

    PO

    R

    A

    nna

    Alfu

    t

  • 16Diseo Conceptual para Mviles

    Describe la funcionalidad principal. Qu harn los usuarios a travs de tu interfaz? Piensa en ello en trminos de verbos y trata de enumerarlos: navegar, compartir, comprar, etc. Te dars cuenta de que algunas actividades estn relacionadas. Por ejemplo, si tu aplicacin tiene un aspecto social importante, habr una serie de caractersticas que se puedan agrupar (como compartir, comentar, enviar mensajes o seguir aalguien). Este puede ser otro indicio de interfaz de usuario para ti. Presentar funciones relacionadas de manera similar ayuda a los usuarios.

    Conoce a tu audiencia. Quines son las personas para las que ests diseando? Una tcnica til es la creacin de personas (trmino en ingls original), periles genricos de grupos de usuarios que te ayudarn a comprender las diferentes motivaciones de uso de tu aplicacin.

    Diseando experiencias mviles es necesario pensar en el contexto en el que tu aplicacin se utilizar, y en cmo va a afectar tanto a la interfaz como a los usuarios. Crees que conseguirs captar toda su atencin? Es tu aplicacin un producto independiente? Se relaciona o depende de otros servicios? Qu ocurrir si no hay conexin a Internet? Cmo gestionar esta situacin la interfaz de usuario?

    Despus de responder a tantas preguntas deberas tener una idea ms clara acerca de la aplicacin que quieres crear. Vale la pena pasar algn tiempo investigando. Juega con otras aplicaciones que podran ser similares a la tuya. Descubre cmo lo hacen: qu piensan los usuarios acerca de ellas. Es una buena manera de conocer el terreno en el que ests entrando.

    Cuando avances con el desarrollo de tu concepto mantn en revisin tu lista de preguntas. Son una buena forma de continuar enfocado y ver si sigues en la senda de lo que quieres lograr.

  • 17Diseo Conceptual para Mviles

    Diseando la Experiencia de Usuario

    La experiencia del usuario (o UX, del ingls User Experience) es cmo los usuarios perciben tu aplicacin durante y despus de haberla utilizado. Para disear y mejorar la experiencia global tienes que pensar en el lujo de uso, funcionalidades, interacciones y diseo visual. Cmo funcionar todo junto en el entorno de tu aplicacin? Se trata de pensar acerca de los problemas que los usuarios puedan tener durante el uso de la aplicacin y tratar de encontrar soluciones en una fase de prototipo. El diseo no es un proceso lineal, as que hay que iterar y aplicar lo aprendido de las pruebas de usuario tan a menudo como sea posible.

    Flujo de usoAlgunas aplicaciones tienen un lujo muy lineal para lograr una tarea sencilla (por ejemplo, una aplicacin de cmara). Otras pueden tener lujos ms iterativos. Dibuja tu "escenario ideal" donde el usuario comienza en un punto A y, despus de una se-rie de pasos, termina en un punto B. Puedes dibujar diagramas de lujo o mockups para trazar los diferentes lujos. Trata de mantener la navegacin lo ms sencilla e intuitiva posible.

    WireframesLos wireframes (maquetas de estructura) o mockups (prototipos que muestran el look-and-feel), son versiones sencillas, esquemticas, de la interfaz. Su propsito es capturar las funcionalidades y la estructura general de la misma. Se pueden hacer con lpiz y papel o utilizando una de las muchas her-ramientas de creacin de prototipos que existen.

  • 18Diseo Conceptual para Mviles

    Para una determinada pantalla, tu wireframe tendr estados diferentes en funcin de un escenario. Para un error de red, tendrs distintas instancias de la misma pantalla. Tambin para una plataforma diferente el lujo y estructura en pantalla cambiar.

    Debes familiarizarte con las directrices para interfaces de usuario del sistema operativo para el que vas a desarrollar. Cada plataforma es un entorno diferente y debes leer las directrices para utilizar las convenciones correctas. Un ejemplo clsico es el botn de vuelta atrs en la cabecera de aplicaciones iOS versus el botn de retroceso de Android que est siempre visible en pantalla independientemente de la aplicacin que se est ejecutando (a veces es un botn fsico en el dispositivo). A menos que tengas fuertes razones para hacer lo contrario, sigue las prcticas recomendadas. Investiga y familiarzate con las galeras de patrones disponibles en lnea. Encontrars tambin enlaces a recursos especializados por plataforma en los respectivos captulos de este libro.

    Dibujar en papel es probablemente la mejor manera de empezar, ya que no es necesario invertir tiempo en aprender un nuevo software, y los dibujos son ms fciles de cambiar y desechar. Tambin es muy divertido hacerlos. Una de las ventajas de las aplicaciones dedicadas a la realizacin de wireframes y mockups es la capacidad que tienen de hacer que tus wireframes sean clicables en prototipos que pueden probar tus usuarios.

    PrototipadoUn prototipo es la mejor manera de visualizar y evaluar las interacciones de tu aplicacin. No importa si tienes un gran presupuesto o trabajas en un proyecto personal los ines de semana. Tener un prototipo bastante completo de tu aplicacin

  • 19Diseo Conceptual para Mviles

    es la mejor forma de evaluar su concepto o discutirlo con el cliente. Se lleva a cabo antes de invertir tiempo en el desarrollo del cdigo inal y de realizar diseos con precisin a nivel de pxel. Un prototipo validado tambin es una referencia til para que los equipos puedan trabajar sin arriesgarse a desviarse demasiado del plan director.

    Utiliza la tcnica con la que te sientas ms cmodo, no hay mejor manera de ensamblar un prototipo. Puede ser una pgina HTML, un conjunto de esquemas planos enlazados por un lujo clicable, un storyboard en PowerPoint, etc.

    Hay muchas herramientas para elegir. Algunas son ms especializadas, lo que te permite dibujar o crear wireframes navegables. Algunas te permiten disear mockups y compartir y publicar prototipos avanzados. A continuacin, una lista de algunas aplicaciones que pueden ser de utilidad:

    Mocklow: www.mocklow.com (gratis - descarga & online). Pencil Project pencil.evolus.vn (gratis - descarga). Axure www.axure.com (de pago - descarga). Balsamiq www.balsamiq.com (de pago - descarga). Mockingbird www.gomockingbird.com (de pago - online). Flowella www.developer.nokia.com/Resources/Tools_and_

    downloads/Other/Flowella (gratis - descarga). App in seconds www.appinseconds.com (de pago - online).

    Diseo visualA menos que ests construyendo una solucin que slo utiliza una entrada de sonido o interfaces hpticas, tu interfaz de usuario se basar en los gricos. La aplicacin del diseo visual no es simplemente colorear wireframes, un diseo visual atractivo mejorar la experiencia de tu aplicacin y har que se destaque de la masa.

  • 20Diseo Conceptual para Mviles

    La gestin de los espacios y la jerarqua visual mejoran la usabilidad de la interfaz. La estructura grica deine los detalles del posicionamiento de los elementos en pantalla y su relacin entre s. Despus de que los usuarios aprendan la interfaz de usuario, sta debera permanecer constante en todo el lujo de la aplicacin. Por ejemplo, si el botn principal cambia de color de una pantalla a otra eso obliga a los usuarios a volver a aprender las convenciones cada vez que visualizan una pantalla diferente. Si eso es lo que deseas, asegrese de que lo ests haciendo por una buena razn.

    Al igual que el diseo de interaccin en el nivel de wire-frames, ciertas decisiones de estilo pueden ser informadas por las directrices de la plataforma. Tu aplicacin puede parecer muy diferente dependiendo de la plataforma para la que fue diseada. Asegrate de que tus diseos siguen las prcticas recomendadas para el uso de fuentes, iconos estndar y convenciones de estructura grica. Una vez ms, consulta los captulos relacionados con la plataforma que te interesa en esta gua para encontrar ms informacin y enlaces a recursos especicos online.

    Lo ptimo es que la marca de la empresa est presente en la interfaz de una manera no obstructiva. Utiliza el fondo, colores de control y, si cabe, ciertas imgenes u opciones de diseo para obtener el aspecto deseado. La pantalla de inicio (si existe) es el lugar donde se pueden mostrar algunos gricos adicionales.

    Finalmente, el icono de aplicacin es el primer elemento visual con el que tu aplicacin va a ser identiicada y evaluada. Haz que tenga un buen aspecto. Si ests planeando hacer versiones para mltiples plataformas, comprueba los requisitos de diseo previamente para que puedas crear un diseo fcilmente migrable.

  • 21

    Pruebas de usuarioLa mejor manera de validar tu interfaz y concepto es enfrentar-los con usuarios reales, tan pronto como sea posible. No tienes que esperar hasta que haya un producto acabado y pulido. De hecho, no deberas. Es mucho ms difcil aceptar comentarios sobre algo que se considera casi terminado que en un prototipo navegable que se puede actualizar con bastante rapidez.

    Pide a algunas personas que realicen ciertas tareas con tu prototipo. Si la aplicacin que ests diseando es un reproduc-tor de msica, puedes pedirles que pongan una cancin. Si no ests seguro de ciertas funciones puede tratar de desviar la at-encin de los usuarios, pidindoles que realicen tareas inversas, como cambiar la pista seleccionada y elegir otra en su lugar. Lo principal es moderar, no guiar. Tambin puedes realizar sesiones de pruebas en otras aplicaciones ya publicadas. Te sorprenders de lo mucho que perciben los usuarios de tu aplicacin, cosas que puede que nunca te hayas parado a pensar.

  • FIGHTCLUB

    GALACTIC

  • 23Android

    Android

    El Ecosistema

    La plataforma Android ha sido desarrollado por la Open Handset Alliance, liderada por Google, y ha estado a disposicin del pblico desde noviembre de 2007. Su uso por muchos fabri-cantes de hardware la ha convertido en el sistema operativo de smartphones con mayor crecimiento. De acuerdo con IDC1, el 75% de todos los smartphones vendidos en el tercer trimestre del 2012 en todo el mundo se basa en Android. En otoo de 2012, Google anunci que hay 700.000 aplicaciones disponibles en el Android Market2 y que quinientos millones de dispositivos Android han sido activados hasta el momento3. Android tambin se utiliza en tablets, reproductores multime-dia, decodiicadores de televisin, telfonos de sobremesa y sistemas de entretenimiento en automviles. Algunos disposi-tivos no-Android tambin son capaces de ejecutar aplicaciones Android con funcionalidad reducida, como la Playbook de RIM con su BlackBerry Adroid runtime o el nuevo sistema operativo de cdigo abierto Sailish4.

    Android es un sistema operativo, una coleccin de aplicacio-nes preinstaladas y una plataforma de desarrollo de aplicaciones (Dalvik) soportada por un amplio paquete de herramientas. La plataforma sigue evolucionando rpidamente, con la adicin de nuevas caractersticas regularmente, cada 6 meses aproxima-

    1 www.idc.com2 www.nbcnews.com/technology/gadgetbox/google-says-there-are-700-000-

    android-activations-day-1183263 mashable.com/2012/09/12/500-million-android-devices-activated/4 www.sailishos.org/

    PO

    R

    Ti

    m M

    esse

    rsch

    mid

    t

  • 24

    damente. Por ejemplo, la versin de Android 4.2, "Jelly Bean", introdujo una funcionalidad llamada "Butter" que bsicamente funciona como buffer triple y da como resultado una naveg-acin mucho ms suave y una frame rate estable. Adems, Google implement un sistema de notiicacin mejorada con mens desplegables, iconos lotantes en la pantalla de inicio que automticamente se resposicionan si mueves iconos hacia ellos y soporte USB-Audio. Hay muchas mejoras y aadidos menores que demuestran que Google ha conseguido convertir Android en una base estable para el futuro.

    Uno de los problemas ms debatidos cuando se desarrolla para Android es la fragmentacin: La multitud de dispositivos diferentes de diversos fabricantes y el rpido progreso de la plataforma en s generan incertidumbre sobre si una aplicacin Android podr ejecutarse en cualquiera situacin. Adems, slo un nmero muy pequeo de telfonos y modelos de tablet son compatibles con la ltima versin del sistema operativo. En cualquier caso, actualmente puedes alcanzar el 96,9% de la base instalada si decides enfocarte a Android 2.2 o superior5. Para reducir los problemas de fragmentacin causados por las grandes diferencias en el tamao de pantalla, Android 3.2 introdujo un nuevo recurso descriptor llamado "smallestWidth", que puede ser utilizado para apuntar a telfonos y tablets con diferentes estructuras gricas en funcin de sus dimensiones6. Para reforzar una experiencia de usuario slida y una apariencia consistente en las aplicaciones de Android, Google publica una

    5 developer.android.com/resources/dashboard/platform-versions.html6 developer.android.com/guide/practices/screens_support.html#NewQualiiers

  • 25

    gua de diseo para aplicaciones Android que est disponible en developer.android.com/design/. Tambin publica una gua de desarrollo ms general llamada Training7 que ayuda a los desarrolladores a lidiar con las tareas ms comunes, como por ejemplo tratar datos persistentes del usuario.

    Prerrequisitos

    El lenguaje de programacin principal para Android es Java. Pero ten cuidado, slo un subconjunto de las libreras Java son compatibles y hay muchas APIs especicas de la plataforma. Puedes encontrar respuestas online a la preguntas "Qu y Por qu?" en la Dev Guide para Android8 y a al "Cmo?" en la documentacin de referencia9. Adems, Google ha introducido una seccin en su documentacin llamada "Android Training"10 dirigida a los nuevos desarrolladores que quieran aprender sobre prcticas recomendadas, conceptos bsicos como la navegacin y comunicacin entre aplicaciones, o funciones ms avanzadas como la descarga inteligente de bitmaps y la optimizacin para reducir el gasto de batera.

    Para empezar, necesitas el SDK de Android11, que est disponible para Windows, Mac OS X y Linux. Contiene las herramientas necesarias para crear, probar, depurar y analizar aplicaciones. Es probable que tambin quieras un buen IDE de Java. Las herramientas de desarrollo de Android (ADT)12 dan soporte a Eclipse; otros IDEs, como IntelliJ de jetbrains.com, ofrecen buen soporte al desarrollo, despliegue y (muy importante) proyectos de libreras que permiten la comparticin de cdigo y recursos entre proyectos.

    7 developer.android.com/training8 developer.android.com/guide9 developer.android.com/training/index.html10 developer.android.com/training/index.html11 developer.android.com/sdk12 developer.android.com/tools/sdk/eclipse-adt.html

  • 26Android

    Implementacin

    Arquitectura de la aplicacinUna aplicacin Android puede incluir una mezcla de actividades, servicios, receptores de mensajes y proveedores de datos, los cuales tienen que ser declarados en el maniiesto de aplicacin.

    Una actividad es un bloque de funcionalidad con una interfaz de usuario adjunta. Un servicio se utiliza para tareas que se ejecutan en segundo plano y, por lo tanto, no ligadas directamente a una representacin visual. Un receptor de mensajes gestiona los mensajes transmitidos por el sistema u otras aplicaciones. Un proveedor de datos es una interfaz para el contenido de una aplicacin que abstrae de los mecanismos de almacenamiento subyacentes.

    Una aplicacin puede consistir en varios de estos compo-nentes, por ejemplo, una actividad para la interfaz de usuario y un servicio para tareas dilatadas en ejecucin. La comunicacin entre los componentes se realiza por objetos intent.

    Un intent empaqueta datos, tales como la localizacin del usuario o una URL, con una accin. Estos intents desencadenan acciones en la plataforma y pueden ser utilizados como un sistema de mensajera en tu aplicacin. Por ejemplo, el intent para mostrar una pgina web abrir el navegador web. La fuerza de esta ilosofa de bloques de construccin es que se puede sustituir la funcionalidad por otra aplicacin, ya que Android siempre utiliza la aplicacin por defecto para un propsito es-pecico. Por ejemplo, el intent para compartir una pgina web llamada por una aplicacin de lectura de noticias puede abrir un cliente de correo electrnico o una aplicacin de mensajera de texto, dependiendo de las preferencias del usuario y de las aplicaciones instaladas: se puede utilizar cualquier aplicacin que declare un intent tipo share como interfaz.

  • 27Android

    La interfaz de usuario de una aplicacin est separada del cdigo en archivos XML de layout especicos de Android. Dife-rentes diseos pueden ser creados para diferentes tamaos de pantalla, localizacin por pas y caractersticas del dispositivo, sin tocar el cdigo Java. Con este in, textos e imgenes estn organizados en carpetas separadas de recursos. Por supuesto, tambin puedes deinir layouts va cdigo.

    El SDK y los Plug-insPara ayudarte en el desarrollo tienes muchas herramientas a tu disposicin en el SDK, los ms importantes son:

    android: Para crear un proyecto o gestionar dispositivos virtuales y versiones del SDK.

    adb: Para llamar a los dispositivos, conectarse e interactuar con ellos (as como dispositivos virtuales) moviendo archivos, instalando aplicaciones, etc.

    emulator: Para emular las caractersticas de un dispositivo virtual. Lleva un tiempo arrancarlo, por lo que hazlo slo una vez por sesin de trabajo y no para cada compilacin.

    ddms: Para observar el interior del dispositivo o emulador, ver los mensajes del registro (log) y funciones de control del emulador, como la latencia de red y la posicin GPS. Tambin se puede utilizar para monitorizar el consumo de memoria o terminar procesos. Si esta herramienta est en ejecucin, tambin puedes conectar el depurador de Eclipse a un proceso que se ejecuta en el emulador. Aparte, ddms es la nica manera (sin acceso root) para realizar capturas de pantalla de las versiones de Android por debajo de la 4.0.

    Estas cuatro herramientas y muchas otras se pueden encontrar en el directorio de herramientas del SDK, incluyendo

  • Android

    algunas para el anlisis de los registros de mtodo de rastreo, inspeccionar diseos y probar aplicaciones con los eventos al azar.

    Los plug-ins IDE estn disponibles para ayudar a gestionar estos archivos. La versin 11.x de IntelliJ incluye un editor visual de layouts, por lo que tienes libertad para elegir entre Eclipse e IntelliJ en caso de que quieras hacer prototipado rpido, arrastrando y posicionando elementos de la interfaz en el editor.

    Si te enfrentas a problemas, tales como generacin de ex-cepciones, asegrate de revisar el registro de ddms. Te permite comprobar si olvidaste agregar todos los permisos necesarios, tales como android.permission.INTERNET en el elemento uses-permission13.

    Si ests utilizando las caractersticas introducidas despus de Android 2.3, tales como Fragments14 para pantallas grandes, asegrate de agregar el paquete Android Compatibility de Google. Est disponible a travs del SDK & AVD Manager y ayuda a desarrollar para Android 3.0+ sin causar problemas con el despliegue a Android 1.6 a travs de Android 2.315. Asegrate tambin de utilizar los paquetes de la versin 4 en tu aplicacin para proveer de mximo soporte a versiones previas.

    Desarrollando tu aplicacin para Android 3.1+, podrs hacer los widgets de pantalla de inicio variables de tamao y conectar a

    13 developer.android.com/reference/android/Manifest.permission.html14 developer.android.com/guide/topics/fundamentals/fragments.html15 android-developers.blogspot.com/2011/03/fragments-for-all.html

  • 29Android

    travs de USB a otros dispositivos, como cmaras digitales, gamepads y muchos otros.

    Android Ice Cream Sandwich (4.0) y Jelly Bean (4.1 y 4.2) introducen interesantes novedades, como notiicaciones expandibles, widgets de bloqueo de pantalla y una cmara con deteccin de rostros. El entorno nativo Renderscript (introdu-cido en Honeycomb 3.1) ha cambiado mucho y no proporciona la capacidad de renderizar gricos directamente.

    Para ofrecer compatibilidad con dispositivos con versiones anteriores de Android, Google comenz a utilizar el framework Google Play Services16, que se actualiza a travs de la Play Store y aade libreras, como por ejemplo la ms reciente de Google Maps. Para aprovechar algunas de las funciones ofrecidas debes autenticar a los usuarios con OAuth 2.0.

    Testeo

    El primer paso para probar una aplicacin es ejecutarla en el emulador o en un dispositivo. Es posible depurarla, si es necesario, a travs de la herramienta ddms.

    Todas las versiones del sistema operativo Android estn preparadas para ejecutarse en dispositivos sin necesidad de modiicaciones aunque, sin embargo, algunos fabricantes de hardware pueden realizar cambios en algunos elementos de la plataforma; por tanto, probar la aplicacin en varios dispositi-vos fsicos es esencial. La lista de AppBrain17 puede ayudarte a hacerte una idea de qu dispositivos son los ms populares.

    16 http://developer.android.com/google/play-services/17 www.appbrain.com/stats/top-android-phones

  • 30Android

    Para automatizar las pruebas, el SDK de Android viene con algunas herramientas muy tiles18. Los tests se pueden escribir con el formato estndar JUnit, utilizando los objetos simulados de Android (mock objects) que se incluyen en el SDK.

    Las clases Instrumentation pueden monitorizar la interfaz de usuario y enviar eventos del sistema tales como pulsaciones de teclas. Tus tests pueden comprobar el estado de tu aplicacin tras estos eventos. MonkeyRunner19 es una potente y extensible herramienta de automatizacin de pruebas que permite probar toda la aplicacin. Estas pruebas se pueden ejecutar tanto en dispositivos virtuales como fsicos.

    En la revisin 21 del SDK, Google introdujo inalmente un framework de automatizacin de pruebas de interfaz ms eiciente20, que permite realizar pruebas funcionales de interfaz de usuario en Android Jelly Bean y versiones superiores. La herramienta puede ser ejecutada desde el shell con el comando uiautomatorviewer y muestra la interfaz capturada,incluy-endo informacin sobre las vistas actuales. Ejecutar las pruebas es relativamente fcil: Una vez que hayas escrito tu test, ste se compila a travs de ANT como un archivo JAR. Este archivo tiene que ser subido al dispositivo y ejecutado con el comando adb shell uiautomator runtest.

    Entornos de prueba de cdigo abierto, como Robotium21, pueden complementar otros tests automatizados. Robotium in-cluso puede ser utilizado para probar archivos binarios apk si el cdigo fuente de la aplicacin no est disponible. Roboelectric22 es otra gran herramienta que ejecuta las pruebas directamente sobre tu IDE en tu JVM estndar/de escritorio.

    18 developer.android.com/guide/topics/testing/testing_android.html19 developer.android.com/guide/developing/tools/monkeyrunner_concepts.html20 android-developers.blogspot.de/2012/11/android-sdk-tools-revision-21.html21 code.google.com/p/robotium22 pivotal.github.com/robolectric/

  • Tus pruebas automatizadas se pueden ejecutar en servidores de integracin continua como Jenkins o Hudson. Roboelectric se ejecuta en una JVM estndar y no necesita un runtime Android. Muchos otros entornos automatizados de pruebas, incluyendo Robotium, se basan en el entorno de Instrument-acin de Android, y requerirn ser ejecutados en la JVM Dalvik. Plug-ins como el Android Emulator Plugin23 permiten que estos tests sean conigurados y ejecutados en Hudson y Jenkins.

    Compilacin

    Aparte de crear tu aplicacin directamente en el IDE que preieras, hay maneras ms cmodas de construir aplicaciones Android. El software Gradle24 es actualmente la herramienta de creacin automatizada con soporte oicial para Android. Tambin hay un plug-in de Maven25 que cuenta con un gran apoyo en la comunidad de desarrolladores. Ambas herramientas pueden tener dependencias de diferentes repositorios Maven, por ejemplo del Maven Central Repository26.

    23 wiki.hudson-ci.org/display/HUDSON/Android+Emulator+Plugin24 ms informacin en tools.android.com/tech-docs/new-build-system/using-

    the-new-build-system25 code.google.com/p/maven-android-plugin/26 www.maven.org/

  • 32Android

    Firma

    Tu aplicacin tiene que haber sido irmada en el proceso de compilacin, ya sea con una irma de depuracin o con una de publicacin. Puedes utilizar un mecanismo de auto-irma, lo que evita gastos relacionados con la irma (y seguridad).

    La misma irma debe ser utilizada para las actualizaciones de la aplicacin. Recuerda que puedes utilizar una nica clave para todas tus aplicaciones o crear una nueva para cada una de ellas.

    Distribucin

    Una vez hayas creado la prxima aplicacin rompedora y la hayas probado, debes publicarla en la tienda de aplicaciones de Android llamada "Play". Este es un buen lugar para llegar a los clientes y vender tus aplicaciones. Android, desde la versin 1.6 en adelante, tambin es compatible con compras desde la misma aplicacin, lo que te permite vender contenido adicio-nal, paquetes de funciones, etctera, dentro de tu aplicacin mediante el uso de la infraestructura de Android Play27. Tambin se utiliza por otros portales de aplicaciones como fuente de metadatos de aplicaciones. Para subir tu aplicacin a Android Play, el punto de partida es play.google.com/apps/publish/.

    Ests obligado a inscribirte en el servicio a travs de tu cuenta de Google Checkout y pagar una cuota de inscripcin de $25 (USD). Una vez aprobado tu registro, puedes cargar la aplicacin, aadir imgenes y descripciones, y publicarla.

    27 developer.android.com/guide/google/play/billing/

  • 33

    Asegrate de que has deinido versionName, versionCode, un icono y una etiqueta en tu AndroidManifest.xml. Adems, las caractersticas declara-das en el maniiesto (nodos uses-feature) se utilizan para iltrar aplicaciones para distintos dispositivos.

    Como hay una gran cantidad de aplicaciones compitiendo en Android Play, es posible que desees utilizar tiendas alternativas de aplicaciones28. Ofrecen diferentes mtodos de pago y pueden dirigirse a grupos especicos de consumidores. Uno de esas tiendas es la Amazon Appstore, que viene preinstalada en la familia de tablets Kindle Fire.

    Monetizacin

    Adems de vender la aplicacin en una de las muchas tiendas de aplicaciones disponibles, hay mltiples maneras diferentes de monetizar una aplicacin Android. Una forma viable es me-diante el uso de la publicidad, que puede ser basada en clics o en nmero de visitas, y puede proporcionar un ingreso estable. Aparte, hay diferentes posibilidades para facturar desde la aplicacin, como el servicio propio de facturacin de Google29, que utiliza la tienda Google Play o pagos mediante la librera Mobile Payments Library de PayPal30. La mayora de los servicios diieren en las comisiones por transaccin y las posibilidades que ofrecen, por ejemplo suscripciones, pagos paralelos o pagos previamente aprobados.

    Asegrate de veriicar que el mtodo de pago de tu eleccin est en armona con los trminos y condiciones de las diferen-tes tiendas en las que deseas publicar la aplicacin; en especial vale la pena echarle un vistazo a aquellas que permiten descargas digitales, ya que suelen tener diferentes directrices.

    28 wipconnector.com/index.php/appstores/tag/android29 developer.android.com/google/play/billing/30 www.x.com/developers/paypal/products/mobile-payment-libraries

  • 35BlackBerry: Aplicaciones Java

    BlackBerry: Aplicaciones Java

    El Ecosistema

    La plataforma BlackBerry es desarrollada por la compaa cana-diense Research In Motion (RIM), que el pasado 30 de Enero del 2013 adopt la marca BlackBerry como nombre comercial de la empresa (aunque sigue cotizando en los ndices NASDAQ y TSK como RIMM y RIM, respectivamente)1. El ao de lanzamiento de la plataforma BlackBerry es 1999, hacindose extremadamente populares sus dispositivos debido a que estaban equipados con un teclado completo para introducir texto cmodamente (que dio lugar a una dolencia llamada Pulgar BlackBerry2), ofrece un robusto servicio de push para email y otros datos, una larga duracin de la batera e incluye BlackBerry Messenger, su red social mvil. Suma a esto aplicaciones tipo PDA, como libreta de direcciones, correo electrnico seguro, calendario, tareas y bloc de notas a estas caractersticas y comprenders por qu la plataforma era muy popular tanto en empresas como entre usuarios comunes.

    La cuota de mercado global de los telfonos BlackBerry ha continuado su descenso en 20123. Para recuperar el terreno perdido en el mercado, BlackBerry decidi tomar medidas radi-cales e introdujo un sistema operativo completamente nuevo: BlackBerry 10. Los primeros dispositivos BB10 sehan lanzado en el primer trimestre del 2013. Este captulo se centra en el

    1 blackberry.com2 en.wikipedia.org/wiki/Blackberry_thumb3 gs.statcounter.com/

    PO

    R

    Ov

    idiu

    Ilie

    scu

    & M

    icha

    el K

    och

  • 36BlackBerry: Aplicaciones Java

    desarrollo de aplicaciones para los anteriores, los dispositivos BlackBerry no-BB10 actualmente en el mercado; el desarrollo BB10 se explica en un captulo aparte.

    BlackBerry OS es el sistema operativo que se encuentra en todos los smartphones BlackBerry comercializados antes del 2013. Su ltima versin, lanzada a principios de 2012 (BlackBerry OS 7.1) ofrece algunas mejoras notables respecto a su predecesor: tethering, soporte a llamadas WiFi, soporte a etiqueta NFC y radio FM.

    Las incorporaciones ms importantes a la API de OS 7.1 son:

    NFC Peer-to-Peer API, que ofrece la capacidad de iniciar transferencias de datos va NFC, y completar la tarea por Bluetooth

    FM Radio API Proiles API, que permite acceso de lectura/escritura al

    peril del usuario

    Para BlackBerry OS, hay disponibles dos enfoques de desar-rollo en funcin del tipo y la naturaleza del proyecto que ests planiicando. Para aplicaciones de mediano a gran tamao, la mejor opcin es el desarrollo nativo en Java, mientras que las pequeas aplicaciones pueden ser desarrolladas con BlackBerry WebWorks SDK.

    A pesar de que se eliminar gradualmente en el futuro, actualmente la API Java de BlackBerry es el mtodo ms utilizado para desarrollar aplicaciones BlackBerry. Por ello, este captulo se centra en el desarrollo con Java.

  • 37BlackBerry: Aplicaciones Java

    Prerrequisitos

    En cuanto al desarrollo de aplicaciones Java, necesitars Java SDK4 (no el Java Runtime Environment). A continuacin, te harn falta Eclipse y el plug-in de BlackBerry5. Puedes descargarlos por separado o descargar el paquete que ofrece BlackBerry, que incluye ambos, y que tambin contiene el SDK y simuladores para el ltimo sistema operativo BlackBerry, con instrucciones sobre cmo descargar los SDKs anteriores disponibles en la pgina de descargas (necesarios para trabajar en compatibilidad con dispositivos ms antiguos). Adems, hay simuladores adicionales de dispositivos disponibles para descarga en el sitio web de BlackBerry6.

    Para implementar la aplicacin en un dispositivo de pruebas, debes descargar e instalar el BlackBerry Desktop Manager7. Para una implementacin ms rpida, se puede utilizar una her-ramienta llamada javaloader que viene con el JDE.

    Implementacin

    El BlackBerry JDE se basa parcialmente en Java ME y algunas de sus extensiones JSR: el estndar MIDP 2.0 est integrado en el SDK, con populares extensiones JSR que proporcionan APIs para la interfaz de usuario, audio, vdeo y servicios de localizacin, entre otros8. Esto signiica que las aplicaciones BlackBerry pueden ser creadas utilizando slamente tecnologas Java ME.

    4 www.oracle.com/technetwork/java5 us.blackberry.com/developers/javaappdev/javaplugin.jsp6 us.blackberry.com/sites/developers/resources/simulators.html7 us.blackberry.com/apps-software/desktop/8 www.blackberry.com/developers/docs/6.0.0api/index.html

  • 38BlackBerry: Aplicaciones Java

    Otra opcin es el uso de extensiones y frameworks de desarrollo de interfaz de usuario propiedad de BlackBerry, que permiten hacer un uso completo de la plataforma.

    El estilo de los componentes nativos de interfaz de usuario puede ser modiicado hasta cierto punto, pero heredan su apariencia del tema activo. Esto se puede evitar por cdigo, anulando el mtodo Field.applyTheme() para cada componente/campo.

    Desde OpenGL-ES a la interaccin con la pantalla de inicio y la criptografa, las APIs de BlackBerry proporcionan todo lo necesario para crear aplicaciones atractivas. Adems de las her-ramientas oiciales de BlackBerry, hay extensiones de terceros que te permiten mejorar las aplicaciones, por ejemplo J2ME Polish9 o Glaze10, que te permiten disear y animar tu interfaz de usuario mediante CSS.

    ServiciosBlackBerry ofrece muchos servicios que pueden ser tiles en el desarrollo de tus aplicaciones, incluyendo publicidad, mapas, pagos y servicios push11.

    Un servicio push12 es til principalmente en aplicaciones de correo, mensajera o noticias. Su principal ventaja es que el dispositivo espera que el servidor le enve actualizaciones, en lugar de que el dispositivo est llamando continuamente al servidor para averiguar si hay actualizaciones disponibles e importarlas al dispositivo desde el servidor. Esto reduce trico de red, uso de la batera y, para los usuarios con planes de datos limitados o roaming, reduce tambin los costes. Funciona de la siguiente manera: tu servidor enva un paquete de datos

    9 j2mepolish.org10 glaze-ui.org11 developer.blackberry.com/services/#platform12 us.blackberry.com/developers/platform/pushapi.jsp

  • 39BlackBerry: Aplicaciones Java

    de hasta 8 KB al servicio push de BlackBerry. La infraestructura difunde entonces el mensaje a todos los clientes o a un grupo especico (por ejemplo, el contenido de un informe de noticias), o a un cliente especico (por ejemplo, el contenido de un mensaje de chat). El dispositivo cliente recibe entonces el mensaje a travs de la API Push de BlackBerry y puede con-irmar la recepcin del mensaje de vuelta a la infraestructura. Tu servidor puede entonces comprobar si el mensaje ha sido entregado. BlackBerry ofrece el servicio push gratuitamente de manera limitada, con una extensin premium de pago que permite enviar ms mensajes push.

    PortabilidadPortar aplicaciones entre dispositivos BlackBerry es fcil, ya que el sistema operativo ha sido realizado por una sola compaa que ha tenido el cuidado de minimizar los problemas de fragmentacin. Sin embargo, esto no elimina totalmente el hecho de tener que enfrentarse a ciertos retos:

    Algunas clases y funciones slo estn disponibles en determinadas versiones del sistema operativo. Por ejemplo, el FilePicker que se utiliza para seleccionar un archivo slo est disponible desde OS 5.0 en adelante.

    Es necesario gestionar diferentes resoluciones de pantalla y modos de orientacin (horizontal y vertical).

    Es necesario gestionar dispositivos tanto tctiles como no tctiles. Adems, los dispositivos Storm utilizan una pantalla tctil que es fsicamente clicable, por lo que hay una diferencia entre un contacto y un clic en estos dispositivos. Los dispositivos tctiles ms recientes de BlackBerry ya no utilizan esta tecnologa.

  • 40BlackBerry: Aplicaciones Java

    Portar a otras plataformas Java tales como Java ME y Android es complicado ya que no es posible trasladar la interfaz de usuario de BlackBerry.

    El cdigo escrito para la comunicacin con el servidor o el almacenamiento puede ser reutilizado en Java ME y Android si evitas llamadas nativas a la API de BlackBerry. En general, la portabilidad entre plataformas depende en gran medida de la frecuencia con que tu aplicacin utilice componentes nativos BlackBerry. Por ejemplo, no es posible reciclar los servicios push de BlackBerry en otras plataformas.

    Testeo

    BlackBerry ofrece simuladores para varios telfonos, ya sea incluidos con el plugin de Eclipse o como descargas indepen-dientes. Estos simuladores permiten ejecutar una aplicacin en un PC de la misma manera que se ejecutara en un dispositivo. Las capacidades de testeo y depuracin de Blackberry estn a la par con las de otras plataformas como Android e iOS: los simuladores permiten a los desarrolladores simular una gran variedad de eventos (llamadas entrantes, los cambios en las coordenadas GPS, los cambios en las condiciones de red, etc.), mientras que la depuracin en dispositivos hace que el cdigo sea fcil de probar en hardware real.

    Adems, los tests automatizados tambin son posibles, aunque algo limitados y complicados. Puedes utilizar el paquete de herramientas FledgeController13 para inyectar eventos programticamente desde tu ordenador, o puedes utilizar la

    13 docs.blackberry.com/en/developers/deliverables/15476/Using_the_BBSmrtphnSmltr_programmatically_607582_11.jsp

  • clase EventInjector14 para insertar eventos desde una aplicacin BlackBerry en el dispositivo (o simulador). Sin embargo, existe muy poca documentacin disponible sobre este tema, por lo que espera tener que hacer algo de hacking y de darle vueltas a la cabeza como parte de tu experiencia con las pruebas automatizadas en BlackBerry.

    Firma

    Muchas clases de nivel de seguridad crtico y algunas caracter-sticas de la plataforma (tales como trabajo con redes o APIs de archivo) requieren una aplicacin para ser irmadas de manera que quien publica pueda ser identiicado. Para lograr esto, es necesario obtener una clave de irma directamente desde Black-Berry15. La irma en s se lleva a cabo mediante la herramienta rapc, que tambin empaqueta la aplicacin para su distribucin.

    Distribucin

    El canal de distribucin de BlackBerry se llama App World16, y es donde puedes publicar tus aplicaciones. Para aplicaciones de pago, como desarrollador obtienes una participacin en los beneicios del 70%. Adems, GetJar17 es un sitio web independiente muy conocido que tambin publica aplicaciones BlackBerry.

    14 http://www.blackberry.com/developers/docs/4.1api/net/rim/device/api/system/EventInjector.html www.blackberry.com/developers/docs/4.1api/net/rim/device/api/system/EventInjector.html

    15 www.blackberry.com/SignedKeys/16 appworld.blackberry.com/17 www.getjar.com/

  • 42BlackBerry: Aplicaciones Java

    Aprende Ms

    Si deseas obtener ms informacin acerca del desarrollo Java para BlackBerry, los siguientes recursos que te pueden ayudar.

    Aplicaciones incluidas de ejemploLos SDK vienen con una gran seleccin de aplicaciones de ejem-plo, desde una simple aplicacin "Hola, Mundo!" a aplicaciones multimedia y de geo-localizacin complejas.

    OnlineUn nmero importante de recursos en lnea estn disponibles en:

    El microsite oicial de documentacin BlackBerry18 Los foros de desarrollo de BlackBerry19

    Tambin hay una gran cantidad de conocimiento sobre BlackBerry en Internet, que tratan algunos problemas y temas mucho mejor que la documentacin oicial. Los motores de bsqueda son tus amigos!

    LibrosObras impresas que se ocupan del desarrollo Java para Black-Berry:

    BlackBerry Development Fundamentals20 por John Wargo Beginning BlackBerry 7 Development 2nd Edition por

    Anthony Rizk Advanced BlackBerry 6 Development 2nd Edition por

    Chris King

    18 developer.blackberry.com/java/documentation/19 supportforums.blackberry.com/t5/Java-Development/bd-p/java_dev20 bbdevfundamentals.com/

  • 44BlackBerry 10

    BlackBerry 10

    El Ecosistema

    La plataforma BlackBerry 10 (BB10) es un relanzamiento global de BlackBerry (marca comercial de Research In Motion, que el pasado 30 de Enero del 2013 adopt la marca BlackBerry como nombre comercial de la empresa, aunque sigue cotizando en los ndices NASDAQ y TSK como RIMM y RIM, respectivamente). Los dispositivos BB10 llegaron al mercado en el primer trimestre del 2013, sin planes de actualizacin para los dispositivos de la generacin anterior. BlackBerry ha adoptado este enfoque con el in de ponerse al da con los sistemas operativos mviles competidores: iOS, Android y Windows Phone 8. Otro objetivo importante es la armonizacin de los telfonos mviles y las tablets de BlackBerry, haciendo que funcionen con el mismo sistema operativo y las mismas aplicaciones.

    BlackBerry est sufriendo una gran presin por parte del mercado y est invirtiendo mucho en este relanzamiento, tienen que conseguir que sea un xito si no quieren perder an ms terreno en el mercado mvil. Esto signiica nuevas e interesantes oportunidades para los desarrolladores de aplicaciones que estn dispuestos a desarrollar para la nueva plataforma. Aunque el sistema operativo es completamente nuevo, su ncleo est basado en QNX, un sistema operativo en tiempo real para dispositivos integrados. Las otras partes del ecosistema BlackBerry, como la App World o el servicio push, no han cambiado. Respecto a la seguridad, BB10 ha sido creado con los mismos y elevados estndares por los que es bien conocida la plataforma BlackBerry.

    PO

    R

    M

    arcu

    s Ro

    ss

  • 45BlackBerry 10

    Desarrollo

    Con BB10, las aplicaciones se pueden desarrollar utilizando una amplia variedad de tecnologas:

    C Native SDK C++ Cascades SDK HTML5 (WebWorks SDK) Adobe Air Android Runtime (capa de compatibilidad Android 2.3.3) BlackBerry App Generator

    Con el in de atraer a los desarrolladores a su nuevo sistema operativo, BlackBerry proporciona un amplio conjunto de recur-sos, incluyendo un simulador, muchos proyectos de ejemplo en GitHub1 y documentacin actualizada frecuentemente2.

    Un punto importante de descontento, por el que BlackBerry ha recibido muchas crticas, es que la actual API de Java deja de ser compatible. Esto signiica que los desarrolladores Java que escriban cdigo para dispositivos BlackBerry deben reorientarse a una de las tecnologas anteriormente mencio-nadas. Como no todos los desarrolladores estn dispuestos a hacer esto, hay cierta preocupacin respecto a que un gran nmero de ellos abandonen el barco" y se reorienten a las plataformas de la competencia. Adems, dado que no hay va de migracin para las aplicaciones de la generacin actual, los desarrolladores tendrn que volver a escribir desde cero para la nueva plataforma. Esto es necesario porque el ncleo del nuevo sistema operativo se basa en QNX3, un sistema operativo de tiempo real. Por otra parte, la nueva plataforma ofrece nuevas

    1 github.com/blackberry2 developer.blackberry.com/platforms/bb103 www.qnx.com

  • 46BlackBerry 10

    oportunidades, por ejemplo para los desarrolladores web y Android, que pueden migrar fcilmente sus aplicaciones.

    C Native SDKEl BlackBerry NDK es compatible con muchos estndares abiertos que permiten a los desarrolladores llevar sus aplica-ciones ya existentes a la plataforma. Para comenzar tienes el sitio web Native Dev4. Escribir cdigo con Native SDK permite que tu aplicacin est tan cerca del hardware como sea posible. El BlackBerry 10 Native SDK incluye todo lo necesario para desarrollar programas que se ejecutan en BlackBerry OS 10: un compilador, un enlazador, libreras, y un extenso entorno de desarrollo integrado (IDE). Est disponible para Windows, Mac y Linux.

    Los pasos bsicos de desarrollo son los siguientes:

    Solicitar una cuenta de irmado y sus claves Instalar el SDK nativo5 Instalar y conigurar el simulador6 Conigurar el entorno para desarrollo y despliegue Crear tu primer proyecto Ejecutar aplicaciones de ejemplo

    Como novedad, BlackBerry ha aadido soporte a Scoreloop7 en el NDK. Scoreloop es una tecnologa que soporta juegos sociales mviles. Esto permite a los desarrolladores integrar atributos sociales en sus juegos, mientras que preserva el

    4 developer.blackberry.com/native/beta/5 developer.blackberry.com/native/download6 developer.blackberry.com/native/download7 developer.blackberry.com/native/documentation/bb10/com.qnx.doc.

    scoreloop.lib_ref/topic/overview.htm

  • 47

    aspecto especico de cada uno de ellos. Algunas de las caractersticas disponibles en la actualidad incluyen:

    Peril de usuario Tablas de clasiicacin Retos Premios y logros

    C++ Cascades SDKDesarrollar aplicaciones con C++ y Cascades es otra opcin. Cascades ha sido diseado para permitir a los desarrolladores crear una aplicacin BlackBerry nativa dando un importante soporte a la fcil implementacin de la interfaz de usuario. El marco Cascades separa la lgica de aplicacin del motor de renderizado de la interfaz. En la aplicacin, los controles de interfaz de usuario declarados, sus propiedades y compor-tamiento se deinen en un lenguaje de marcado llamado Qt Modeling Language (QML)8. Cuando se ejecuta la aplicacin, el motor de renderizado de interfaz de usuario muestra los controles de la misma y aplica las transiciones y los efectos que hayan sido especiicados. El Cascades SDK ofrece las siguientes caractersticas:

    Interfaz de usuario Cascades y APIs de plataforma Herramientas para desarrollar tu interfaz en C++, QML, o

    ambos Capacidad de beneiciarse de controles bsicos de la

    interfaz y crear nuevos Comunicacin por redes mviles y WiFi Grabacin y reproduccin de archivos multimedia Almacenamiento y retorno de datos Gestin de certiicados y herramientas criptogricas

    8 en.wikipedia.org/wiki/QML

  • 48BlackBerry 10

    El entorno Cascades se basa en el entorno de desarrollo de aplicaciones Qt. Esta arquitectura permite a Cascades aprovechar los modelos Qt de objetos, eventos y threading. Los slots y seales en Qt permiten una potente y lexible comunicacin entre objetos. El framework Cascades incorpora caractersticas de clases Qt fundamentales (tales como QtCore, QtNetwork, QtXml, QtSql, y otras) y compila sobre ellas. Esto permite a los desarrolladores deinir las cosas en lugar de programarlas, por ejemplo, slo tienen que deinir la duracin y el tipo de una animacin, en lugar de programarla. Este enfoque es similar a iOS con Core Animation. Debido a su marcado parecido a JSON, QML puede incluso ser escrito por desarrolladores JavaScript experimentados.

    Para ayudar a los desarrolladores con este nuevo enfoque en la construccin de interfaces de usuario, existe una herramienta llamada Cascades Builder. Est incluida en el QNX Momentics IDE y permite a los desarrolladores disear una interfaz de usu-ario mediante una interfaz visual. Cuando se realiza un cambio en el cdigo, se puede ver el efecto inmediato en la vista de diseo. El desarrollador no tiene necesidad de programar un control, puede simplemente arrastrar y soltar.

    Si eres un diseador, el Cascades Exporter9 es para t. Este plug-in de Adobe Photoshop recorta y reescala las imgenes y las empaqueta en un archivo tmz (en recursos de imagen comprimidos, recortados y mejorados con metadatos). Estos archivos de recursos puede ser utilizados fcilmente por un desarrollador con el QNX Momentics IDE.

    Para ms informacin est disponible el sitio Cascades Dev10.

    9 developer.blackberry.com/cascades/documentation/design/cascades_exporter/

    10 developer.blackberry.com/cascades/

  • 49BlackBerry 10

    HTML5 WebWorksSi eres un desarrollador Web/JavaScript, puedes utilizar tus habilidades para escribir aplicaciones para BlackBerry. Hay dos herramientas relevantes que puedes utilizar:

    La primera es WebWorks SDK11. Entre otras caractersticas, permite escribir pginas web regulares y luego compilarlas como aplicaciones nativas de BlackBerry con facilidad. Si quieres imitar el estilo de la interfaz de usuario BlackBerry en HTML, hay un proyecto en GitHub que te ayudar. Se llama BBUi.js12. Ofrece un amplio y detallado CSS para hacer que tu pgina web estndar se visualice como una aplicacin nativa BlackBerry. En esta aproximacin debes utilizar atributos de datos para mejorar el cdigo HTML.

    La segunda herramienta es Ripple Emulator13. Se trata de una extensin del navegador Chrome que acta como un simu-lador de dispositivos BlackBerry 10 para aplicaciones WebWorks. Tambin emula caractersticas especicas de hardware, tales como el acelermetro y el sensor GPS. Incluso puedes utilizarlo para empaquetar e implementar tu aplicacin sin tener que pasar a travs de la lnea de comandos.

    Es bueno saber que BlackBerry ofrece soporte WebGL acelerado por hardware, y que puedes realizar la depuracin y perilado del dispositivo mvil a travs del WebInspector como una funcin integrada.

    Para obtener ms informacin sobre el desarrollo con WebWorks hay un micro-site de HTML5 Dev14.

    11 developer.blackberry.com/html5/download/sdk12 github.com/blackberry/bbUI.js13 developer.blackberry.com/html5/download/ripple14 developer.blackberry.com/html5

  • 50BlackBerry 10

    Adobe AirSi eres un desarrollador AIR puedes agregar BB10 como nuevo canal de distribucin. Utilizars el BlackBerry 10 SDK para Adobe AIR para crear aplicaciones para dispositivos BlackBerry.

    Puedes utilizar el SDK con las APIs de Adobe ActionScript y Adobe Flex para crear o portar aplicaciones BlackBerry. Estas APIs proporcionan algunos componentes nicos de interfaz de usuario y temas predeinidos, as como listeners de eventos especicos de dispositivos BlackBerry. Utilizando las APIs de Adobe Flash Builder, tu aplicacin tambin puede acceder a funciones nicas de dispositivos mviles, como el acelermetro y la informacin de geolocalizacin. Adems, puedes aprovechar las caractersticas de BlackBerry SDK Native 10 mediante el desarrollo de extensiones nativas de AIR, ANE (del ingls AIR Native Extensions).

    Para comenzar a desarrollar tu aplicacin Adobe AIR:

    Descarga e instala VMware Player para Windows or VMware Fusion para Mac

    Descarga el simulador BlackBerry 10 Simulator Descarga el BlackBerry 10 SDK para Adobe AIR Comienza a desarrollar con Adobe Flash Builder, Power-

    lasher FDT o herramientas de lnea de comandos

    Para mayor informacin, visita el website dedicado a ste tema15.

    Android en Tiempo de Ejecucin (Runtime)Puedes utilizar el BlackBerry Runtime para ejecutar aplicaciones Android 2.3.3 de la plataforma BlackBerry 10. Para utilizar el runtime, primero debes volver a empaquetar tus aplicaciones

    15 developer.blackberry.com/air/

  • 51BlackBerry 10

    Android en el formato de archivo BAR, que es el necesario para que una aplicacin se ejecute en BlackBerry 10.

    Como desarrollador, tendrs que utilizar una de las her-ramientas siguientes para volver a compilar la aplicacin. Estas herramientas tambin comprueban cmo es de compatible tu aplicacin para ser ejecutada en BlackBerry 10, ya que algunas de las APIs del SDK de Android pueden no ser compatibles, o pueden serlo slo parcialmente con la plataforma BlackBerry.

    Plug-in de recompilacin para Eclipse: La principal ven-taja de la utilizacin de esta herramienta es su capacidad de comprobar niveles de compatibilidad, compilar, depurar y ejecutar aplicaciones en BlackBerry PlayBook, BlackBerry Tablet Simulator, BlackBerry 10 Dev Alpha Simulador y dispositivos BlackBerry 10, todo sin salir de Eclipse. Tambin puedes usar este plug-in para irmar tu aplicacin antes de distribuirla. Si deseas probar la aplicacin sin irmarla, puedes utilizarlo para crear e instalar un token de depuracin en el dispositivo de destino o en el simulador.

    Compilador online: La ventaja principal de la BlackBerry Packager para aplicaciones de Android es que se puede utilizar para volver rpidamente a compilar tu aplicacin para Android utilizando slo tu navegador. Puedes probar la compatibilidad de la aplicacin, volver a compilarla como un archivo BAR compatible con BlackBerry Tablet OS o BlackBerry 10, y despus irmarlo para que pueda ser distribuido a travs de la tienda BlackBerry App World.

    Herramientas recompiladoras de lnea de comandos: Una de las principales ventajas de utilizar el BlackBerry SDK para aplicaciones de Android es que se puede utilizar para recompilar mltiples aplicaciones Android desde el formato de archivo APK al formato de archivo BAR. Adems, tambin puedes utilizar este conjunto de herramientas de

  • 52

    lnea de comandos para comprobar la compatibilidad de tus aplicaciones Android, irmarlas, crear tokens de depuracin y un certiicado de desarrollador.

    Si deseas obtener ms informacin acerca de cmo ejecutar aplicaciones Android en BB10, visita el sitio web16.

    Blackberry App GeneratorSi no eres un desarrollador, BlackBerry proporciona una manera fcil de generar una aplicacin sencilla para BB10 con el Black-Berry App Generator17. Esa pgina web genera una aplicacin basada en fuentes de informacin como

    RSS feeds Tumbler Facebook YouTube Flickr

    y otras. Genera una aplicacin master-detail que se puede personalizar con un logotipo y una seleccin de colores. Para una aplicacin de noticias sencilla este enfoque es totalmente correcto, pero no esperes obras maestras tipo CNN.

    16 developer.blackberry.com/android17 blackberryappgenerator.com/blackberry/

  • 53BlackBerry 10

    Testeo

    BlackBerry contina proporcionando un simulador para telfo-nos BB10 como una descarga independiente18. Este simulador permite ejecutar una aplicacin en un PC/Mac/Linux de la misma manera que se ejecutara en un dispositivo BlackBerry real. Para asistirte en tus pruebas, el simulador viene con una aplicacin llamada controller. Esta utilidad te permite simular cosas tales como el nivel de la batera, la posicin GPS, NFC o la inclinacin del dispositivo y, por lo tanto, comprobar cmo reacciona tu aplicacin en escenarios reales.

    Firma

    Muchas clases y caractersticas de la plataforma de nivel de seguridad crtico (por ejemplo, la creacin de redes o APIs de archivo) requieren que la aplicacin est irmada para que el desarrollador pueda ser identiicado. Este ltimo paso en el desarrollo de una aplicacin para BlackBerry a menudo es difcil.

    Si quieres probar tu aplicacin sin irmar en un dispositivo fsico, es necesario solicitar un archivo llamado token de depuracin. Esta token permite a un dispositivo especico BB10 ejecutar aplicaciones sin irmar. Para realizar este procedimiento de coniguracin necesitas solicitar un archivo de irma (cliente-PBDT-xxxxx.csj) a travs del BlackBerry Orden Key Form19. Despus de recibir el archivo por email podrs instalar un token de depuracin con las herramientas de lnea de comandos.

    18 developer.blackberry.com/devzone/develop/simulator/19 www.blackberry.com/SignedKeys/codesigning.html

  • 54BlackBerry 10

    Despus de realizar esta coniguracin, tambin podrs ejecutar aplicaciones sin irmar en tu dispositivo. Ten en cuenta que esto requiere ser hecho en cada dispositivo por separado.

    Si quieres publicar tu aplicacin en BlackBerry App World necesitas una clave de irma. Las claves de irma se solicitan a travs del formulario BlackBerry Orden Key Form20. Para ayudarte con este proceso de coniguracin, BlackBerry ofrece una gua paso a paso en esta pgina web21 que te guiar en el proceso.

    Distribucin

    Al igual que con todas las versiones anteriores del sistema operativo de BlackBerry, las aplicaciones para BB10 se distribuyen a travs de BlackBerry App World22. La necesaria cuenta de proveedor se puede crear en el Portal de Proveedores para BlackBerry App World23.

    En el caso de aplicaciones de pago, los desarrolladores obtener una participacin en los ingresos del 70%.

    La otra opcin es una distribucin corporativa. Esto te permite lanzar una aplicacin interna en tu organizacin en lugar de ponerla a disposicin pblica para cualquier usuario, lo cual es adecuado para aplicaciones B2B. Si deseas obtener ms informacin acerca de la distribucin corporativa, por favor visita el sitio web dedicado24.

    20 www.blackberry.com/SignedKeys/codesigning.html21 developer.blackberry.com/CodeSigningHelp/codesignhelp.html22 appworld.blackberry.com/23 appworld.blackberry.com/isvportal24 developer.blackberry.com/distribute/enterprise_application_distribution.html

  • 56iOS

    iOS

    El Ecosistema

    Breve Historia de iOSApple anunci iOS en la MacWorld 2007 (que por aquel entonces se conoca simplemente como OS X, en base a Mac OS X, el sistema operativo de la lnea de productos Macintosh), junto con el primer iPhone, el cual fue lanzado, con iPhone OS 1.0, el 29 de junio de 2007. Desde entonces, Apple ha lanzado cada ao una nueva generacin del iPhone acompaada de una nueva versin de iOS, en algn momento entre junio y octubre. En septiembre de 2012 se hizo pblica la ltima versin disponible hasta la fecha, la 6.0.

    Dispositivos Ejecutando iOSActualmente, Apple vende mltiples dispositivos (con diversas coniguraciones) que funcionan con iOS:

    iPhone iPod touch iPad iPad mini Apple TV

    Con la excepcin de Apple TV, todos estos dispositivos in-cluyen la App Store y pueden ejecutar aplicaciones de terceros.

    La mayora de los dispositivos ejecutan la versin ms reciente de iOS durante dos aos o ms despus de su lanza-miento inicial, por lo que los desarrolladores deben considerar esto cuando crean una aplicacin. Utilizar hardware antiguo

    PO

    R

    A

    lexa

    nder

    Rep

    ty

  • 57iOS

    habitualmente signiica disponer de menos recursos, como ciclos de CPU y RAM, y en algunos casos diferentes tamaos y/o resoluciones de pantalla.

    Existe una lista detallada de dispositivos iOS, sus capacid-ades y las versiones de iOS compatibles en la Wikipedia1.

    Ventas de Dispositivos y AplicacionesSegn las informaciones de Apple, que suelen ser hitos anunciados en eventos especiales de comunicacin, hasta junio de 2012 se han vendido ms de 400 millones de dispositivos iOS. Dado que las ventas de dispositivos iOS siguen ganando impulso, incluso despus de cinco aos, un gran nmero de estos dispositivos se puede considerar en uso activo y utili-zando iOS 5 o iOS 6.

    Desde enero de 2013, la App Store ofrece ms de 775.000 aplicaciones de terceros desarrolladores, que en conjunto han sido descargadas ms de 40 mil millones de veces, aportando ms de siete mil millones de dlares a sus desarrolladores, segun Apple2.

    Descripcin General de la Tecnologa

    Frameworks & Lenguaje(s)Dado que iOS se basa en Mac OS X, utiliza una gran parte de los mismos entornos de desarrollo y tecnologas, a excepcin de la capa de Cocoa Touch (que gestiona y renderiza la interfaz de usuario) y algunos pequeos frameworks que son nicos para cada uno de sus sistemas. Esto facilita que un buen nmero de aplicaciones utilicen una base de cdigo similar y slo tengan

    1 en.wikipedia.org/wiki/List_of_iOS_devices2 www.apple.com/pr/library/2013/01/07App-Store-Tops-40-Billion-Downloads-

    with-Almost-Half-in-2012.html

  • 58iOS

    que variar la interfaz de usuario, que debe ser rediseada en cualquier caso para dispositivos tctiles.

    La mayora de los frameworks para iOS suministrados por Apple estn escritos en Objective-C (o sobre APIs Objective-C proporcionadas por otro backend), que es un runtime ligero sobre C inspirado en Smalltalk, con plena compatibilidad sobre C. Pocos entornos suministran APIs de C, la mayora son utilizados para la programacin de audio y video. El sistema tambin soporta el desarrollo en C++ y Objective-C++, e incluye frameworks estndar para esos lenguajes.

    Antes del lanzamiento de iOS, Objective-C llevaba una existencia un tanto sombra con niveles de popularidad tan bajos como del 0,03% en el ndice TIOBE3, gracias a su uso casi exclusivo en Mac OS X. En diciembre de 2007 era el lenguaje de programacin nmero 57 en popularidad y desde entonces se ha ido alzando hasta llegar al tercer puesto en el ao 2012, justo por detrs de Java y C, tras convertirse en el "Lenguaje de Programacin del Ao" en 2011. Su popularidad sigue creciendo de manera mucho ms rpida que Java y C.

    A lo largo de los ltimos aos, Apple ha realizado nu-merosas mejoras tanto en el runtime de Objective-C como en el compilador LLVM para agregar nuevas caractersticas al lenguaje, como la gestin automtica de memoria, blocks (una forma de closures) y propiedades sintetizadas automticamente, de las cuales la mayora de los desarrolladores se beneician directamente al tener que escribir menos cdigo.

    Apple ofrece una gran cantidad de recursos en su sitio web para desarrolladores iOS4, incluyendo descargas de software, videos de aprendizaje, guas de iniciacion, documentacin, cdigos de ejemplo y foros.

    3 www.tiobe.com/index.php/content/paperinfo/tpci/index.html4 developer.apple.com/devcenter/ios/

  • 59iOS

    La mayora de estos recursos contienen informacin muy valiosa, como las Human Interface Guidelines (Directrices de Interfaz Humana), que todos los desarrolladores deberan haber ledo.

    Xcode y Sus AlternativasPara el desarrollo en iOS (y Mac OS X), Apple suministra su propia suite de herramientas de desarrollo de forma totalmente gratuita, incluyendo las siguientes aplicaciones:

    Xcode: entorno de desarrollo integrado Instruments: analizador de rendimiento que se ejecuta

    sobre DTrace Dashcode: entorno de desarrollo para widgets del Dash-

    board (Mac OS X) y otro contenido relacionado con HTML iOS Simulator: simula un entorno iOS para testeo rpido

    Una IDE comercial alternativa a Xcode es JetBrains' AppCode5, una aplicacin Java con algunas caractersticas de mayor calado que las que Xcode ofrece. Para aquellos que estn tratando de evitar Objective-C, hay entornos completos como MonoTouch6, que ofrece incluso soporte multiplataforma.

    5 www.jetbrains.com/objc/6 xamarin.com/monotouch

  • 60iOS

    Testeo & Debugging

    Las herramientas de desarrollo para iOS incluyen soporte para pruebas tanto unitarias como automatizadas sobre la interfaz de usuario a travs del framework UIAutomation. A travs de la lnea de comandos de Xcode, dichas herramientas pueden ser incluidas en sistemas de integracin continua para las pruebas de aceptacin