Android 4.4及以下的方式是去判断persist.sys.dalvik.vm.lib, 读取到是libart.so就是ART虚拟机,libdvm.so就是Dalvik虚拟机。
1|HWJSC-H:/ $ getprop | grep dalvik.vm.lib
[persist.sys.dalvik.vm.lib]: [libart.so]
5.0以后改为了persist.sys.dalvik.vm.lib.2, 所以不排除后续还是会改名比如3之类的。
最稳妥的是采用Google给出的标准方法:
通过调用 System.getProperty("java.vm.version") 来验证正在使用哪个运行时。如果使用的是 ART,则该属性的值为 "2.0.0" 或更高。比如我现在系统是Android 10,读到的值是2.1.0,以2开头即可判断是ART。