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
Android系统执行Java jar程序 -- dalvik运行dex Java工程的更多相关文章
- Android入门学习:Android 系统框架及应用程序执行过程
Android基础知识学习 新手上路,还请多多帮助.由于初学,博客内容难免有不正确的地方,还请各位多多指教,相互学习! 主要内容: 1.Android层次架构及主要功能 2.Android编程模型,程 ...
- Android系统默认Home应用程序(Launcher)的启动过程源码分析
在前面一篇文章中,我们分析了Android系统在启动时安装应用程序的过程,这些应用程序安装好之后,还须要有一个Home应用程序来负责把它们在桌面上展示出来,在Android系统中,这个默认的Home应 ...
- Android系统默认Home应用程序(Launcher)的启动过程源代码分析
在前面一篇文章中,我们分析了Android系统在启动时安装应用程序的过程,这些应用程序安装好之后,还需要有一个 Home应用程序来负责把它们在桌面上展示出来,在Android系统中,这个默认的Home ...
- android系统中如何通过程序打开某个AccessibilityService
android系统中如何通过程序打开某个AccessibilityService(系统辅助服务)? 通常的做法是注册AccessibilityService(辅助服务)后跳转到设置启动服务页面引导用户 ...
- Windows系统中设置Python程序定时运行方法
Windows系统中设置Python程序定时运行方法 一.环境 win7 + Python3.6 二.步骤 1,在Windows开始菜单中搜索“计划任务”,并且点击打开“计划任务”: 2.点击“创建基 ...
- 创建可执行的JAR包并运行
将一个应用程序制作成可执行的JAR包,通过JAR包来发布应用程序.创建可执行JAR包的关键在于:让java -jar命令知道JAR包中哪个类是主类,java -jar命令可以通过运行该主类来运行程序. ...
- IntelliJ IDEA 运行你的第一个Java应用程序 idea运行main方法
IntelliJ IDEA 运行你的第一个Java应用程序创建项目让我们创建一个简单的Java Hello World项目. 单击创建新的项目. 打开新建项目向导.你应该注意的主要是项目的SDK.SD ...
- linux_后台启动多个java -jar 程序,及关闭
启动脚本 startup.sh #!/bin/bash x=$(($)) )) do java -jar /home/chenpenghui/crawler/crawler-hb/StartUpIp. ...
- JAVA对于程序的运行的一种解说
main方法,正如注释所说,这是程序开始执行的第一行.对于一个Java应用程序来说,main方法是必需的,Java解释器在没有生成任何对象的情况下,以main作为入口来执行程序.每个类中可以定义多个方 ...
随机推荐
- Spark中的常用算子
更多有用的例子和算子讲解参见: http://homepage.cs.latrobe.edu.au/zhe/ZhenHeSparkRDDAPIExamples.html map是对每个元素操作, ma ...
- C++:运算符重载
运算符重载是一种形式的C++多态.运算符重载将重载的概念扩展到运算符上,允许赋予C++运算符多种含义.实际上,很多C++运算符已经被重载.eg:将*运算符用于地址,将得到存储在这个地址中的值,将他用于 ...
- IntelliJ Idea注释模板--类注释、方法注释
刚从Eclipse切换到IntelliJ Idea,之前使用eclipse时用到了注释模板,包括类注释和方法注释,现在分别讲一下在Intellij Idea中如何进行配置,作为备忘 一. 类注释模板配 ...
- Selenium自动化测试Python三:WebDriver进阶
WebDriver 进阶 欢迎阅读WebDriver进阶讲义.本篇讲义将会重点介绍Selenium WebDriver API的重点使用方法,以及使用模块化和参数化进行自动化测试的设计. WebDri ...
- 02-03:springboot 整合listener
1.通过注解扫描完成Listener组件的注册 1.1 编写listener /** * Springboot 整合listener */ import javax.servlet.ServletCo ...
- Android开发艺术探索学习笔记(六)
第六章 Android的Drawable Drawable的优点:使用简单,比自定义view的成本要低:非图片类型的Drawable占用空间小,有利于减小APK安装包的大小. 6.1Drawable ...
- css text-align文字两端对齐
text-align:start | end | left | right | center | justify | match-parent | justify-all justify: 内容两端对 ...
- 2016-06-14 发布 解决Centos7初次开机提示Initial setup of CentOS Linux 7 (core)
安装完成centos7后出现如下提示: Initial setup of CentOS Linux 7 (core) 1) [x] Creat user 2) [!] License informat ...
- WPF 中动态改变控件模板
在某些项目中,可能需要动态的改变控件的模板,例如软件中可以选择不同的主题,在不同的主题下软件界面.控件的样式都会有所不同,这时即可通过改变控件模板的方式实现期望的功能. 基本方法是当用户点击切换主题按 ...
- Spring Import注解
今天了解了,Spring @Import的使用 先贴上Spring官方关于Spring @Import注解的文档链接 https://docs.spring.io/spring/docs/3.0. ...