码迷,mamicode.com
首页 > 移动开发 > 详细

android 加载远程Jar、APK

时间:2015-11-10 13:49:52      阅读:243      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!