使用 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
获得相同的值。例如,可能的值为 armv5t
、armv5te
、armv5tej
、armv5tejl
、armv6
、armv7
、armv7l
、i686
等等。 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];
}
可能的值为 armeabi
、armeabi-v7a
、arm64-v8a
、x86
、x86_64
、mips
、mips64
.
如您所见,可能的结果数量远低于System.getProperty
,您可以直接查看armeabi
。
我在一些旧的 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
获得相同的值。例如,可能的值为 armv5t
、armv5te
、armv5tej
、armv5tejl
、armv6
、armv7
、armv7l
、i686
等等。 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];
}
可能的值为 armeabi
、armeabi-v7a
、arm64-v8a
、x86
、x86_64
、mips
、mips64
.
如您所见,可能的结果数量远低于System.getProperty
,您可以直接查看armeabi
。