Bluestacks como emulador Android para Delphi y C++

Un tema recurrente en el desarrollo móvil es el rendimiento (o falta de rendimiento) del emulador Android de Google (utilizado de forma predeterminada por Delphi y C++ Builder).

Aquí viene una solución muy interesante (con un rendimiento óptimo): el uso de máquinas virtuales con Android.

Uno de ellos es el BlueStacks (http://www.bluestacks.com). La instalación tiene ningún secreto, básicamente un NNF (Next-Next-Finish).

Si usted está utilizando un PC con Windows, solo tiene que reiniciar el “adb” (puente de depuración, que es parte del SDK de Android), y su Android VM ya está disponible para el IDE de Delphi o C++, debidamente enumerado como un emulador.

Reiniciando el “adb” desde la línea de comandos:

adb.exe kill-server
adb.exe devices

Pero, si está ejecutando su Delphi en una máquina virtual de Windows en un equipo MAC, lo ideal es instalar BlueStacks en el sistema host, es decir, en OS X. En este caso, para que el IDE (dentro de la máquina virtual de Windows) puede “ver” el emulador, se requiere un pequeño truco utilizando Putty (emulador de terminal), que se describe con todo detalle en este post de Jim McKeeth: http://delphi.org/2013/09/debugging-against-a-remote-android-emulator. Es exactamente la misma técnica que se aplicará a el BlueStacks.

Y por último, pero no menos importante:

El BlueStacks es un emulador se mantiene (no “ARM”), pero viene equipado con LibHoudini (capa de emulación ARM para los procesadores móviles de Intel). Este proyecto se mantiene por Intel directamente, para hacer frente a la disponibilidad de aplicaciones para esta plataforma. En otras palabras, este emulador es capaz de ejecutar normalmente aplicaciones ARM (generados por Delphi y C ++).

El único detalle que se debe poner atención, antes de intentar ejecutar la aplicación: Ir a las opciones de despliegue (Project/Deployment), y desactive el “assembly” de verificación automática de plataforma, que se añadió automáticamente en su aplicación durante la creación del proyecto:

<missing image>

Y aquí está el resultado, una aplicación Delphi con IBLite corriendo directamente en BlueStacks:

<missing image>

Recordando que alguna incompatibilidad aún puede surgir (no he probado todas las aplicaciones que tengo), y que no está soportado oficialmente por Embarcadero en este momento, recomiendo a todos los que se están desarrollando para móvil, dedique algo de tiempo para probar, a veces parece más rápido que un dispositivo físico!

¡Hasta la próxima!

Bluestacks como emulador Android para Delphi/C++ Builder

Um tema recorrente nas rodas de conversa sobre mobile é a performance (ou não performance) do emulador Android do Google (utilizado por default pelo Delphi e C++ Builder).

Eis que surge uma solução muito interessante (e de ótima performance): a utilização de máquinas virtuais com Android.

Uma delas é o BlueStacks (http://www.bluestacks.com/). A instalação não tem segredo algum, basicamente um NNF (Next-Next-Finish).

Se você está utilizando um PC com Windows, basta reiniciar o “adb” (debug bridge, parte do SDK do Android), e sua VM Android já estará disponível para a IDE do Delphi ou C++ Builder, devidamente listada como um emulador.

Reiniciando o adb, diretamente via comando de linha:

adb.exe kill-server
adb.exe devices

Caso esteja rodando seu Delphi em uma VM Windows, em um equipamento MAC, o ideal é instalar o BlueStacks no sistema root, ou seja, no OSX. Neste caso, para que a IDE (dentro da VM Windows) consiga “ver” o emulador, é necessário um pequeno truque utilizando o Putty (emulador de terminais), descrito com riqueza de detalhes neste post do Jim McKeeth: http://delphi.org/2013/09/debugging-against-a-remote-android-emulator/. É exatamente a mesma técnica a ser aplicada ao BlueStacks.

E por fim, mas não menos importante:

O BlueStacks é um emulador Intel (não ARM), porém vem equipado com o LibHoudini (camada de emulação ARM para processadores mobile Intel). Este projeto é mantido pela própria Intel, para resolver a disponibilidade de apps para Android/Intel. Em outras palavras, este emulador roda normalmente apps ARM (geradas pelo Delphi e pelo C++).

O único detalhe é, antes de tentar executar a aplicação, vá até a opção deployment, e desmarque o assembly de checagem automática de plataforma, incorporado pela IDE a sua aplicação:

<missing image>

E aqui o resultado, uma app Delphi com IBLite rodando no BlueStacks:

<missing image>

Lembrando que alguma incompatibilidade ainda pode aparecer (não testei todas as apps que tenho), e que não é oficialmente suportado pela Embarcadero neste momento, recomendo a todos que estão desenvolvendo para mobile reservar algum tempo para testar, em algumas ocasiões me pareceu ainda mais rápido que um device físico!

Até a próxima!