Play商店中的Android应用程序(在Firemonkey Delphi中开发)与您的设备不兼容

时间:2015-10-24 10:52:59

标签: android firemonkey delphi-xe8 delphi

我使用Firemonkey Framework开发了一个Object Pascal项目。我将我的应用程序发布到Play商店,然后我尝试从Play商店安装应用程序,但有一条消息:“此应用程序与您的设备不兼容”

我尝试从Play商店安装应用程序到手机(流行的三星和索尼手机),然后从我的电脑手动安装-APK文件。当我想从Play商店安装相同的应用程序与相同的apk文件和相同的密钥库和所有文件,清单等是相同的

我手动安装apk文件时有效。但仍然没有工作。

我更改了权限并取消选中电话,相机,手机和其他权限。它只使用写入和读取存储,蓝牙(项目需要它)和互联网。

我的移动设备是通用移动4G,One,Discovery和三星S4,Edge Plus,HTC One M7和LG G3。与Samsung SM-T562

不相容的平板电脑

2 个答案:

答案 0 :(得分:2)

对不起。我认为这是关于在英特尔设备上运行FMX应用程序。既然我已经写了答案,我也可以留下它。

/庞

---如何在基于Intel的设备上运行Delphi FMX应用程序---

实际上非常容易。按照以下步骤操作,您的Delphi FMX应用程序将在大多数基于英特尔的Android设备上正常运行。诀窍在于,几乎所有基于英特尔的设备都有一个名为lib Houdini的东西,它将ARM二进制文件转码为英特尔二进制文件。当您在Delphi中创建应用程序时,您将获得包含.so文件的APK。一个用于ARM,一个用于MIPS,最后一个.so文件用于Intel。包含代码的唯一.so文件是ARM .so文件。其他是预编译的.so文件,将向最终用户显示设备不兼容。如果您从APK中省略了英特尔.so文件,您的应用程序将使用lib Houdini并且工作得很好。如果英特尔设备安装了lib Houdini,那就是这样。这取决于要安装的设备制造商,而不是您。

从APK文件中省略Intel .so文件的步骤:

  1. 转到此目录并将文件夹x86重命名为x86.old
  2. C:\ Program(x86)\ Embarcadero \ Studio \ 17.0 \ lib \ android \ debug

    1. 在此目录中执行相同的操作
    2. C:\ Program(x86)\ Embarcadero \ Studio \ 17.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欧元。我的戴尔P2314T使用它,多点触控工作效果很好。它是基于Intel的模拟器,速度很快,并且安装了lib Houdini。

      快乐的编码! /庞

答案 1 :(得分:2)

我解决了!我尝试运行需要从Play商店安装的应用程序的平板电脑也需要访问粗略位置和访问精确位置。这款平板电脑有自己的GSM卡用于使用互联网,但它是数据模块,而不是电话。这就是为什么我的应用程序告诉我"应用程序不兼容"。

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

我的应用程序现在需要这些权限才有效!