0
我通過以下代碼sniplet動態加載Android上的類。在Android上獲取Java字節碼
if(classes.size() > 0) {
// Located classes.load and scan them for interfaces.
DexClassLoader dx = new DexClassLoader(szPath,outdex,null, c.getClassLoader());
for(String sz : classes) {
Class<?> cls = dx.loadClass(sz);
for(Class<?> i : cls.getInterfaces()) {
if(i.getName().contains("IPinPad") == true) {
// This is a PinPad.
return (IPinPad)cls.newInstance();
}
}
}
}
類包含在從以前的運行代碼的DEX文件descovered類的列表。此代碼的目的是返回實現IPinPad接口聲明的對象實例。這一切工作正常,但除此之外,我想抓取cls.newInstance()對象的字節碼。我應該怎麼做?
我一直在玩cls.getClassLoader().getResourceAsStream();
,但它總是返回一個空流,不確定如何指定該類的資源名。
您不能從DEX文件中獲取Java字節碼,因爲它不存在那裏。理論上講,您可以獲取Dalvik字節碼,但根據您的最終目的,打開DEX文件並將其讀出可能會更容易。 – fadden