哪个部署的jar包含android.os.SystemClock?

时间:2014-11-15 10:27:40

标签: java android command-line jar

我正在尝试使用these instructions在dalvikvm上运行一个简单的命令行java应用程序。我以root身份运行,因此它不是权限问题。

以下是应用程序代码:

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());
    }
}

当我在dalvikvm上运行时,收到以下错误消息:

java.lang.NoClassDefFoundError: android.os.SystemClock
        at MWE.main(MWE.java:8)
        at dalvik.system.NativeStart.main(Native Method)

这是我运行的命令,适用于上述应用程序的正常Hello World版本。

/system/bin/dalvikvm -Xbootclasspath:/system/framework/core.jar -classpath /data/local/tmp/MWE.jar MWE

我目前的结论是android.os.SystemClock不住在core.jar内。我推测性地尝试添加framework.jarframework-res.jar,但我也遇到了相同的错误。

  1. /system/framework下的哪个坛子持有班级android.os.SystemClock
  2. 一般情况下,是否有一个地方为Android中已部署的jar提供了一个类到jar的映射?

1 个答案:

答案 0 :(得分:1)

在我的设备(HTC One M8)上,android.os.SystemClock位于/system/framework/framework3.jar中。我认为框架被分成多个jar,因为classes.dex上有65k方法限制。 android.os.SystemClock可能在不同的Android设备上的不同jar中。

我曾经找到android.os.SystemClock所在的步骤:

adb pull /system/framework/<filename>.jar

然后我将classes.dex反编译为一个带DexToJar的jar并使用JD-GUI查看jar中的包(你可以将它打开为ZIP文件,jd-gui不是必需的仅限Windows)