El desarrollo de software de Android es el proceso mediante el cual se crean aplicaciones para dispositivos que ejecutan el sistema operativo Android . Google afirma que [3] "las aplicaciones de Android se pueden escribir usando los lenguajes Kotlin , Java y C++ " utilizando el kit de desarrollo de software (SDK) de Android, aunque también es posible utilizar otros lenguajes. Todos los lenguajes de máquina virtual (JVM) que no sean Java , como Go , JavaScript , C , C++ o ensamblador , necesitan la ayuda del código del lenguaje JVM, que puede ser proporcionado por herramientas, probablemente con soporte de API restringido. Algunos lenguajes y herramientas de programación permiten compatibilidad con aplicaciones multiplataforma (es decir, tanto para Android como para iOS ). Las herramientas de terceros, los entornos de desarrollo y la compatibilidad con lenguajes también han seguido evolucionando y expandiéndose desde que se lanzó el SDK inicial en 2008. El mecanismo oficial de distribución de aplicaciones de Android para usuarios finales es Google Play ; también permite el lanzamiento gradual de aplicaciones por etapas, así como la distribución de versiones de aplicaciones previas al lanzamiento a los evaluadores.
El kit de desarrollo de software (SDK) de Android incluye un conjunto completo de herramientas de desarrollo. Las herramientas de la plataforma Android SDK son un subconjunto descargable por separado del SDK completo, que consta de herramientas de línea de comandos como adb
y fastboot
. [4] Android Debug Bridge (ADB) es una herramienta para ejecutar comandos en un dispositivo Android conectado. Fastboot es un protocolo utilizado para flashear sistemas de archivos. El código escrito en C / C++ se puede compilar en código nativo ARM o x86 (o sus variantes de 64 bits) utilizando el kit de desarrollo nativo de Android (NDK).
La plataforma Android 3.1 (también incorporada a Android 2.3.4) presenta compatibilidad con Android Open Accessory, que permite que un hardware USB externo (un accesorio USB de Android) interactúe con un dispositivo con Android en un modo "accesorio" especial. Cuando un dispositivo con Android está en modo accesorio, el accesorio conectado actúa como host USB (alimenta el bus y enumera los dispositivos) y el dispositivo con Android actúa como dispositivo USB. Los accesorios USB de Android están diseñados específicamente para conectarse a dispositivos con Android y se adhieren a un protocolo simple (protocolo de accesorios de Android) que les permite detectar dispositivos con Android que admiten el modo accesorio. [5]
Las herramientas de desarrollo diseñadas para ayudar a un dispositivo Android a interactuar con dispositivos electrónicos externos incluyen IOIO , Android Open Accessory Development Kit , Microbridge, Triggertrap , etc.
El Android Developer Challenge fue una competición para encontrar la aplicación más innovadora para Android. Google ofreció premios por un total de 10 millones de dólares estadounidenses , distribuidos entre ADC I y ADC II. ADC I aceptó presentaciones desde el 2 de enero hasta el 14 de abril de 2008. Las 50 propuestas más prometedoras, anunciadas el 12 de mayo de 2008, recibieron cada una un premio de 25.000 dólares para un mayor desarrollo. [6] [7] Terminó a principios de septiembre con el anuncio de diez equipos que recibieron 275.000 dólares cada uno, y diez equipos que recibieron 100.000 dólares cada uno. [8]
El ADC II se anunció el 27 de mayo de 2009. [9] La primera ronda del ADC II cerró el 6 de octubre de 2009. [10] Los ganadores de la primera ronda del ADC II, que comprendían las 200 mejores aplicaciones, se anunciaron el 5 de noviembre de 2009. La votación para la segunda ronda también se abrió el mismo día y finalizó el 25 de noviembre. Google anunció los principales ganadores del ADC II el 30 de noviembre, y SweetDreams, What the Doodle!? y WaveSecure fueron nominados como los ganadores generales del desafío. [11] [12]
Existe una comunidad de entusiastas del código abierto que crean y comparten distribuciones basadas en Android (es decir, firmware ) con una serie de personalizaciones y características adicionales, como soporte de audio sin pérdida FLAC y la capacidad de almacenar aplicaciones descargadas en la tarjeta microSD . [13] Esto generalmente implica rootear el dispositivo. El rooteo permite a los usuarios acceso root al sistema operativo, lo que permite un control total del teléfono. El rooteo también tiene varias desventajas, incluido un mayor riesgo de piratería, altas posibilidades de bloqueo , pérdida de garantía, mayores riesgos de ataques de virus, etc. [14] También es posible instalar firmware personalizado, aunque el cargador de arranque del dispositivo también debe estar desbloqueado. El firmware personalizado permite a los usuarios de teléfonos más antiguos usar aplicaciones disponibles solo en versiones más nuevas. [15]
Estos paquetes de firmware se actualizan con frecuencia, incorporan elementos de la funcionalidad de Android que aún no se han lanzado oficialmente dentro de un firmware aprobado por el operador y tienden a tener menos limitaciones. CyanogenMod y OMFGB son ejemplos de este tipo de firmware.
El 24 de septiembre de 2009, Google envió una carta de cese y desistimiento [16] al modder Cyanogen, citando problemas con la redistribución de las aplicaciones de código cerrado de Google [17] dentro del firmware personalizado. Aunque la mayor parte del sistema operativo Android es de código abierto, los teléfonos vienen empaquetados con aplicaciones de código cerrado de Google para funciones como Google Play y navegación GPS. Google ha afirmado que estas aplicaciones solo se pueden proporcionar a través de canales de distribución aprobados por distribuidores autorizados. Cyanogen cumplió con la licencia de Google y continuó distribuyendo su mod sin el software propietario. Proporcionó un método para realizar copias de seguridad de las aplicaciones de Google con licencia durante el proceso de instalación del mod y restaurarlas cuando el proceso se completa. [18]
Los obstáculos para el desarrollo incluyen el hecho de que Android no utiliza los estándares establecidos de Java, es decir, Java SE y ME . Esto impide la compatibilidad entre las aplicaciones Java escritas para esas plataformas y las escritas para la plataforma Android. Android reutiliza la sintaxis y la semántica del lenguaje Java, pero no proporciona las bibliotecas de clases y API completas incluidas con Java SE o ME. [19] Sin embargo, existen múltiples herramientas en el mercado de empresas como Myriad Group y UpOnTek que proporcionan servicios de conversión de Java ME a Android. [20] [21] [22]
Android ofrece sus propias clases de interfaz gráfica de usuario y no ofrece Java AWT, Swing ni JavaFX. No es compatible con la API completa de Java Beans. [ cita requerida ]
Android fue creado por la Open Handset Alliance , que está liderada por Google. Los primeros comentarios sobre el desarrollo de aplicaciones para la plataforma Android fueron mixtos. [23] Los problemas citados incluyen errores, falta de documentación, infraestructura de control de calidad inadecuada y ningún sistema público de seguimiento de problemas. (Google anunció un rastreador de problemas el 18 de enero de 2008.) [24] En diciembre de 2007, el fundador de la startup móvil MergeLab, Adam MacBeth, afirmó: "La funcionalidad no está ahí, está mal documentada o simplemente no funciona... Claramente no está listo para el gran momento". [25] A pesar de esto, las aplicaciones dirigidas a Android comenzaron a aparecer la semana después de que se anunció la plataforma. La primera aplicación disponible públicamente fue el juego Snake . [26]
El 12 de noviembre de 2007 se publicó una versión preliminar del SDK de Android. El 15 de julio de 2008, el equipo del Android Developer Challenge envió por error un correo electrónico a todos los participantes del Android Developer Challenge anunciando que había una nueva versión del SDK disponible en un área de descarga "privada". El correo electrónico estaba destinado a los ganadores de la primera ronda del Android Developer Challenge. La revelación de que Google estaba suministrando nuevas versiones del SDK a algunos desarrolladores y no a otros (y manteniendo este acuerdo en privado) provocó una frustración generalizada dentro de la comunidad de desarrolladores de Android en ese momento. [27]
El 18 de agosto de 2008 se lanzó la versión beta del SDK de Android 0.9. Esta versión proporcionó una API actualizada y ampliada, herramientas de desarrollo mejoradas y un diseño actualizado para la pantalla de inicio. Las instrucciones detalladas para la actualización están disponibles para aquellos que ya trabajaban con una versión anterior. [28] El 23 de septiembre de 2008 se lanzó el SDK de Android 1.0 (versión 1). [29] Según las notas de la versión, incluía "principalmente correcciones de errores, aunque se agregaron algunas funciones menores". También incluía varios cambios en la API de la versión 0.9. Se han lanzado múltiples versiones desde que se desarrolló. [30]
El 5 de diciembre de 2008, Google anunció el primer Android Dev Phone , un dispositivo desbloqueado por hardware y SIM , diseñado para desarrolladores avanzados. Era una versión modificada del teléfono Dream de HTC. Si bien los desarrolladores pueden usar dispositivos de consumo comunes para probar y usar sus aplicaciones, algunos desarrolladores pueden optar por un dispositivo exclusivo desbloqueado o sin contrato.
En julio de 2013 [actualizar], se habían desarrollado más de un millón de aplicaciones para Android, [31] con más de 25 mil millones de descargas. [32] [33] Una investigación de junio de 2011 indicó que más del 67% de los desarrolladores móviles usaban la plataforma, en el momento de la publicación. [34] Se pronostica que los envíos de teléfonos inteligentes Android superarán los 1.2 mil millones de unidades en 2018 con una participación de mercado del 85%. [35]
Francamente, no entiendo por qué Google pretende ignorar la gran cantidad de implementaciones existentes. Me parece un caso grave de "no inventado aquí". En última instancia, esto ralentizará la adopción. Ya existen demasiadas plataformas Java para el mundo móvil y esta es otra más.
Por otro lado, podrías pensar que se trata de una especie de estafa dirigida a los desarrolladores que no entienden realmente la naturaleza de la plataforma a la que apuntan. Mi mayor queja es que pensarías que Mikael Ricknäs, el reportero de IDG News Service que escribió la primera historia vinculada anteriormente (que trabaja para la misma empresa que publica JavaWorld), al menos habría mencionado la relación entre Java y Android para dejar en claro lo extraño de este anuncio.
Tendremos que esperar y ver exactamente cuánto éxito obtiene J2Android. La herramienta todavía no está disponible en el mercado abierto; mientras que Schillings habló con optimismo sobre "convertir 1.000 MIDlets en una tarde", en este momento están trabajando con algunos proveedores para transformar sus catálogos anteriores. Así que aquellos de ustedes que esperan evitar aprender a escribir código Android tal vez tengan que esperar un tiempo.