我正尝试在 Android 应用程序上运行符号测试以收集一些信息,例如执行树。因此我想在 JVM 而不是模拟器中运行它,因为有很多用于 Java 应用程序的现有符号测试工具。
我尝试运行 HelloAndroid,这是一个示例应用程序,通过
在 TextView 上输出“Hello Android”java -cp ./ -cp $ANDROID_LIB/android.jar HelloAndroid.class
其中 HelloAndroid.class 是在转换为 .dex 之前编译的 Java 类。但是 JVM 一直在提示
Exception in thread "main" java.lang.NoClassDefFoundError: HelloAndroid/class
Caused by: java.lang.ClassNotFoundException: HelloAndroid.class
我很困惑,因为我已经指定了 HelloAndroid 类。并且源代码中没有复杂的声明或调用Android库:
package com.example.helloandroid;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class HelloAndroid extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView tv = new TextView(this);
tv.setText("Hello, Android");
setContentView(tv);
}
}
我是 Android 的新手,正在努力让这个小应用程序在 JVM 中执行。那么请你给我一些建议好吗?我想知道我的方法是否正确,我的意思是尝试在 JVM 中执行简单的应用程序?谢谢!
最佳答案
Android 应用程序的编译方式与 Java 应用程序不同。 Android 应用程序被编译为 .dex 文件,而常规 Java 应用程序被编译为 jar 文件;两者都无法相互兼容。
目前最接近在 PC 上运行 Android 应用程序的是 Android 模拟器。
所以回答你的问题,不,在 Oracle 的 JVM 中运行 Android 应用程序是不可能的。
关于java - 是否可以在 JVM 中运行 Android 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7701047/