Dalvikvm:在Android平台上执行.class文件

本文介绍如何将标准Java类文件转换为适用于Android平台Dalvik虚拟机的DEX格式,并演示了从源代码到最终在Android设备上运行的具体步骤。

Dalvikvm是Google为Android平台设计的Java虚拟机,但是Dalvikvm不能直接执行PC上编译出来的.class文件,需要使用'dx'将其转换为Dalvikvm能识别的格式。

下面使用HelloAndroid.java为例说明这一过程

HelloAndroid.java

public class HelloAndroid
{
	public static void main(String[] args)
	{
		System.out.println("Hello Android");
	}
}
1. 在PC上使用javac编译HelloAndroid.java,得到HelloAndroid.class

javac HelloAndroid.java

2. 使用'dx'将HelloAndroid.class转换为dex格式

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


3. 在Android平台上执行HelloAndroid

root@rk3288:/system # dalvikvm -cp ./HelloAndroid.jar HelloAndroid
Hello Android
root@rk3288:/system #


说明:

1. dx的位置:$(ANDROID_SDK)\build-tools\23.0.3(Windows平台下)






这是com.oplus.location进程的一个调用堆栈他频繁GC回收"--------------------------------------------------------------------------------------------------------------- Total: 2,834,104 Count: 81,337 Avg: 34.8 Percent: 96.66% --------------------------------------------------------------------------------------------------------------- java.lang.Throwable.nativeGetStackTrace(Native method) java.lang.Throwable.getOurStackTrace(Throwable.java:869) java.lang.Throwable.printStackTrace(Throwable.java:686) java.lang.Throwable.printStackTrace(Throwable.java:753) com.amap.location.support.n.a.b(ALLog.java:98) com.amap.location.support.n.a.a(ALLog.java:47) com.amap.location.c.a.b.a(LocationDbHelper.java:337) com.amap.location.c.a.b.a(LocationDbHelper.java:157) com.amap.location.k.d.a.a.a(DBProvider.java:139) com.amap.location.k.d.d.d$a.a(DataTunnel.java:166) com.amap.location.k.c.a.d(SaveController.java:254) com.amap.location.k.c.a.b(SaveController.java:244) com.amap.location.k.c.a.a(SaveController.java:177) com.amap.location.k.d.d.d.a(DataTunnel.java:88) com.amap.location.k.d.a.a(UpTunnelContainer.java:121) com.amap.location.k.d.c$b.a(UpTunnelManager.java:217) com.amap.location.c.b.a$1.handleMessage(AmapHandlerImpl.java:32) android.os.Handler.dispatchMessage(Handler.java:112) android.os.Looper.loopOnce(Looper.java:288) android.os.Looper.loop(Looper.java:393) android.os.HandlerThread.run(HandlerThread.java:85) --------------------------------------------------------------------------------------------------------------- Total: 97,920 Count: 2,808 Avg: 34.9 Percent: 3.34% --------------------------------------------------------------------------------------------------------------- java.lang.Throwable.nativeGetStackTrace(Native method) java.lang.Throwable.getOurStackTrace(Throwable.java:869) java.lang.Throwable.printStackTrace(Throwable.java:686) java.lang.Throwable.printStackTrace(Throwable.java:753) com.amap.location.support.n.a.b(ALLog.java:98) com.amap.location.support.n.a.a(ALLog.java:47) com.amap.location.c.a.b.a(LocationDbHelper.java:337) com.amap.location.c.a.b.a(LocationDbHelper.java:157) com.amap.location.k.d.a.a.a(DBProvider.java:139) com.amap.location.k.d.d.d$a.a(DataTunnel.java:166) com.amap.location.k.c.a.d(SaveController.java:254) com.amap.location.k.c.a.a(SaveController.java:213) com.amap.location.k.c.a.a(SaveController.java:17) com.amap.location.k.c.a$1.a(SaveController.java:126) com.amap.location.c.b.a$1.handleMessage(AmapHandlerImpl.java:32) android.os.Handler.dispatchMessage(Handler.java:112) android.os.Looper.loopOnce(Looper.java:288) android.os.Looper.loop(Looper.java:393) android.os.HandlerThread.run(HandlerThread.java:85) " 总申请内存2,932,024K 堆栈索引"java.lang.Throwable.nativeGetStackTrace(Native method) java.lang.Throwable.getOurStackTrace(Throwable.java:869) java.lang.Throwable.printStackTrace(Throwable.java:686) java.lang.Throwable.printStackTrace(Throwable.java:753) com.amap.location.support.n.a.b(ALLog.java:98) com.amap.location.support.n.a.a(ALLog.java:47) com.amap.location.c.a.b.a(LocationDbHelper.java:337) com.amap.location.c.a.b.a(LocationDbHelper.java:157) com.amap.location.k.d.a.a.a(DBProvider.java:139) com.amap.location.k.d.d.d$a.a(DataTunnel.java:166) " 找一下那个函数或者方法有问题
最新发布
07-23
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值