【问题标题】:Googleplay don‘t filter x86 deviceGoogle Play 不过滤 x86 设备
【发布时间】:2016-06-07 15:06:05
【问题描述】:

我生成了一个使用 ndk-build 命令构建的 .so 文件。在 Application.mk 文件中,我写了这些:APP_ABI := armeabi。然后,我在另一个应用程序中使用了这个 .so 文件,但我发现该应用程序在使用 x86 设备的 Google play 中是可见的。

来自文档 (http://developer.android.com/google/play/filters.html):通过包含使用 Android NDK 构建的针对特定 CPU 架构(例如 ARM EABI v7 或 x86)的本机库。

现在我很困惑,我应该怎么做才能让我的应用在 GooglePlay 中对 x86 设备不可见?

我们在 GooglePlay 中发布了一个应用程序,该应用程序在 x86 设备中会崩溃。所以我们想让应用程序在 GooglePlay 中对 x86 设备不可见。现在我们的 .so 文件在 jniLibs 目录下的 armeabi 目录下,但是 x86 设备仍然可以在 GooglePlay 中找到该应用程序。

【问题讨论】:

标签: android android-ndk x86 google-play native


【解决方案1】:

Google Play 可能取决于 x86 有一个翻译层,它将接受 armeabi 代码并翻译成 x86。见:How does native android code written for ARM run on x86?

虽然我不知道为什么您的特定应用无法在 x86 上运行,但处理它的一种方法是在您的应用通过旧版本启动时检查 CPU/架构

Build.CPU_ABI

或在 API 21 及更高版本上

Build.SUPPORTED_ABI

http://developer.android.com/reference/android/os/Build.html#CPU_ABI

如果不满足 CPU 架构等条件,则阻止用户运行您的应用。因此,在启动时,您将检查设备是否正确并通过对话框降级和/或阻止用户访问会崩溃的功能。

编辑

如果您需要阻止设备甚至看到您的应用,则必须使用 Google Play 开发者控制台来选择哪些设备可以看到您的应用。

见:How to restrict android app to specific device make?

https://support.google.com/googleplay/android-developer/answer/1286017?hl=en

当然,随着新的 x86 设备上线,您也必须删除它们。

【讨论】:

  • 感谢您的回答!out app 无法在x86 上运行的原因是.so 文件中的一些native 方法与x86 不兼容。我们的工程师是这么说的。我不知道技术细节。
  • 在消费级 x86 设备上,Build.SUPPORTED_API 还将报告 ARM 架构,因为它们通过转换层得到支持。您可以检查 x86 是否在列表中,但根据 CPU 架构将设备列入黑名单可能只会惹恼用户。为什么不解决您的兼容性问题?
  • .so 文件由我们的图形工程师提供,他们告诉我修复兼容性问题是一个巨大的工程,所以我必须让应用程序对 x86 设备不可见。有没有修改 Build.SUPPORTED_API 的方法?
猜你喜欢
  • 2012-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多