Android studio导出jar包,作为插件化jar包的步骤

1、一般会在主工程里面新增一个module,类型为Android Library,命名为dexlibs

2、该module里面编写我们的插件内容,比如:

3、选择build,make该lib,这样会在该module下的build-》intermediates-》bundles-》debug下会生成一个classes.jar文件。

该文件就是工程编译出来的可用的jar包。但是该jar包只是被java虚拟机使用,而我们的android是davilk或art虚拟机,不能识别java字节码,必须通过dx工具转换一下才能被

DexClassLoader识别

4、接着,使用dx工具转换,该工具在Android\sdk\build-tools\,具体的sdk版本,比如我是使用的是\25.0.2,在该文件夹下面就有dx.bat这个可执行文件,把我们的源classes.jar放到该目录下,执行如下命令:

dx --dex --output=loader_dex.jar classes.jar

在该目录下就生成了loader_dex.jar文件。

5、这时候我们在宿主中,就能使用该jar包中的类了。如:

File dexOutputDir = getDir("dex",0);//在data/data/xx包名/下面创建一个app_dex文件夹。
        String dexPath = Environment.getExternalStorageDirectory().toString() + File.separator + "loader_dex.jar";//sdcard中的
        // 4.1以后不能够将optimizedDirectory(即第二个参数)设置到sd卡目录, 否则抛出异常. 所以我们使用内部存储路径dexOutputDir 
        DexClassLoader loader = new DexClassLoader(dexPath,dexOutputDir.getAbsolutePath(),null,getClassLoader());
        try {
            Class clz = loader.loadClass("com.tongxt.mylibrary.ShowToastImpl");
            Method method = clz.getDeclaredMethod("showToast", Context.class);
            method.invoke(clz.newInstance(), this);
        } catch (Exception e) {
            e.printStackTrace();
        }

参考文章:



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值