博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在Android中启动执行java程序
阅读量:4125 次
发布时间:2019-05-25

本文共 2060 字,大约阅读时间需要 6 分钟。

原文链接: or

1. 在Android中启动执行java程序

在pc上源代码Hello.java通过javac编译生成Hello.class,通过java命令启动java虚拟机解析执行.

Hello.java

class Hello {
public static void main(String args[]) {
System.out.println("hello java!"); }}

编译:

$ javac Hello.java$ java Hellohello java!

在Android平台上虚拟机是goole公司自己设计的Dalvik vm,dex是Android平台上(Dalvik 虚拟机)的可执行文件,

因此需要 Hello.java —(javac 编译)–>Hello.class —(dx转换)–> dex格式。

以下提供两种方法实现java程序在android中执行。

1.1 方法一

1.1.1 编译:

$ javac Hello.java$ dx --dex --output=Hello.jar Hello.class$ lsHello.class  Hello.jar  Hello.java

注意 dx命令需要android工程 . build 和 lunch 配置环境变量后才能找到此命令,能够执行。

1.1.2 执行:

C:\Users\lisongze>adb push Z:\Android\frameworks\testing\javatest\Hello.jar /dataC:\Users\lisongze> adb shellroot@8860cp0:/ # dalvikvm -cp /data/Hello.jar Hellodalvikvm -cp /data/Hello.jar Hellohello java!或者:root@8860cp0:/ #  CLASSPATH=/data/Hello.jar app_process . Hello CLASSPATH=/data/Hello.jar app_process . Hellohello java!

1.2 方法二

放入Android源码工程中编译成可执行文件,这里参考frameworks/base/cmds/am/Android.mk

1.2.1 增加 Android.mk和test文件

test

#!/system/bin/sh## Script to start "am" on the device, which has a very rudimentary# shell.#base=/systemexport CLASSPATH=$base/framework/hello.jarexec app_process $base/bin Hello "$@"

# Copyright 2008 The Android Open Source Project#LOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)LOCAL_SRC_FILES := $(call all-subdir-java-files)LOCAL_MODULE := helloinclude $(BUILD_JAVA_LIBRARY)include $(CLEAR_VARS)LOCAL_MODULE := javatestLOCAL_SRC_FILES := testLOCAL_MODULE_CLASS := EXECUTABLESLOCAL_MODULE_TAGS := optionalinclude $(BUILD_PREBUILT)

1.2.2 编译

lisongze@svr04:~/Andriod/frameworks/testing/javatest$ lsAndroid.mk  Hello.java  testlisongze@svr04:mm -B

编译生成以下两个文件:

out/target/product/mobile/system/framework/hello.jar

out/target/product/mobile/system/bin/javatest

1.2.3 执行

adb push hello.jar /system/frameworkadb push javatest /system/bin/adb shellroot@8860cp0:/ # javatestjavatesthello java!或者:root@8860cp0:/ #  CLASSPATH=/system/framework/hello.jar app_process . Hello CLASSPATH=/system/framework/hello.jar app_process . Hellohello java!

转载地址:http://sglpi.baihongyu.com/

你可能感兴趣的文章
在Eclipse中查看Android源码
查看>>
Android使用webservice客户端实例
查看>>
层在页面中的定位
查看>>
[转]C语言printf
查看>>
C 语言 学习---获取文本框内容及字符串拼接
查看>>
C 语言学习 --设置文本框内容及进制转换
查看>>
C 语言 学习---判断文本框取得的数是否是整数
查看>>
C 语言 学习---ComboBox相关、简单计算器
查看>>
C 语言 学习---ComboBox相关、简易“假”管理系统
查看>>
C 语言 学习---回调、时间定时更新程序
查看>>
C 语言 学习---复选框及列表框的使用
查看>>
第四章 - 程序计数器
查看>>
第七章 - 本地方法栈
查看>>
第十一章 - 直接内存
查看>>
JDBC核心技术 - 上篇
查看>>
JDBC核心技术 - 下篇
查看>>
一篇搞懂Java反射机制
查看>>
【2021-MOOC-浙江大学-陈越、何钦铭-数据结构】树
查看>>
MySQL主从复制不一致的原因以及解决方法
查看>>
RedisTemplate的key默认序列化器问题
查看>>