在Android OS中,我能够运行在桌面环境下编译的几个Java JAR文件。例如,jtransforms
我可以知道为什么会这样吗?我认为来自Oracle的JVM和来自Google的Dalvik VM使用两种不同的字节代码格式?为什么Java SE编译的JAR文件能够在Android中执行?
答案 0 :(得分:6)
我假设你只是在你的android项目中包含jar文件?然后它工作,因为在构建过程中它被转换(对你自己的类文件也是如此!)到dex格式。这是通过dex(dx)工具完成的。在eclipse中使用ADT会自动为您完成。它当然也可以在android sdk中手动使用:
在android-sdk-windows\platform-tools\dx.bat
下,如果在Windows上。
答案 1 :(得分:1)
根据维基百科,dx
用于将已编译的.class
文件转换为.dex
格式。
答案 2 :(得分:0)
1. Java SE
-
Java (Swing + AWT)
= Android
2。In 2005, when Java was undergoing changes, Android creator didnt wanted to base Android
totally on Java
。 So they included JVM as the 1st compilation unit, thats the reason
JRuby , Jython, etc can be used to write Android apps
。 And 2nd Compilation unit as Dalvik
Compiler
。
3. So its quite natural that a jar file compiled under desktop environment works fine on Android.