Android系统执行Java jar程序 -- dalvik运行dex Java工程

本文仅针对纯java工程执行进行诠释,一般在PC平台作为jar包形式存在,在Android平台则以dex包形式存在。

Java属于高级程序语言,Java程序需要运行在特定的虚拟机中,虚拟机将Java字节码转换成对应的机器指令进行执行。不同平台具有不同的虚拟机对应各自的机器指令。PC端一般使用JVM虚拟机,Android端使用dalvik虚拟机。

需要配置环境:
  1. Java JDK开发环境
  2. idea开发工具
  3. Android SDK开发环境
  4. 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

原文地址:https://www.cnblogs.com/walker-world/p/9548042.html

时间: 2024-10-28 11:01:20

Android系统执行Java jar程序 -- dalvik运行dex Java工程的相关文章

android 系统构架和应用程序目录结构分析

一.Android系统构架 Android系统从底向上一共分了4层,每一层都把底层实现封装,并暴露调用接口给上一层. Linux内核(Linux Kernel) Android运行在linux kernel 2.6之上,但是把linux内受GNU协议约束的部分做了取代,这样在Android的程序可以用于商业目的. Linux 内核是硬件和软件层之间的抽象层. 中间件 中间件包括两部分:核心库和运行时(libraries & Android runtime) 核心库包括,SurfaceManage

Android系统默认Home应用程序(Launcher)的启动过程源码分析

在前面一篇文章中,我们分析了Android系统在启动时安装应用程序的过程,这些应用程序安装好之后,还须要有一个Home应用程序来负责把它们在桌面上展示出来,在Android系统中,这个默认的Home应用程序就是Launcher了,本文将详细分析Launcher应用程序的启动过程. Android系统的Home应用程序Launcher是由ActivityManagerService启动的,而ActivityManagerService和PackageManagerService一样,都是在开机时由

Android系统默认Home应用程序(Launcher)的启动过程源代码分析

在前面一篇文章中,我们分析了Android系统在启动时安装应用程序的过程,这些应用程序安装好之后,还需要有一个 Home应用程序来负责把它们在桌面上展示出来,在Android系统中,这个默认的Home应用程序就是Launcher了,本文将详细分析 Launcher应用程序的启动过程. Android系统的Home应用程序Launcher是由ActivityManagerService启动的,而 ActivityManagerService和PackageManagerService一样,都是在开

自己动手清除Android系统中的不良程序

陈跃峰 2014/6/29 最近在使用我的Nexus7时,总是经常莫名其妙的弹出一些广告弹窗,还会自动下载一些应用程序,还会在桌面上生成一个叫做"精彩应用"的图标,这个快捷方式关联的程序显示的内容和广告内容是一致的,很是烦人,使用360手机卫士和乐安全都发现不了这个不良程序,所以就自己动手来清除这个程序. 由于Nexus 7平时用于测试程序,安装的应用很多,手动删除了一些可疑的应用以后还是不行,猜测是某些app可能被人篡改了,就不再去删除app了,而把目光转向了桌面快捷方式上. 既然生

linux_后台启动多个java -jar 程序,及关闭

启动脚本 startup.sh #!/bin/bash x=$(($1)) while (($x>0)) do java -jar /home/chenpenghui/crawler/crawler-hb/StartUpIp.jar & sleep 3 x=$(($x-1)) done 线程数 等于 输入值 启动如下 ./startup.sh 10 停止脚本 clean.sh #!/bin/bash kill -9 `ps ax|grep /home/chenpenghui/crawler/

创建可执行的JAR包并运行

将一个应用程序制作成可执行的JAR包,通过JAR包来发布应用程序.创建可执行JAR包的关键在于:让java -jar命令知道JAR包中哪个类是主类,java -jar命令可以通过运行该主类来运行程序.注意:当创建JAR包时,所有的类(即class文件)都必须放在与包结构对应的目录结构中 1.选择想要想要打包的目录 想要打包class文件目录day和程序需要调用的文件目录planeday11是Client类的包名,里面存放着Client.class 2.进入预打包目录所在路径(注意:是要打包目录的

CAA 帮助文档html中Java搜索程序不能运行

主要原因是由于当前的Java 版本太高造成的,需要卸载掉高版本Java之后,再安装Jre1.6版本. 安装完成之后需要检查环境变量: 1)JAVA_HOME  C:\Program Files (x86)\Java\jdk1.6.0_02 2) Path 中加入%JAVA_HOME%\lib;%JAVA_HOME%\bin; 但是我在安装完这一切之后,还是不能运行.再检查IE的加载选项,打开IE的"管理加载项"窗口后,发现"Sun Java Console"被禁用了

IntelliJ IDEA 运行你的第一个Java应用程序 idea运行main方法

IntelliJ IDEA 运行你的第一个Java应用程序 创建项目让我们创建一个简单的Java Hello World项目. 单击创建新的项目. 打开新建项目向导. 你应该注意的主要是项目的SDK.SDK(软件开发套件)是一套软件开发工具,可以让你更快的开发应用程序.IntelliJ IDEA的不包括SDK,所以如果你有没有,下载并安装它.因为我们做一个Java项目,我们需要一个Java SDK(JDK). 安装完毕后,单击新建,指向JDK的安装文件夹. 在新建项目向导,你可以选择你的项目支持

Linux系统中启动jar程序

使用nohup启动程序 启动程序命令:nohup java -jar ShangDongNengyuan.jar & 关闭程序命令一般使用杀死进程方法关闭 查看进程ps -ef|grep java杀死进程kill -9 port //port为查看进程中的端口号 查看已知文件位置 find / -name name //后面的name是文件的名字 查看nohup日志 //查看nohup运行日志tail -f nohup.out //查看tomcat日志tail -f catalina.out 原