`

android 动态加载sdcard jar的方法

 
阅读更多
1.新建Android工程,封装功能java类。
2.选中需要导出的文件夹,右键选中“Export”->"Java(Jar file)"导出jar文件。hello.jar
3.使用dx工具将jar包转换为android 字节码。
    命令:dx --dex --output=xx.jar hello.jar

然后把xx.jar放到mnt/sdcard/ 或者其他路径

假如:hello.jar  定义如下:
package com.example.test;

public class Plug {


public int add(int a,int b){
return a+b;
}

public String test(){
return "carter";
}
}


4.使用
private void useDexClassLoader() {
      
        String dexPath = "/mnt/sdcard/xx.jar";
        String dexOutputDir = "/data/data/"+getPackageName();
        Log.v(TAG, "dexOutputDir="+dexOutputDir);


        DexClassLoader pathClassLoader = new DexClassLoader(dexPath, dexOutputDir, null, this
                .getClass().getClassLoader());
        // dexPath 目标jar或apk的路径 ; dexOutputDirdex 文件路径 ;null 目标类中使用的c/c++库存放的路径
        // ; 第四个参数 父装载类
        try {
            Class class1 = pathClassLoader.loadClass("com.example.test.Plug");       //xx.jar包名+类名
            Object object = class1.newInstance();
            Class[] params = new Class[2];
            params[0] = Integer.TYPE;
            params[1] = Integer.TYPE;
            Method action = class1.getMethod("add", params);
            Integer ret = (Integer) action.invoke(object, 12, 13);
           
            Log.v(TAG, "method : " + action.getName() + ", return :" + ret);
           
       
            
            action = class1.getMethod("test");
            String aa = (String) action.invoke(object);
           
            Log.v(TAG, "method : " + action.getName() + ", return :" + aa);
           
        } catch (Exception e) {
            // TODO: handle exception
        e.printStackTrace();
        }

    }
5.这样就实现了从网络下载jar,然后不通过adb install -r 来更新apk了,这种方式适合广告类的插件,因为可以在后台动态加载,不需要弹出更新安装的对话框
分享到:
评论

相关推荐

    Android 中动态加载.jar的实现步骤

    在Android平台上,动态加载.jar文件是一项关键的技术,它允许应用程序在运行时加载新的功能或更新代码,无需重新安装整个应用。下面将详细讲解这一过程的实现步骤和涉及到的知识点。 首先,我们需要创建.jar文件。...

    Dynamic_jar:android 插件化动态加载jar

    android 插件化动态加载jar 有时候会看到一些应用对应的SDcard里的文件夹里有 ***.jar 等文件,现在明白这些文件大概是用来做应用内自动更新用的。 打比方说,类似eclipse 可以通过预留接口,安装各种插件一样。  ...

    Android App 如何动态加载类.doc

    在Android应用开发中,动态加载类是一项重要的技术,它允许应用程序在运行时加载新的功能或者更新已有代码,而无需重新安装整个应用。本篇将详细解释如何在Android中实现动态加载类,主要涉及两种ClassLoader:...

    android-logging-log4j-1.0.3.jar

    1. 集成:首先,将`android-logging-log4j-1.0.3.jar`添加到项目的libs目录下,并在项目构建路径中包含此库。如果是使用Gradle构建系统,可以在build.gradle文件中添加如下依赖: ```groovy dependencies { ...

    Android写LOG日志到SD卡文件之microlog4android使用

    1. **添加依赖**:在你的项目构建文件(如build.gradle)中,添加microlog4android的依赖。如果使用的是Maven仓库,可以添加如下依赖: ```groovy dependencies { implementation 'org.microlog:microlog-android:...

    android相关log4j-Jar包

    本文将详细探讨如何在Android项目中使用log4j-Jar包,以及其在日志管理中的作用和优势。 首先,Log4j的核心功能是提供了一种灵活的日志记录方式,允许开发者设置不同的日志级别,如DEBUG、INFO、WARN、ERROR和FATAL...

    microlog4.rar

    首先,我们关注的是`microlog4android-1.0.0.jar`文件,这是一个Java类库,你需要将其添加到你的Android项目的依赖库中。这个库提供了丰富的API,允许你方便地记录不同级别的日志,如DEBUG、INFO、WARN、ERROR和...

    ftp的jar包

    在Android开发中,如果你需要从FTP服务器下载文件,可以利用FTP相关的Java库,例如使用包含在`ftp.jar`包中的类和方法。这个`ftp.jar`可能是包含了`commons-net`库的一个版本,它是一个广泛使用的开源项目,提供了对...

    android实现ftp上传、下载文件,支持文件夹哦

    首先,你需要在项目中添加这个库的依赖,如果使用Gradle构建系统,可以在build.gradle文件中添加以下依赖: ```groovy dependencies { implementation 'commons-net:commons-net:3.6' } ``` 接下来,我们将分步骤...

    Emma_for_Android

    export BOOTCLASSPATH=/system/framework/core.jar:/system/framework/ext.jar:/system/framework/emma.jar:/system/framework/framework.jar:/system/framework/android.policy.jar:/system/framework/services.jar...

    Android显示Gif图片Demo

    在Android平台上,显示Gif动图是一个常见的需求,特别是在创建动态表情、加载动画效果或者游戏场景时。在本示例中,我们将探讨如何利用引入的`GifView.jar`包来实现在Android应用中显示Gif图片。首先,我们需要了解`...

    使用AndroidScreenCap截取ANdroid设备屏幕

    假设AndroidScreenCap的aar或者jar文件已经放置在项目的libs目录下,你可以在app模块的build.gradle文件中添加如下代码: ```groovy dependencies { implementation fileTree(dir: 'libs', include: ['*.aar', '*....

    使用Android系统隐藏API

    - 将之前提到的`classes.jar`文件以及系统本身的文件添加到新创建的用户库中。 - 调整库的加载顺序,确保`classes.jar`位于列表的最上方。 5. **重新构建项目**:完成以上步骤后,保存设置并重新构建项目。此时,...

    opencv_android开发库

    拷贝openvc-2.3.1.jar和两个文件夹armeabi和armeabi-v7a到android项目的libs目录下 在oncreate中添加如下代码 private ImageView imageView = null; @Override protected void onCreate(Bundle ...

    科大讯飞语音接入(AndroidStudio)

    2. 将下载的jar文件添加到项目的`app/libs`目录下,并在`build.gradle`文件中配置依赖,例如: ```groovy dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) } ``` 3. 如果SDK包含有AAR文件,...

    新版Android开发教程.rar

    ----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...

    AndroidExcel.zip

    为了使用这些资源,开发者需要将"AndroidExcel.zip"解压,并将"jxl.jar"添加到项目的构建路径或依赖中,这样项目才能识别并使用jxl库。同时,他们需要将"ExcelUtil.java"导入到项目源代码中,以便调用`writeExcel`...

    Android 讯飞 在线语音合成

    确保添加相应的jar文件和对应的armeabi、armeabi-v7a、x86等不同架构的so库文件到对应目录。 3. **配置权限**:在AndroidManifest.xml中添加必要的权限,例如互联网权限(用于在线语音合成)和录音权限。 ```xml ...

    如何在Android中调用Office(Word&Excel;&PPT;)文档处理服务

    **步骤2:**将下载的库文件添加到你的Android项目中。通常,这涉及到将库的jar文件导入到项目的`libs`目录,并在`build.gradle`文件中声明依赖。 **步骤3:**在代码中调用OliveOffice提供的API来处理Office文档。...

Global site tag (gtag.js) - Google Analytics