动态执行jar包的笔记

    Android中加载jar包和java中不太一样,因为Android的虚拟机(Dalvik VM)是不认识Java打出jar的byte code,需要通过dx工具来优化转换成Dalvik byte code才行。这一点在咱们Android项目打包的apk中可以看出:引入其他Jar的内容都被打包进了classes.dex。

 

   用于动态加载的API DexClassLoader、PathClassLoader他们两个的区别是第二个只能加载已经安装到Android系统中的apk文件,这里我们用到的是DexClassLoader。

   步骤:

          1.编写接口和实现

            public interface IDemo {

                public String sayhello();
            }

 

            public class Demo implements IDemo {


               @Override
               public String sayhello() {
                      return "Hello!";
                }
              }

            2打包并转化为dex格式的jar包

               dx --dex --output=test.jar demo.jar

            3通过DexClassLoader加载dex格式的jar包test.jar

               DexClassLoader classLoader = new DexClassLoader( "path/test.jar", optimizerpath, null,cxt.getClassLoader());

            Class mLoadClass = classLoader.loadClass("com.test.Demo");

            sInstance = (IDemo) mLoadClass.newInstance();

            现在就可以使用IDemo接口里的方法了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值