java - 如何将 `odex` 文件添加到 dalvikvm 的类路径?

标签 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.SystemClockframework.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 的类路径?

最佳答案

你有没有尝试过:

/system/bin/dalvikvm -classpath /data/local/tmp/MWE.jar MWE

据我所知,在这种情况下,它将从 BOOTCLASSPATH 环境变量中提取引导类路径,该变量应该已经包含 core.jar 和 framework.jar。

但是,我怀疑这实际上会导致 UnsatisfiedLinkError 异常,因为不会加载在 SystemClock 中实现某些 native 方法的 JNI 库。

在这种情况下,有一个 handy utility class可用,应加载 native 库。

dalvikvm -classpath /data/local/tmp/MWE.jar com.android.internal.util.WithFramework MWE

关于java - 如何将 `odex` 文件添加到 dalvikvm 的类路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26953116/

相关文章:

java - 使用 Struts 2 通配符配置时如何返回 404 错误?

java - http ://www. ch-werner.de/javasqlite SQlite 的 Java 包装库指南?

java - junit 检测测试是否是唯一运行的一个

java - 如何使用for循环删除ArrayList中的数据

java - Dalvik VM 错误 : Exception found "Javax.xml.namespace.QName.class"

android - 你将如何改进 Dalvik? Android的虚拟机

java - 按字符串长度降序对字符串列表进行排序,不会更改列表

java - 使用 Appium 库在 android studio 中构建 gradle 文件时出错

java - Android 主线程 Looper 关注点

Android 理解堆大小