2014-11-15 141 views
0

我正尝试使用these instructions在dalvikvm上运行一个简单的命令行java应用程序。我以root身份运行,因此它不是权限问题。哪个部署jar包含android.os.SystemClock?

这里是应用程序代码:

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的映射?
+0

它应该在android - *。jar? – SMA

+0

Android.jar在我的手机上存在多个部分。那个罐子只在电脑上一片。 – merlin2011

+0

它存在于你的类路径中吗?我假设没有。 – SMA

回答

1

在我的设备(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一个罐子,用JD-GUI看罐子里面的包(你可以只开启它作为一个ZIP文件,jd-gui不是必需的,仅适用于windows)

+0

我在Galaxy S4上,该类似乎只在'framework.odex'中。有关如何将odex放入类路径的任何想法? – merlin2011

相关问题