2013-03-11 9 views
5

Vorrei implementare qualcosa di simile a questo:è possibile determinare se l'attuale VM è Java SE o Dalvik?

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

E 'possibile? Se è impossibile da Java stesso, posso farlo da JNI?

risposta

10

Utilizzare System.getProperty. I nomi delle proprietà di Dalvik sono documentati here

2

Come ha sottolineato ykaganovich, dovrebbe essere abbastanza facile distinguere tra Java normale e Android in fase di esecuzione. L'altro problema è che non avrai classi specifiche per Android come Log in un semplice ambiente Java, quindi ti imbatterai in problemi in fase di esecuzione! Una possibile soluzione sarebbe quella di assemblare adattatori specifici della piattaforma usando il reflection, così si inseriscono le dipendenze solo in fase di runtime (potrebbe essere alquanto complicato).

+0

Un buon punto. Grazie! – Will

Problemi correlati