Buenas,
Adelantándonos al lanzamiento del nuevo RadStudio XE5, y gracias a que como MVP nos han ofrecido la posibilidad de hablar de él antes de que vea la luz, hoy quisiera mostrar cómo hacer el primer «Hello Wordl!!» en la nueva plataforma soportada (y tan deseada por muchos), Android.
Lo primero que haremos es configurar el entorno de trabajo. Para ello necesitamos dos cosas, nuestro RadStudio XE5 y el SDK (Software Development Kit) y NDK (Native Development Kit) de Android. Si bien la propia instalación de RadStudio XE5 ya nos ofrece la posibilidad de instalar tanto el SDK como el NDK, es posible instalarlo por separado sin ningún tipo de problemas. Para ello sólo tenemos que acceder a sendas webs, descargarlo y descomprimirlo. No obstante, si hacemos ésto, tenemos que tener presente que el SDK incluye Eclipse por lo que, si no lo queremos, podremos borrar su directorio ahorrando así unos cuantos megas.
Dado que en el IDE podremos escoger como dispositivo destino tanto el emulador que trae el SDK como un dispositivo Android conectado al PC por USB, vamos a ver cómo configurar ambos para así poder escoger uno u otro según necesidades.
Mediante un dispositivo Android
Una de las cosas más importantes es saber si nuestro dispositivo Android es compatible con el entorno de desarrollo. Básicamente, si tienes un Android 2.3 o superior y corre en un procesador ARMv7, lo será. Hay varias aplicaciones en el Google Play que pueden darte esta información si la desconoces, como ahora CPU-Z o Android System Info.
Una vez visto que nuestro dispositivo Android es compatible, tenemos que descargarnos e instalar el driver USB apropiado para nuestro dispositivo si Windows no lo reconoce de forma automática. Si es uno Nexus de Google, podemos hacerlo mediante el Android SDK Manager (Manager.exe) que encontraremos en la raíz de la carpeta de la instalación del SDK. ¡Es importante arrancarlo con permisos administrativos!
En caso contrario, tendríamos que ir a la página del fabricante de nuestro dispositivo y descargarlo desde ahí; podéis ver la página de OEM USB Drivers.
Otra cosa que tendremos que hacer es habilitar la depuración por USB en nuestro dispositivo. Esto dependerá de cada versión de Android. Por ejemplo, en un 4.0 Ice Cream Sandwich procederíamos así:
- Ir a Ajustes
- Ir a Opciones de Desarrollado
- Habilitar Depuración de USB
o bien, si tenéis un 2.3 Ginger bread haremos esto:
- Ir a Ajustes
- Ir a Aplicaciones
- Ir a Desarrollo
- Habilitar Depuración de USB
Haciendo estos pasos, nuestro dispositivo Android tendría que aparecer en el Explorador de Windows como una unidad más de disco y lista para que RadStudio despliegue nuestras aplicaciones en él.
Mediante un emulador en nuestro propio ordenador
Si no disponemos de un dispositivo Android compatible o bien queremos usar un tamaño de pantalla distinto, tenemos la opción del emulador de Android, también llamado Android Virtual Device (AVD).
Para poder ejecutar el emulador tenemos que instalar, si no lo está, un Android system image que pueda usar el emulador. Para ello arrancaremos el Manager.exe con derechos administrativos y su el árbol buscaremos el nodo ARM EABI v7a System Image.
También (y de forma opcional) podemos instalar un acelerador del emulador si nuestro ordenador lo soporta. Para ello buscaremos en el árbol de nodos la entrada que diga Intel x86 Emulator Accelerator (HAXM) y la instalaremos. Esto realmente descarga el instalador, así que tendremos que ir a su carpeta (<SDK>\extras\intel folder) he instalarlo ejecutando el archivo IntelHaxm.exe.
Una vez hechos estos pasos, ya sólo queda crear el emulador. Para ello, desde el mismo Android SDK Manager iremos al menú Tools – Manage AVDs….
En la pantalla que aparecerá veremos los emuladores que hayamos creado. Es aconsejable crear un emulador para cada uno de los dispositivos Android para el que queramos hacer pruebas. Para crear uno nuevo simplemente le datemos al botón de New.
En la pantalla que nos aparecerá tendremos que escoger un nombre para el emulador, el tipo de dispositivo y el API a usar. También hay que seleccionar el check de Use host GPU. Aceptando la pantalla crearemos el emulador y volveremos al administrador de AVDs.
Ahora que tenemos creado nuestro emulador, sólo tendremos que seleccionarlo y pulsar el botón de Start… para que nuestro Delphi lo reconozca y lo podamos usar.
Si al lanzar el emulador obtenemos el error «PANIC: Could not open«, lo que necesitamos hacer es crear una variable de entorno llamada ANDROID_SDK_HOME que apunte a la carpeta que contiene la carpeta \.android. En mi caso se encuentra en d:\.android, por lo que la variable me tiene que apuntar a d:\. Una vez añadida la variable de entorno, reiniciamos el ordenador y ya debería arrancar el emulador.
En el IDE de Delphi
Dentro del IDE de RadStudio tendremos que configurar el SDK para Android. Para ello iremos a Tools – Options – SDK Manager, pulsaremos Add y, en el cuadro de diálogo que aparece, escogeremos la plataforma Android y en la versión SDK, si no sale la nuestra en el desplegable, le daremos a Add New. Seguiremos el asistente, poniendo la ruta a las carpetas del SDK y NDK. Al establecer estas rutas, en la siguiente pantalla no tendremos que especificar nada ya que lo cogerá todo por defecto.
Ahora que ya tenemos configurado el SDK y NDK de Android en el IDE, sólo necesitamos crear una nueva aplicación de tipo «FireMonkey Mobile Application», seleccionar nuestro dispositivo en Project Manager – Target Platforms – Android – Target, compilar, ejecutar y esperar a que aparezca nuestra aplicación en nuestro dispositivo.
Con estos sencillos pasos ya estamos en disposición de hacer nuestro primer «Hello world!» en nuestro dispositivo Android.
Hasta la próxima entrada.
Saludos.
HAXM only accelerates images emulating the Intel CPU, not the ARM one. And XE5, as far as I can tell, doesn’t support Intel-based devices. So, sadly (as the emulator is terribly slow without it), HAXM doesn’t help the XE5.
Thanks for your info gabr. I’ll remember!!
Hola, me parece bien tu tema, y en lo personal ya tengo funcionando el delphi y he desarrollado unas aplicaciones, pero al empaquetarlas y copiarlas en un cell no me funcionan cunado tengo una version de Android 2.3 (Gingerbread) pero si en la 4.3, lo he probado con diferentes celulares y me pasa lo mismo, como puedo hacer mis app’s compatibles?
Hola Christian
Más que la versión de Android, lo que importa es tu procesador que debe ser mínimo ARMv7. En el mensaje digo un par de programas que te darán esa información. Descárgatelos y verás que seguramente tu dispositivo Gingerbread 2.3 no será ARMv7, sino ARMv6.
Saludos
OK en efecto ya lo comprobé y si mi cell tiene un procesador ARMV6, en ese caso como puedo hacerle para hacer mis aplicaciones compatibles?
Con Delphi sencillamente no vas a poder. Tienes que compararlo a Windows, si compilas para Win64 el programa no te correrá en Win32. Esto mismo pasa con Android, si compilas para ARMv7, no te funcionará en ARMv6. Es lo bueno y lo malo de hacer aplicaciones nativas como hace Delphi 🙂
Saludos
Hola! 🙂
una pregunta por favor: yo conecte una tablet por cable usb y ejecuta el programa que compilo en delphi, y todo bien. pero como le hago para copiar esa aplicación en otra tablet? algo asi como hacer mi instalador de esa aplicacion, bueno por lo menos copiarla y que funcione…
saludos!
Buenas
Tienes dos opciones, o bien la instalas mediante Delphi, o bien la subes a la Play Store y la descargas des de ahí
Saludos
hola, cuando compilas la aplicacion para android, te genera un archivo .APK
busca ese archivo que se debe llamar igual que tu proyecto, y ese es un instalador para android.
lo copias en android, y de ahi lo ejecutas, te preguntara si deseas instalarlo y eso es todo
Hola Cadetill, te felicito por tu trabajo con gmlib y por mantener esta página para los hispano hablantes que tenemos que hacer de tripas corazón y bregar con ese inglés constantemente …
Una pregunta, ya esto es con XE6, pero no logro que Delphi XE6 me reconozca un Samsung SII GT-I9100P con el Android 4.0.3. Me sale en el explorador y puedo copiar hacia y desde el todo lo que me plazca pero nada de que me salga en los Targets del Delphi.
Gracias, por anticipado
Lenny
Hola Lenny
Ante todo gracias por tus palabras y por pasarte por este humilde blog. Respecto a lo que preguntas…. lo único que se me ocurre es que, o bien no es compatible o bien no has activado la depuración por USB. Verifícalo a ver
Saludos
Aquí dice haber compatibilidad, sino, no es eficiente hacer aplicaciones sencillas para androides que no cumplan con ARM6, ni un HOLA MUNDO?
http://docwiki.embarcadero.com/RADStudio/XE7/en/Android_Devices_Supported_for_Application_Development
Saludos
Hola
La primera linea de los requerimientos dice «RAD Studio supports development on ARMv7 devices that run the following versions of the Android operating system: »
En ningún momento está hablano de ARMv6, dice claramente ARMv7
Saludos
Hola que tal.
muchas gracias por el aporte.
solo una pregunta, estos procedimientos son los mismos para el XE7?
Hola Jorge
No lo he probado, pero entiendo que sí.
Saludos
Ok gracias.
lo voy a intentar, conoces alguna pagina o sitio donde existan tutoriales de desarrollo de aplicaciones de android y Delphi.
no se nada de android y necesito algo desde -1 jeje
saludos.
Hola de nuevo
Aquí tienes algún código fuente con vídeo tutoriales
Saludos!!
Muchas gracias.
Buenas noches,
Muy interesante tu blog, me ha servido de mucho..
Gracias por tus aportes, intentare para ver como me va..
éxitos.!!