我想动态添加.jar。所以我做了一个演示。但我不知道如何新建DexClassLoader。我不知道如何添加第一个参数。
final File optimizedDexOutputPath = new File("" + File.pathSeparator + "test.jar");
//PackageManager pm = getPackageManager();
String dexOutputDir = getApplicationInfo().dataDir;
DexClassLoader dexClassLoader = new DexClassLoader("", dexOutputDir, null, getClassLoader());
我已将动态.jar设为test.jar(成为dex)以及新文件夹' text'在项目中并将text.jar放入其中。
你能帮我看看我做错了吗?
答案 0 :(得分:0)
动态加载jar的代码应如下所示:
//get the path to your .jar as a String
String jarPath = this.getApplicationContext().getFilesDir().getAbsolutePath();
jarPath += File.pathSeparator + "test" + File.pathSeparator + "test.jar";
//get a path to the directory you want to store odexs in as a String
String optimizedDir = this.getApplicationContext().getDir("odex", MODE_PRIVATE).getAbsolutePath();
//finally, call DexClassLoader
DexClassLoader dcl = new DexClassLoader( jarPath, optimizedDir, null, getClassLoader() );
以上假设您已经创建了一个名为" test"的目录。在您应用的私人文件区域内,并将test.jar放在该目录中。您可以创建此目录,并可能在您的应用首次启动时将test.jar从您应用的资源区域复制到此目录中。
答案 1 :(得分:0)
试试这段代码:
// dexPath is the absolute path of your **DEX** file
ClassLoader loader = context.getClassLoader();
dexLoader = new dalvik.system.DexClassLoader(**dexPath**, dexOutputDir, null, loader);