android - Google Play 不过滤 x86 设备

标签 android android-ndk x86 google-play native

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

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

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

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

最佳答案

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 设备上线,您也必须删除它们。

关于android - Google Play 不过滤 x86 设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35617168/

相关文章:

java - 当我们暂停游戏时后台发生了什么?游戏如何恢复和开始?

android - 以编程方式发送whatsapp音频文件

android - TouchUtils 和 ActivityInstrumentationTestCase2 用户事件单元测试用例不工作

java - Eclipse android Maven : Plugin execution not covered by lifecycle configuration (execution: ndk- build,阶段:编译)

汇编命令LEA/LDS/LES

android - 使用 Espresso 测试假设 View 状态

android - 如何告诉 Gradle 从命令行使用不同的 AndroidManifest?

android - 我如何为 NDK 工具链的 gcc 添加 <bluetooth/bluetooth.h>

x86 - CPU特权环: Why rings 1 and 2 aren't used?

assembly - cdecl 调用约定