简体   繁体   中英

Android application (developed in Firemonkey Delphi) in Play Store is not compatible with your device

I developed a project with Object Pascal using Firemonkey Framework. I published my application to Play Store then I tried to install application from Play Store but there is a message: "this app is incompatible with your device"

I tried to install application to mobile phones (popular samsung and sony phones) from Play Store and manually installing -APK File- from my Computer. When I want to install from Play Store same application with same apk file and same keystore and all files, manifest etc. are same

It works when I install my apk file manually. But still no work.

I changed permissions and unchecked telephony, camera, cellphone and other permissions. Its just using write and read storage, bluetooth(project needs it) and internet.

My mobile devices are General Mobile 4G, One, Discovery and Samsung S4, Edge Plus, HTC One M7 and LG G3. Tablet -which is incompatible with- is Samsung SM-T562

I'm sorry. I thought this was about running FMX apps on Intel devices. Since I've already written the answer I might just as well leave it.

/Pontus

--- How to run Delphi FMX apps on Intel based devices ---

It's actually very easy. Follow these steps and your Delphi FMX app will run fine on most Intel base Android devices. The trick is that almost all Intel based devices have something called lib Houdini that will transcode the ARM binary to a Intel binary. When you create an app in Delphi you will get an APK that contains .so files. One is for ARM, one is for MIPS and the last .so file is for Intel. The only .so file that contains your code is the ARM .so file. The others are precompiled .so files that will show the end users that the device is not compatible. If you omit the Intel .so file from the APK your app will make use of lib Houdini and works just fine. That's if the Intel device has the lib Houdini installed. That's up to the manufacturer of the device to install, not you.

Steps to omit the Intel .so file from your APK file:

  1. Go to this directory and rename the folder x86 to x86.old

C:\\Program (x86)\\Embarcadero\\Studio\\17.0\\lib\\android\\debug

  1. 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)

The next time you build your APK you will get a warning that the folder x86 doesn't exist, and that's just fine because that's what we want. Now try to install the APK on your Intel device and you'll notice that it'll work just fine. If it doesn't then your device doesn't have the lib Houdini installed.

The only thing that will not work is debugging and that's because Delphi doesn't know about lib Houdini.

As a bonus your APK will become a tiny bit smaller. If you like you can do the same with the MIPS folders. If the lib Houdini is missing on the device your app will crash.

Remember to clean and the build your project before testing this.

There's another way; In Delphi open the menu Project|Deployment and uncheck the row $(BDS)\\lib\\android\\debug\\x86\\ or $(BDS)\\lib\\android\\deploy\\x86\\ With this method you will have to make sure you do this for all your projects. With the first method you never have to worry again.

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, fast and it has lib Houdini installed.

Happy coding! /Pontus

I solved it! Tablet that I'm trying to run my application which needs to be installed from Play Store wants Access Coarse Location and Access Fine Location too. This Tablet has own GSM card for using Internet but it is Data Module, not Phone. This is why my application said me that "Application is not compatible".

android.permission.BLUETOOTH
android.permission.BLUETOOTH_ADMIN
android.permission.INTERNET
android.permission.READ_CALENDAR
android.permission.READ_EXTERNAL_STORAGE
android.permission.WRITE_CALENDAR
android.permission.WRITE_EXTERNAL_STORAGE

My application now required these permissions and it works!

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM