[英]How do I add `odex` files to the classpath for 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.SystemClock
是在手機的framework.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
文件添加到odex
的類路徑中?
您是否嘗試過:
/system/bin/dalvikvm -classpath /data/local/tmp/MWE.jar MWE
據我所知,在這種情況下,它將從BOOTCLASSPATH環境變量中拉入引導類路徑,該環境變量應該已經包含core.jar和framework.jar。
但是,我懷疑這實際上會導致UnsatisfiedLinkError異常,因為將不會加載在SystemClock中實現某些本機方法的JNI庫。
在這種情況下,可以使用一個方便的實用程序類來加載本機庫。
dalvikvm -classpath /data/local/tmp/MWE.jar com.android.internal.util.WithFramework MWE
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.