如何在dalvikvm的类路径中添加`odex`文件?

时间:2014-11-16 02:33:54

标签: java android dalvik

这个问题是我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的类路径中?

1 个答案:

答案 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