我生成了一个使用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中找到该应用程序。
答案 0 :(得分:2)
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设备上线,你也必须将它们删除。