DexClassLoader 插件

final File optimizedDexOutputPath = new File(
"/data/data/com.example.test" + File.separator
+ "test_new.jar");


DexClassLoader cl = new DexClassLoader(
optimizedDexOutputPath.getAbsolutePath(),
optimizedDexOutputPath.getParent().toString(), null,
getClassLoader());
Class libProviderClazz = null;


try {
// Load the library class from the class loader.
// 载入从网络上下载的类
// libProviderClazz =
// cl.loadClass("com.example.dex.lib.LibraryProvider");
libProviderClazz = cl.loadClass("com.TestAction");
InterfaceAction lib = (InterfaceAction) libProviderClazz
.newInstance();


// Display the toast!
// lib.showAwesomeToast(view.getContext(), "hello 世界!");
Toast.makeText(FullscreenActivity.this, lib.action(),
Toast.LENGTH_SHORT).show();
} catch (Exception exception) {
// Handle exception gracefully here.
exception.printStackTrace();
}



几个关键点:

1. test.jar 放置路径问题,由于android4.4系统 以上不允许放置在sdcard

2.test.jar 中一定包含class.dex

将test.jar拷贝到 android-sdk-windows\platform-tools下将其转换成DexClassLoader所能识别的二进制jar包:cd 到platform-tools目录下,执行命令 dx --dex --output=test_new.jar test.jar  其中 test_new.jar为新的jar包,是我们所需要的二进制jar包, test.jar 为eclipse直接导出的jar包

3.test.jar中不能包含接口

4.插件和主程序中引入接口的路径保持一致




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值