如何指示一个 Android 应用只支持 ARM 架构的 CPU?

3
我有一个仅运行在ARM CPU上的Android应用程序。这是因为我在APK中包含了一个ARM可执行文件。然而,经过一番搜索,我未能找到任何方法来指示(在清单文件或类似文件中)该应用程序将不会在其他架构上运行。
通常,想要包含本地代码的应用程序会包括一个共享库。在这种情况下,该应用程序只会出现在具有兼容CPU的用户的Play商店中。然而,对于我的应用程序来说,使用共享库不是一个选项。
是否有在项目的清单文件或其他地方可以明确指示应用程序支持的CPU架构的地方?

一个包含针对特定CPU架构的本地库的应用程序[...]仅在支持该架构的设备上可见。我还没有Google开发者帐户,但也许您可以在发布应用程序时在Play商店中添加过滤器。 - kelunik
2个回答

2
然而,对于我的应用程序来说,使用共享库不是一个选项。
理论上,在NDK中创建一个无操作的小型JNI兼容库,仅构建支持您打包的二进制文件的架构(例如ARMv5和ARMv7),应该是可以的。您可能甚至不必使用库(尽管在初始测试期间,为了安全起见,我会设置一个引用它的Java类)。即使您从未在运行时调用代码,这也足以触发Play Store过滤器。
换句话说,仅将NDK内容用于过滤。
就个人而言,出于性能原因,我会将您的命令行二进制文件重写为一个NDK构建的JNI兼容库,但这只是我的意见。

嘿 - 这真是聪明!好主意! - Nathan Osman
@NathanOsman:测试这个理论的一种方法是看看摩托罗拉RAZR i是否在您进行此更改后列为受支持的设备,因为那是我能想到的绝对支持Play商店的基于x86的手机之一。 - CommonsWare

0

这可能就是你要找的东西

TextView tv_showArch_View = (TextView)findViewById(R.id.ShowCPUArch);
        String CPU_ABI = Build.CPU_ABI;

        tv_showArch_View.setText(CPU_ABI);

它返回给我

ARMeabi适用于在ARM处理器上运行的模拟器

X86适用于在Intel处理器上运行的模拟器

有关更详细的信息,您可以查看Google官方文档


3
是的,但这并不能防止应用在Google Play商店中向使用x86或MIPS处理器的用户展示。 - Nathan Osman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接