android 加载远程Jar、APK

参考链接:

1、http://blog.csdn.net/bboyfeiyu/article/details/117104972\ 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只是对接口文件的实现
时间: 2024-09-28 02:54:55

android 加载远程Jar、APK的相关文章

Android加载网络图片报android.os.NetworkOnMainThreadException异常

Android加载网络图片大致可以分为两种,低版本的和高版本的.低版本比如4.0一下或者更低版本的API直接利用Http就能实现了: 1.main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="

有效解决Android加载大图片时内存溢出的问题

首先解析一下基本的知识: 位图模式,bitmap颜色位数是1位 灰度模式,bitmap颜色位数是8位,和256色一样 RGB模式,bitmap颜色位数是24位 在RGB模式下,一个像素对应的是红.绿.蓝三个字节 CMYK模式,bitmap颜色位数是32位  在CMYK模式下,一个像素对应的是青.品.黄.黑四个字节 图像文件的字节数(Byte) = 图像分辨率*颜色深度/8(bit/8) 例如:一幅640*480图像分辨率.RGB色一般为24位真彩色,图像未经压缩的数据容量为:640X480X24

记:Ubuntu14.04 Android加载项目失败

Android 加载项目失败: sdk/build-tools/android-4.4.2/aapt: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory 安装: sudo apt-get install lib32z1 记:Ubuntu14.04 Android加载项目失败,布布扣,bubuko.com

Android加载大图片到内存

加载大图片到内存 步骤: 步骤一: 获取品屏幕的宽高数据;[HD1] 步骤二: 获取图片的宽高;[HD2] 步骤三: 计算屏幕与图片的宽高比例,按照差距最大的进行缩放处理;[HD3] 步骤四: 图片的缩放处理;[HD4] [HD1]// 获取手机的屏幕的窗体大小 WindowManager windowManager = (WindowManager) getSystemService(WINDOW_SERVICE); Display display = windowManager.getDef

Android -- 加载大图片的方法

在android中要加载一张大图片到内存中如果通过如下方式进行: Bitmap bitmap= BitmapFactory.decodeFile("/sdcard/a.jpg"); iv.setImageBitmap(bitmap); 则会抛出内存溢出异常Caused by: java.lang.OutOfMemoryError 正确的做法应该是这样的: public class MainActivity extends Activity { private ImageView iv;

android加载大量图片内存溢出的三种方法

android加载大量图片内存溢出的三种解决办法 方法一:  在从网络或本地加载图片的时候,只加载缩略图. /** * 按照路径加载图片 * @param path 图片资源的存放路径 * @param scalSize 缩小的倍数 * @return */ public static Bitmap loadResBitmap(String path, int scalSize) { BitmapFactory.Options options = new BitmapFactory.Option

Android加载大图片(压缩)

转载自http://blog.csdn.net/junjx/article/details/7798604 在Android开发中,我们经常需要加载图片.但是图片的尺寸往往会很大,如果我们要的是比较小的图片,在Android有限的内存下,我们显然不能把大尺寸的图片放到内存里,这样不但效率降低,而且会导致java.lang.OutOfMemory异常,相信很多朋友都遇到过这样的问题,那么该怎么解决这一问题呢?其实在Android官方文档中早已给出了解决的方案. 一.读Bitmap的尺寸和类型   

Android加载不同DPI资源与内存消耗之间的关系

by Will of TinyLab.org 2015/04/21 Android DPI 分级标准简介 Android 设备在物理尺寸和屏幕密度上都有很大的不同,为了简化多设备的设计方案,就是设定一套分级标准.屏幕密度上的分级标准就是:LDPI.MDPI.HDPI.XHDPI,也就是各种大小的 DPI(Dots per inch).DPI 就是屏幕像素密度的衡量标准. 不同设备共享同一套 DPI 资源有哪些问题? 现在进入正题. Q:不少公司出于简化设计和研发的目的,往往在方案中只使用一套 D

android加载框效果《IT蓝豹》

android加载框效果 android加载框效果,本例子有几种效果弹出dialog,本例子主要自定义SVProgressHUD 类,本例子来源:https://github.com/saiwu-bigkoo/Android-SVProgressHUD主要代码如下: public enum SVProgressHUDMaskType {            None,  // 允许遮罩下面控件点击               Clear,     // 不允许遮罩下面控件点击