使用 System.getProperty("os.arch") 检查是否是 armeabi cpu

Using System.getProperty("os.arch") to check if it is armeabi cpu

我在一些旧的 4.2.2- 设备(galaxy s3 mini、galaxy ace 3、galaxy fresh 等)上遇到以下 RenderScript 问题 -

我想实施建议的解决方案,但

返回的值到底是什么

System.getProperty("os.arch");

用于 armeabi 设备(不是 armeabi-v7 设备)。

谢谢。

方法System.getProperty是Java的泛型方法,here你可以找文档。

在 Linux 它 returns 从命令 uname -m 获得相同的值。例如,可能的值为 armv5tarmv5tearmv5tejarmv5tejlarmv6armv7armv7li686 等等。 armeabi 设备没有确切的值,因为它与 cpu 和 cpu 略有不同。

System.getProperty 有一个更好的选择,它是字段 Build.CPU_ABI(或较新设备中的 Build.SUPPORTED_ABIS):

String abi = null;

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
    abi = Build.CPU_ABI;
} else {
    abi = Build.SUPPORTED_ABIS[0];
}

可能的值为 armeabiarmeabi-v7aarm64-v8ax86x86_64mipsmips64 .

如您所见,可能的结果数量远低于System.getProperty,您可以直接查看armeabi