Embarcadero Delphi 10.3 community and Android Virtual Device

Hi,

I had been playing with Android programming for weeks and had been compiling and transferring the APK via USB to my android unit to test.  Looking at many Android developing tutorials in youtube, I can see many are using an emulator.  It took me a while to finally make an AVD up and loaded that is "fast enough" (using the Intel HAXM accelerator), all the rest takes more than 10minutes to load.

My next problem is... from the DX when I do a run, it compiles ok but gives an error "INSTALL FAILED NO MATCHING ABIS".  Googling shows that the problem lies on the AVD using Intel x86 while my app is compiled using ARM.  So how can I make my app Intel x86 compatible? 

PS: while trying to learn about AVD, I failed to make a single AVD work using the SDK that comes with DX.  So I downloaded Android Studio and use its GUI to make an AVD and it finally had an AVD that works (where I also learn about the HAXM and USB DEBUGGING).  I guess it doesnt matter having two sets of Android SDK coz the DX was able to detect the AVD created under Android Studio.

Parents
No Data
Reply
  • simply don't use the google avd that come with delphi just download this faster emulator here

    After successful install go to this path from your computer : "Program Files\Microvirt\MEmu" and remove the adb.exe and run the emulator after you have already run your delphi ide (just to run the embarcadero adb.exe first).


    the above steps that you fallow with HAXM inside your pc can't work with delphi android apps because they are compatible just for the ARM processors ... this is not a limitation but today and in all countries if you take a look about android phones you will found 98,3% of them uses the ARM architecture for thier processors ... and Embarcadero can't provide to us the compatible framework for each architecture where this is still represent just 1,7% of android phones in the <world> !!!! .

    this below reply is taken from here:

    I ended up with this conclusion after searching a lot.

    Useful info in Unity Stats.

    • ARMv7: 98.3%

    • Intel x86: 1.7%

    However I was not satisfied so I verified it from many resources.

    According to Android Documentation.

    armeabi was deprecated in r16. Removed in r17. No hard float.

    and

    Historically the NDK supported 32-bit and 64-bit MIPS, but support was removed in NDK r17.

    Summery after searching a lot

    • mips (deprecated)
    • mips64 (deprecated)
    • armeabi (deprecated)
    • armeabi-v7a (required — most popular architecture nowadays)
    • arm64-v8a (required — newer version of armeabi-v7a)
    • x86 (optional, very limited number of devices, like Asus Zenfone 2, Genymotion/ Android emulator)
    • x86_64 (optional, very limited number of devices, like Asus Zenfone 2, Genymotion/ Android emulator)

    I should also mention that ChromeBook are using Intel processors based x86 and x86_64 architecture. (Only add these architure when you support ChromeBook)

    Conclusion

    If you app supports armeabi-v7a and arm64-v8a architectures because they have around 99% of Android devices.

    Important Suggestion

    Do you worry about app size (you should), you should split your apk for multiple abi. Android studio and play store support uploading multiple apk, so that app has only 1 architecture ndk files.

    So this will be much efficient to build multiple apk.

    Important links

Children