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

标签 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 下的哪个 jar 包含 android.os.SystemClock 类?
  2. 一般来说,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/

相关文章:

java - java.nio.channels.FileChannel.size() 对于大文件来说速度快吗?

java - 在 Java 中将半带和全带 CJK 拉丁字符转换为 ASCII

android - drawBitmap 不是全屏

安卓:应用安装失败

java - 如何从命令行执行 Junit 测试用例

java - Gradle 测试,详细运行?

java - 在JSP中从java脚本调用java代码

java - FitNesse 与 Jenkins : BindException - Possible port clash?

java - 在 Android 应用程序中使用 Retrofit Builder 时出错 : java. lang.NoSuchMethodError:没有静态方法元工厂

shell - 在 ZSH 中使用陷阱退出 shell 脚本的正确方法?