在linux上运行java程序,直接用javac编译,再用java运行就行了。但是在Android上,由于虚拟机和pc端的不同,所以操作方法也是不一样的。

如果想在Android上运行Hello world!。则需要一下步骤。

/* File Name: Hello.java */
public class Hello
{
public static void main(String[] args) {
System.out.println("Hello world!");
}
}

首先在pc上编译:   javac Hello.java

生成  Hello.class 文件。

然后执行下面的指令(Hello.class保存在/work目录下):

dx --dex --output=Hello.jar Hello.class

(如果提示找不到dx指令,则需要设置一下环境变量。 . setenv)

生成Hello.jar文件。

在Android系统的控制台上,运行下面指令中的一个即可运行java程序。

dalvikvm -cp /mnt/Hello.jar Hello
CLASSPATH=/mnt/Hello.jar app_process ./ Hello

当涉及到多个文件时:

/* File Name: Pack.java */
package a.b.c.d; public class Pack
{
public static void main(String[] args) {
System.out.println("Pack Java!");
}
}

运行指令:

javac Pack.java -d .  //在当前目录下生成 a/b/c/d/Pack.class
java a.b.c.d.Pack    //在pc上运行 
dx --dex --output=pack.jar ./
dalvikvm -cp /mnt/pack.jar a.b.c.d.Pack
CLASSPATH=/mnt/pack.jar app_process ./ a.b.c.d.Pack

如果涉及到多个文件,则可以借助Android.mk来实现。

/*
File Name:Android.mk
参考: frameworks/base/cmds/am/Android.mk
*/
LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(call all-subdir-java-files)
LOCAL_MODULE := pack
include $(BUILD_JAVA_LIBRARY)

把代码放到 framework/testing目录下。,然后执行 mmm . 命令。 会生成一个 pack.jar

用 dalvikvm 或  app_process 两种启动方式来运行。

启动方式的差别:

app_proces会创建两个Binder线程: Binder_1, Binder_2

Android驱动入门-在Android系统上运行JAVA程序的更多相关文章

  1. 原生态在Hadoop上运行Java程序

    第一种:原生态运行jar包1,利用eclipse编写Map-Reduce方法,一般引入Hadoop-core-1.1.2.jar.注意这里eclipse里没有安装hadoop的插件,只是引入其匝包,该 ...

  2. 腾讯云上运行java程序过程

    1: 购买服务器(腾讯云,阿里云等) 2:安装centos操作系统: 3:安装jdkhttp://www.cnblogs.com/Amos-Turing/p/7403696.html 4:安装数据库( ...

  3. 在Android上运行Java和C程序

    在linux上运行java程序,直接用javac编译,再用java启动虚拟机运行就行了.但是在Android上,由于虚拟机和pc端的不同,所以操作方法也是不一样的.下面介绍Android上运行Hell ...

  4. JAVA设置环境变量和在DOS下运行java程序

    在学校实训的这几天,老师带着我们开始深入的复习java.这是第一天的内容哦 对于“JAVA设置环境变量和在DOS下运行java程序”,许多初学者是陌生的,但了解这个却对后期的学习很重要. http:/ ...

  5. [译]:Xamarin.Android开发入门——Hello,Android深入理解

    返回索引目录 原文链接:Hello, Android_DeepDive. 译文链接:Xamarin.Android开发入门--Hello,Android深入理解 本部分介绍利用Xamarin开发And ...

  6. [译]:Xamarin.Android开发入门——Hello,Android Multiscreen深入理解

    原文链接:Hello, Android Multiscreen_DeepDive. 译文链接:Xamarin.Android开发入门--Hello,Android Multiscreen深入理解. 本 ...

  7. [译]:Xamarin.Android开发入门——Hello,Android快速上手

    返回索引目录 原文链接:Hello, Android_Quickstart. 译文链接:Xamarin.Android开发入门--Hello,Android快速上手 本部分介绍利用Xamarin开发A ...

  8. [转]C#程序无法在64位系统上运行之.NET编译的目标平台

    今天将编译的C#的exe拷贝到测试机上(Win7_64bit),一运行就挂了,提示“stop working”,一开始怀疑测试机上没有安装.net framework框架,追究半天原来是编译的目标平台 ...

  9. 【Android学习入门】Android studio基本设置

    1.背景设置 依次选择File->Settings-->Appearance & Behaviour->Apprearance,然后勾选 show line number. ...

随机推荐

  1. Fiddler 4 断点调试(修改response请求参数)

    1.选择测试链接 2. 2然后点击规则的Automatic Breakpoints 的 After Responses 3.然后重新发起请求并找到链接 4.然后修改数据 5.最终效果

  2. node-sass版本问题

    node-sass sass-loader的问题 出现了版本的问题 版本太高 版本不兼容解决方法: cnpm i node-sass@4.14.1 cnpm i sass-loader@7.3.1 - ...

  3. 第15.35节 PyQt编程实战:结合QDial实现的QStackedWidget堆叠窗口程序例子

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.案例说明 本案例是老猿在学习QStackedWidget中的一个测试案例,该案例使用QStack ...

  4. 第10.5节 使用__all__定义Python模块导入白名单

    一. 引言 <第10.4节 Python模块的弱封装机制>介绍了Python模块的的弱封装机制,除了使用弱封装机制来从一定程度上防止导入特定成员外,Python模块中还提供可另外一种类似白 ...

  5. Hbase 2.2.2 安装、配置(兼容 Hadoop 3.1.3)

    准备 Hbase 2.2.2 安装包 下载链接 链接:https://pan.baidu.com/s/1TqEry-T7sYpq4PdhgLWdcQ 提取码:de5z 安装 上传到虚拟机上,之后解压即 ...

  6. Django链接mysql数据库报错1064

    D:\PycharmProjects\autotest>python manage.py makemigrations django.db.utils.ProgrammingError: (10 ...

  7. js- 对象的连续调用

    var jack = { somke : function (){ console.log('I was in the somkeing...cool..'); return this; }, dri ...

  8. Day1 字符串格式化

    1.占位符方式:占位符: %d 整数 %012d 数字位数至少长度为12位,不足的前面加0填充. >>> 'Hello,%s,%012d' % ('a',12345678901234 ...

  9. MobaXterm无法退格删除

    MobaXterm退格删除出现^H,总是要取消输入重新敲语句,很麻烦 解决方法:打开MobaXterm-->settings-->Configuration,把"Backspac ...

  10. Restful规则及JPA导致内存溢出

    HTTP动词 对于资源的具体操作类型,由HTTP动词表示. 常用的HTTP动词有下面五个(括号里是对应的SQL命令). GET(SELECT):从服务器取出资源(一项或多项). POST(CREATE ...