是否可以确定当前的VM是Java SE还是Dalvik?

时间:2013-03-11 19:15:01

标签: java android

我希望实现这样的东西:

if(isJavaVirtualMachine()){
    System.out.println("You are running on a JVM");
}else if(isDalvikVirtualMachine()){
    Log.i("env","You are running on an android.");
}

有可能吗?如果Java本身不可能,我可以通过JNI进行吗?

2 个答案:

答案 0 :(得分:10)

使用System.getProperty。 Dalvik的属性名称记录为here

答案 1 :(得分:2)

正如ykaganovich指出的那样,在运行时区分普通Java和Android应该很容易。 另一个问题是在普通的Java环境中你不会有像 Log 这样的Android特定类,所以你会在运行时遇到问题! 一种可能的解决方案是使用反射来组装特定于平台的适配器,因此您只能在运行时引入依赖关系(可能有些棘手)。