Running Delphi Applications on Android Intel

Posted by on in Tutorial

As I mentioned in my last blog post about my CodeRage product address, it is technically possible to run Delphi Android applications on Intel devices. For the conference, Jim McKeeth had an Android Intel device he used, but I don't have one at hand. It was good someone suggested me to look into this blog post by Magno Lima, magnumlabs.wordpress.com/2015/10/09/android-using-bluestacks-as-emulator-delphi/, focused on using Bluestacks Android Intel emulator.

This emulator (unlike others) runs a full Android and it does support libHoudini, the emulation layer for ARM binaries. So armed with a little time today I installed Bluestacks, fiddled a little with the adb tool to make it visible to the Android SDK (and RAD Studio), and started some experiments. If you take a plan FireMonkey application and deploy it, this is what you get:

This happens because FireMonkey, by default, injects platform test code into the application. Originally an ARM binary would just crash on Intel, so better show an error message than an exception. You can read about this at docwiki.embarcadero.com/RADStudio/XE8/en/Running_Your_Android_Application_on_an_Android_Device (and the case is similar to the Amazon table one). So what you have to do in practice (and Magno explains very well), you have to remove the x86 check by removing the library from your project in the deployment options:

In the background you can also see the Bluestacks target (with a rather random name) in the Project pane of RAD Studio. Now run the application again, and it should work:

Of course, you can run also some fairly more complex applications, like the one below (in this case notice the issue with the title bar, explained again by Magno at magnumlabs.wordpress.com/2015/10/10/delphiandroid-misalignment-status-bar-on-intel-based-devices/ -- along with a workaround). Something to work on for our dev team. Anyway, this is the output of the actual demo:

I ended up with some "fire" apps on Bluestacks... but again, the same should work on a physical Android Intel device, with a recent version of Android (Lollipop preferred) equipped with libHoudini:

 



About
Gold User, Rank: 7, Points: 457
Delphi and RAD Studio Product Manager at Embarcadero.

Comments

  • MrMe
    MrMe Friday, 30 October 2015

    Hi!
    To make this permanent you can do the following:
    1. Go to this directory and rename the folder x86 to x86.old
    C:\Program (x86)\Embarcadero\Studio\17.0\lib\android\debug

    2. Do the same in this directory
    C:\Program (x86)\Embarcadero\Studio\17.0\lib\android\release

    (Change 17.0 to 16.0 for XE8 and to 15.0 for XE7 and so on)

    If you like you can rename armeabi to armeabi.old and mips to mips.old as well.

    I'd rather see a global setting for this in the IDE but this will do for now.

    While I'm at it I'd really like to recommend this emulator;
    https://amiduos.com/
    It's just € 15. I use it with my Dell P2314T and multitouch works perfekt. It's an Intel based emulator, it's fast and it has lib Houdini installed. It has Google play store installed to.

    /MrMe

  • Marco Cantu, RAD PM
    Marco Cantu, RAD PM Thursday, 5 November 2015

    Good feedback and additional information, thanks. In the future, we'd probably disable the CPU checks altogether.

  • Please login first in order for you to submit comments
  • Page :
  • 1

Check out more tips and tricks in this development video: