Android系统执行Java jar程序 -- dalvik运行dex Java工程
本文仅针对纯java工程执行进行诠释,一般在PC平台作为jar包形式存在,在Android平台则以dex包形式存在。
Java属于高级程序语言,Java程序需要运行在特定的虚拟机中,虚拟机将Java字节码转换成对应的机器指令进行执行。不同平台具有不同的虚拟机对应各自的机器指令。PC端一般使用JVM虚拟机,Android端使用dalvik虚拟机。
需要配置环境:
- Java JDK开发环境
- idea开发工具
- Android SDK开发环境
- Android build-tools 环境变量(随意指定一个版本即可)
JVM于dalvik
JVM:Pc平台java虚拟机,为java应用执行提供执行环境。
dalvik:Android平台Java虚拟机,为java应用提供运行环境,区别于jvm字节码。
Java程序执行
PC执行
idea配置可执行jar包
1、创建Java工程
2、idea选择 file->project structure -> Artifacts() -->点击+ 后选择JAR -> from module with dependencies
3、配置编译的module、指定入口类(必须覆写main方法)
4、修改Directory for META-INF/MAINFEST.MF:去除其中的main (例如:E:\CloudFiles\project\TestJar\testlib\src\META-INF\MANIFEST.MF)
打包并执行
1、选择build -> Build Artifacts -> 弹窗内选择build 即开始打jar包,jar包输出路径为 \out\artifacts\moduleName
2、运行jar包时会通过指定的java类执行,执行命令如下:
java -jar E:\test.jar
Android 执行
在Android平台执行Java程序需要依赖dalvik虚拟机,因此需要将jar包转换为对应的字节码文件,操作步骤如下:
1、生成java jar包 同Pc执行
3、java jar包转dex包,执行如下命令
dx --dex --output=test.dex E:\test.jar
4、连接Android手机,并将dex执行程序推入Android设备路径下:
adb push E:\test.dex /data/local/tmp/
5、通过dalvik命令执行dex程序,程序通过指定的入口Java类的main方法开始执行
dalvikvm -cp /data/local/tmp/test.dex com.qihoo.trace.TestMain