我正在尝试使用 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.jar
和 framework-res.jar
,但我得到了同样的错误。
/system/framework
下的哪个 jar 包含android.os.SystemClock
类?- 一般来说,Android 中是否有一个地方可以为已部署的 jar 提供类到 jar 的映射?
最佳答案
在我的设备 (HTC One M8) 上,android.os.SystemClock 位于/system/framework/framework3.jar 中。我相信由于classes.dex 上的65k 方法限制,框架被分成了多个jar。 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)
关于java - 哪个部署的 jar 包含 android.os.SystemClock?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26944851/