我正在尝试使用DexClassLoader动态加载外部类,比如@Shlublu建议here
当我执行我的应用程序并且DexClassLoader对象尝试查找该类时,它会抛出ClassNotFound异常。我在manifest.xml中添加了读写权限,所以这不是错误。
我认为问题是我用来制作我想在我的应用程序上加载的.jar的方法。所以我有一些问题......
我正在使用Android模拟器API 19(kit-kat)
答案 0 :(得分:0)
由于APK是标准的Android软件包,我建议您使用APK而不是JAR。构建一个应用程序APK链接所需的JAR(让Android构建工具" dex" JAR),但没有任何活动,然后安装APK,就好像它是一个普通的应用程序。然后,您可以使用PackageManager
访问APK文件本身以获取其路径并使用DexClassLoader
加载它。
public static ClassLoader loadAPK(final Context context, final String appName) throws PackageManager.NameNotFoundException {
final String apkPath = context.getPackageManager().getApplicationInfo(appName, 0).sourceDir;
final File tmpDir = context.getDir("tmp", 0);
return new DexClassLoader(apkPath, tmpDir.getAbsolutePath(), null, context.getClassLoader());
}