Play 商店中的 Android 应用程序(在 Firemonkey Delphi 中开发)与您的设备不兼容
Android application (developed in Firemonkey Delphi) in Play Store is not compatible with your device
我使用 Firemonkey Framework 使用 Object Pascal 开发了一个项目。我将我的应用程序发布到 Play 商店,然后我尝试从 Play 商店安装应用程序,但有一条消息:"this app is incompatible with your device"
我尝试从 Play 商店将应用程序安装到手机(流行的三星和索尼手机),并从我的电脑手动安装 -APK 文件-。当我想从 Play Store 安装具有相同 apk 文件和相同密钥库的相同应用程序时,所有文件、清单等都相同
当我手动安装我的 apk 文件时它有效。但是还是不行。
我改了权限,取消勾选电话、相机、手机等权限。它只使用写入和读取存储、蓝牙(项目需要它)和互联网。
我的移动设备是 General Mobile 4G、One、Discovery 和 Samsung S4、Edge Plus、HTC One M7 和 LG G3。不兼容的平板电脑是 Samsung SM-T562
对不起。我认为这是关于在英特尔设备上使用 运行ning FMX 应用程序。既然我已经写了答案,那我还是留下吧。
/本都
--- 如何 运行 Delphi 基于 Intel 的设备上的 FMX 应用程序 ---
其实很简单。按照这些步骤操作,您的 Delphi FMX 应用程序将 运行 在大多数英特尔基础 Android 设备上正常运行。诀窍是几乎所有基于 Intel 的设备都有一个叫做 lib Houdini 的东西,它将 ARM 二进制文件转码为 Intel 二进制文件。当您在 Delphi 中创建应用程序时,您将获得一个包含 .so 文件的 APK。一个用于 ARM,一个用于 MIPS,最后一个 .so 文件用于 Intel。包含代码的唯一 .so 文件是 ARM .so 文件。其他的是预编译的 .so 文件,这些文件将向最终用户显示该设备不兼容。如果您从 APK 中省略 Intel .so 文件,您的应用程序将使用 lib Houdini 并且工作正常。那就是如果英特尔设备安装了 lib Houdini。这取决于要安装的设备制造商,而不是您。
从 APK 文件中省略 Intel .so 文件的步骤:
- 转到此目录并将文件夹 x86 重命名为 x86.old
C:\Program (x86)\Embarcadero\Studio.0\lib\android\debug
- 在此目录中执行相同操作
C:\Program (x86)\Embarcadero\Studio.0\lib\android\release
(将 XE8 的 17.0 更改为 16.0,XE7 的更改为 15.0,依此类推)
下次构建 APK 时,您会收到 x86 文件夹不存在的警告,这很好,因为这正是我们想要的。现在尝试在您的英特尔设备上安装 APK,您会发现它运行良好。如果没有,那么您的设备没有安装 lib Houdini。
唯一不起作用的是调试,那是因为Delphi不知道lib Houdini。
作为奖励,您的 APK 会变小一点。如果你喜欢,你可以对 MIPS 文件夹做同样的事情。如果设备上缺少 lib Houdini,您的应用程序将崩溃。
记得在测试之前清理并构建您的项目。
还有一个办法;在 Delphi 中打开菜单 Project|Deployment 并取消选中行 $(BDS)\lib\android\debug\x86\ 或 $(BDS)\lib\android\deploy\x86\ 使用此方法,您必须确保为你所有的项目。使用第一种方法,您再也不用担心了。
趁着我真的很想推荐这个模拟器; https://amiduos.com/ 只需 15 欧元。我将它与我的 Dell P2314T 一起使用,多点触控效果非常好。这是一个基于 Intel 的模拟器,速度很快,并且安装了 lib Houdini。
编码愉快!
/本都
我解决了!我正在尝试 运行 我需要从 Play 商店安装的应用程序的平板电脑也需要访问粗略位置和访问精细位置。此平板电脑有自己的 GSM 卡用于上网,但它是数据模块,而不是 Phone。这就是为什么我的应用程序告诉我 "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
我的应用程序现在需要这些权限并且可以正常工作!
我使用 Firemonkey Framework 使用 Object Pascal 开发了一个项目。我将我的应用程序发布到 Play 商店,然后我尝试从 Play 商店安装应用程序,但有一条消息:"this app is incompatible with your device"
我尝试从 Play 商店将应用程序安装到手机(流行的三星和索尼手机),并从我的电脑手动安装 -APK 文件-。当我想从 Play Store 安装具有相同 apk 文件和相同密钥库的相同应用程序时,所有文件、清单等都相同
当我手动安装我的 apk 文件时它有效。但是还是不行。
我改了权限,取消勾选电话、相机、手机等权限。它只使用写入和读取存储、蓝牙(项目需要它)和互联网。
我的移动设备是 General Mobile 4G、One、Discovery 和 Samsung S4、Edge Plus、HTC One M7 和 LG G3。不兼容的平板电脑是 Samsung SM-T562
对不起。我认为这是关于在英特尔设备上使用 运行ning FMX 应用程序。既然我已经写了答案,那我还是留下吧。
/本都
--- 如何 运行 Delphi 基于 Intel 的设备上的 FMX 应用程序 ---
其实很简单。按照这些步骤操作,您的 Delphi FMX 应用程序将 运行 在大多数英特尔基础 Android 设备上正常运行。诀窍是几乎所有基于 Intel 的设备都有一个叫做 lib Houdini 的东西,它将 ARM 二进制文件转码为 Intel 二进制文件。当您在 Delphi 中创建应用程序时,您将获得一个包含 .so 文件的 APK。一个用于 ARM,一个用于 MIPS,最后一个 .so 文件用于 Intel。包含代码的唯一 .so 文件是 ARM .so 文件。其他的是预编译的 .so 文件,这些文件将向最终用户显示该设备不兼容。如果您从 APK 中省略 Intel .so 文件,您的应用程序将使用 lib Houdini 并且工作正常。那就是如果英特尔设备安装了 lib Houdini。这取决于要安装的设备制造商,而不是您。
从 APK 文件中省略 Intel .so 文件的步骤:
- 转到此目录并将文件夹 x86 重命名为 x86.old
C:\Program (x86)\Embarcadero\Studio.0\lib\android\debug
- 在此目录中执行相同操作
C:\Program (x86)\Embarcadero\Studio.0\lib\android\release
(将 XE8 的 17.0 更改为 16.0,XE7 的更改为 15.0,依此类推)
下次构建 APK 时,您会收到 x86 文件夹不存在的警告,这很好,因为这正是我们想要的。现在尝试在您的英特尔设备上安装 APK,您会发现它运行良好。如果没有,那么您的设备没有安装 lib Houdini。
唯一不起作用的是调试,那是因为Delphi不知道lib Houdini。
作为奖励,您的 APK 会变小一点。如果你喜欢,你可以对 MIPS 文件夹做同样的事情。如果设备上缺少 lib Houdini,您的应用程序将崩溃。
记得在测试之前清理并构建您的项目。
还有一个办法;在 Delphi 中打开菜单 Project|Deployment 并取消选中行 $(BDS)\lib\android\debug\x86\ 或 $(BDS)\lib\android\deploy\x86\ 使用此方法,您必须确保为你所有的项目。使用第一种方法,您再也不用担心了。
趁着我真的很想推荐这个模拟器; https://amiduos.com/ 只需 15 欧元。我将它与我的 Dell P2314T 一起使用,多点触控效果非常好。这是一个基于 Intel 的模拟器,速度很快,并且安装了 lib Houdini。
编码愉快! /本都
我解决了!我正在尝试 运行 我需要从 Play 商店安装的应用程序的平板电脑也需要访问粗略位置和访问精细位置。此平板电脑有自己的 GSM 卡用于上网,但它是数据模块,而不是 Phone。这就是为什么我的应用程序告诉我 "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
我的应用程序现在需要这些权限并且可以正常工作!