首页 > 移动平台 > 详细

android 加载远程Jar、APK

时间:2015-11-10 13:48:35      阅读:238      评论:0      收藏:0      [点我收藏+]

参考链接:

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:\remote_dex.jar G:\remote.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只是对接口文件的实现

 

android 加载远程Jar、APK

原文:http://www.cnblogs.com/lipeil/p/4952483.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!