2014-11-16 70 views
1

這個問題是我的earlier question的後續行動。如何將`odex`文件添加到dalvikvm的類路徑中?

下面是與該問題相同的示例。

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的類路徑中?

回答

2

你有沒有嘗試過:

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

據我所知,在這種情況下,它會拉從BOOTCLASSPATH環境變量引導類路徑,這應該已經包含core.jar添加和framework.jar 。

但是,我懷疑實際上會導致UnsatisfiedLinkError異常,因爲在SystemClock中實現一些本地方法的JNI庫不會被加載。

在這種情況下,有一個handy utility class可用,應加載本機庫。

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

這個答案很完美。 :) – merlin2011

+0

出於好奇,你最終不得不使用WithFramework來運行它嗎? – JesusFreke

+0

是的,我做到了。您預測的問題發生了,您的解決方案修復了它。 – merlin2011

相關問題