3 回答

TA貢獻1827條經(jīng)驗 獲得超4個贊
Dalvik測試套件中有一個DexClassLoader 示例。它以反射方式訪問類加載器,但是如果您要針對Android SDK進行構(gòu)建,則可以執(zhí)行以下操作:
String jarFile = "path/to/jarfile.jar";
DexClassLoader classLoader = new DexClassLoader(
jarFile, "/tmp", null, getClass().getClassLoader());
Class<?> myClass = classLoader.loadClass("MyClass");
為此,jar文件應包含名為的條目classes.dex。您可以dx使用SDK附帶的工具來創(chuàng)建這樣的jar 。

TA貢獻1865條經(jīng)驗 獲得超7個贊
我嘗試使用DexClassLoader,但這也不起作用。我創(chuàng)建了一個派生類,并使用super(“ / sdcard / f.jar”,“ / sdcard”,null,getSystemClassLoader())稱為超構(gòu)造函數(shù);但是沒有成功。defineClass和findClass都不會返回動態(tài)附加的任何類。我的懷疑是android根本不支持此功能,否則正常的defineClass應該已經(jīng)可以工作了??赡苁怯捎谀承┌踩珕栴}。但我一定想聽聽原因,我也在android-developers Google組上啟動了一個線程。

TA貢獻1852條經(jīng)驗 獲得超7個贊
DexClassLoader可以正常工作,如源樹中的dalvik / tests / 068-classloader所示。需要“插件”體系結(jié)構(gòu)的應用程序使用它。請記住,只有通過自定義類加載器才能看到該類。
添加回答
舉報