zoukankan      html  css  js  c++  java
  • android 加载远程Jar、APK

    参考链接:

    1、http://blog.csdn.net/bboyfeiyu/article/details/11710497
    2 http://www.cnblogs.com/LittleRedPoint/p/3429709.html

    第一步:编写接口

    package com.lpl;

    public interface ILoader {

    public String sayHelloWorld();
    }

     第二步:实现接口

    package com.lpl;
    
    public class Remote implements ILoader{
    
        @Override
        public String sayHelloWorld() {
            return "sayHelloWorld i am a jar";        
        } 
       
    }

    第三步:打包jar

    使用Eclipse的Export功能,导出指定的包或者java文件

    第四步:使用dx命令处理jar文件

    dx --dex --output=G:
    emote_dex.jar G:
    emote.jar

    注意:dx命令可能在platform-tools中,也可能在build-tools中的子目录中

    第五步:将dex拷贝到android项目的包目录下面

    1、直接放入sdcard可能会报异常,原因是android系统对sdcard的读写权限做了限制
    2、需要在androidManifest中添加读写权限
    3、jar需要放入到android/data/com.***目录下

    第六步:

    File file                = new File(Environment.getExternalStorageDirectory().toString()+File.separator+"android/data/com.example.test/remote_dex.jar");
    Class lib                = null;
            
            try {
    //            BaseDexClassLoader cl     = new BaseDexClassLoader(Environment.getExternalStorageDirectory().toString(), file, file.getAbsolutePath(), getClassLoader());
                DexClassLoader     cl        = new DexClassLoader(file.getAbsolutePath(), file.getPath()    , null, getClassLoader());
                lib                        = cl.loadClass("com.lpl.Remote");
              
                ILoader loader            = (ILoader)lib.newInstance();
                Toast.makeText(getApplicationContext(), ""+loader.sayHelloWorld(), 3000).show();
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
            catch (InstantiationException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }

    // 这里要注意,APk中也要有接口文件,远程的jar只是对接口文件的实现

    补充:

    远程加载jar、apk有两个目的1、为了类;2、为了资源;类只要拿到jar、apk通过反射就可以拿到,资源必须拿到context
    http://www.cnblogs.com/weiwelcome0/p/3583870.html
  • 相关阅读:
    jenkins配置QQ邮箱自动发送RF测试构建结果通知邮件
    扩展RF,实现失败用例自动再执行
    python-函数-非固定参数
    robot framework 中对于有滚动条的页面中元素的处理
    selenium(python)下定位单个元素的常用方法
    selenium(python)close与quit的区别
    Robot FrameWork UI自动化脚本稳定性与原生关键字
    深copy和浅copy(python)
    尚硅谷MySQL高级_笔记(2018年10月5日22:55:39)
    云知梦css学习笔记(2018年4月1日16:18:17)
  • 原文地址:https://www.cnblogs.com/lipeil/p/4952483.html
Copyright © 2011-2022 走看看