2013-03-11 2 views
5

私は何かを実装したいが、次のようになります現在のVMがJava SEかDalvikかを判別することは可能ですか?

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で対応できますか?

答えて

10

System.getPropertyを使用してください。 Dalvikのプロパティ名は文書化されていますhere

2

ykaganovichが指摘しているように、実行時にプレーンJavaとAndroidを区別するのはかなり簡単です。 もう1つの問題は、普通のJava環境にログのようなAndroid固有のクラスがないため、実行時に問題が発生することです。 考えられる解決策は、リフレクションを使用してプラットフォーム固有のアダプタをアセンブルすることです。したがって、実行時にのみ依存関係を取得します(ややこしいかもしれません)。

+0

良い点。ありがとうございました! – Will

関連する問題