在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 HelloCLASSPATH=/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.PackCLASSPATH=/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 := packinclude $(BUILD_JAVA_LIBRARY)

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

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

启动方式的差别:

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

 

转载于:https://www.cnblogs.com/ynxf/p/6923639.html

更多相关文章

  1. 手机cpu厂商和手机cpu架构
  2. 如何用同一份代码产生不同包名得APK包
  3. Android(安卓)SDK 2.3与Eclipse最新版开发环境搭建(五)
  4. Android(安卓)Studio NDK 入门教程(7)--被NDK支持的C++运行库
  5. Android(安卓)Studio 1.5.1 JNI 编程
  6. Android(安卓)运行时找不到类:java.lang.NoClassDefFoundError
  7. Android(安卓)单元测试: 首先,从是什么开始
  8. Genimotion 解决 INSTALL_FAILED_CPU_ABI_INCOMPATIBLE问题
  9. Android-JUnit

随机推荐

  1. 继承FlexboxLayout自定义可自动换行的tag
  2. Android Activity的onCreate()函数
  3. Android Studio 3.4.1 下拉刷新 SwipRefr
  4. Android PopupMenu-点击按钮弹出下拉框
  5. (Android下使用)Google Test C++单元测试
  6. Android Studio常见问题处理
  7. Oprofile 移植到Android
  8. android 监听键盘是否弹起,并根据键盘的弹
  9. 几本二手书出售Android/WP/设计模式算法
  10. android 获取屏幕宽高