这个问题是我earlier question的后续问题。
以下是该问题的相同例子。
import android.os.SystemClock;
/**
* Command that sends key events to the device, either by their keycode, or by
* desired character output.
*/
public class MWE {
public static void main(String[] args) {
System.out.println(SystemClock.uptimeMillis());
}
}
在我查看/system/framework
目录后,我发现我的手机android.os.SystemClock
中定义了班级framework.odex
。我自然尝试了以下两个命令来尝试访问它。
/system/bin/dalvikvm -Xbootclasspath:/system/framework/core.jar -classpath /system/framework/framework.odex:/data/local/tmp/MWE.jar MWE
/system/bin/dalvikvm -Xbootclasspath:/system/framework/core.jar:/system/framework/framework.odex -classpath /data/local/tmp/MWE.jar MWE
但是,它们都导致了无法找到类定义的相同错误消息。
如何将此类odex
文件添加到dalvikvm的类路径中?
答案 0 :(得分:2)
您是否尝试过:
/system/bin/dalvikvm -classpath /data/local/tmp/MWE.jar MWE
据我所知,在这种情况下,它将从BOOTCLASSPATH环境变量中引入引导类路径,该变量应该已经包含core.jar和framework.jar。
但是,我怀疑实际上会导致UnsatisfiedLinkError异常,因为不会加载实现SystemClock中某些本机方法的JNI库。
在这种情况下,有一个handy utility class可用于加载本机库。
dalvikvm -classpath /data/local/tmp/MWE.jar com.android.internal.util.WithFramework MWE