我有一个只能在 ARM CPU 上运行的 Android 应用程序。这是因为我在 APK 中包含了一个 ARM 可执行文件。但是,经过相当多的搜索,我无法找到任何方法来指示(在清单文件或类似文件中)该应用程序不会在其他架构上运行。
通常,想要包含本机代码的应用程序包括一个共享库。在这种情况下,只有具有兼容 CPU 的用户才会在 Play 商店中显示该应用程序。但是,使用共享库不是我的应用程序的选项。
项目清单文件或其他地方是否有我可以明确指出应用程序支持的 CPU 架构的地方?
我有一个只能在 ARM CPU 上运行的 Android 应用程序。这是因为我在 APK 中包含了一个 ARM 可执行文件。但是,经过相当多的搜索,我无法找到任何方法来指示(在清单文件或类似文件中)该应用程序不会在其他架构上运行。
通常,想要包含本机代码的应用程序包括一个共享库。在这种情况下,只有具有兼容 CPU 的用户才会在 Play 商店中显示该应用程序。但是,使用共享库不是我的应用程序的选项。
项目清单文件或其他地方是否有我可以明确指出应用程序支持的 CPU 架构的地方?
但是,使用共享库不是我的应用程序的选项。
理论上,它应该是。使用 NDK 创建一个无操作的小型 JNI 兼容库,并且只为您的打包二进制文件支持的架构构建它(例如,ARMv5 和 ARMv7)。您甚至可能不必使用该库(尽管我设置了一个引用它的 Java 类以确保安全,至少在初始测试期间如此)。这应该足以触发 Play 商店过滤器,即使您从未在运行时实际调用过代码。
IOW,使用 NDK 的东西只是为了过滤。
就个人而言,出于性能原因,我会将您的命令行二进制文件重写为 NDK 构建的 JNI 兼容库,但这只是我。
这可能是您正在寻找的
TextView tv_showArch_View = (TextView)findViewById(R.id.ShowCPUArch);
String CPU_ABI = Build.CPU_ABI;
tv_showArch_View.setText(CPU_ABI);
它回到了我身边
ARMeabi
模拟器运行ARM processor
和
X86
模拟器运行Intel processor
有关更多详细信息,您可以通过Google 的官方文档