dex文件手动加载

 将已经编译好的.class或者.dex文件放在sdcard中,供一个已安装的程序动态调用:

首先将.class文件转换成.dex文件:

package com.dynamic;
public interface IDynamic {
public String helloWorld();
}


package com.dynamic;
public class DynamicTest implements IDynamic {
    @Override
    public String helloWorld() {
        return "Hello World!";
    }
}

将com.dynamic打包成dynamic.jar


将jar包dynamic.jar放到D:\soft\sdk\sdk\platform-tools目录下,dos命令切换到此目录下,输入dx --dex --output=dynamic.dex dynamic.jar,将此目录下生成的dynamic.dex文件放到sdcard里面。

final File optimizedDexOutputPath = new File(Environment.getExternalStorageDirectory().toString()+File.separator +"wftech"+
            	File.separator+"dex"+File.separator+ "dynamic.dex");//将dynamic.dex放到/mnt/wftech目录下
            	DexClassLoader cl = new DexClassLoader(optimizedDexOutputPath.getAbsolutePath(),
            			MainActivity.this.getDir("dex", 0).getAbsolutePath(),//一定不能写错
					null, getClassLoader());
                Class libProviderClazz = null;
                try {
                	libProviderClazz = cl.loadClass("com.dynamic.DynamicTest");
                	IDynamic lib = (IDynamic)libProviderClazz.newInstance();
                	Toast.makeText(MainActivity.this, lib.helloWorld(), Toast.LENGTH_SHORT).show();
                } catch (Exception exception) {
                    exception.printStackTrace();
                }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值