2

我想动态添加 .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(become dex) 以及项目中的新文件夹“text”并将 text.jar 放入其中。

你能帮我看看我做错了什么吗?

4

2 回答 2

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 从应用程序的资产区域复制到此目录中。

于 2015-04-16T14:24:56.820 回答
0

试试这个代码:

// dexPath is the absolute path of your **DEX** file
ClassLoader loader = context.getClassLoader();      
dexLoader = new dalvik.system.DexClassLoader(**dexPath**, dexOutputDir, null, loader);
于 2016-03-15T12:51:15.860 回答