DexClassLoader 构造函数如下 :
/**
* 创建一个{@code-DexClassLoader}来查找解释的和本机的
* 密码解释类可以在包含的一组DEX文件中找到
* 在Jar或APK文件中。
*
* <p>使用指定的字符分隔路径列表
* {@code path.separator}系统属性,默认为{@code:}。
*
* @param dexPath 包含类和
* 资源,由{@code File.pathSeparator}分隔,其中
* Android上的默认值为{@code”:“}
* @param optimizedDirectory 目录,其中包含优化的dex文件
* 应该是书面的;不能为{@code null}
* @param librarySearchPath 包含本机
* 库,由{@code File.pathSeparator}分隔;可能是
* {@code null}
* @param parent 父类加载器
*/
public DexClassLoader(String dexPath, String optimizedDirectory,
String librarySearchPath, ClassLoader parent) {
super(dexPath, new File(optimizedDirectory), librarySearchPath, parent);
}
源码路径 : /libcore/dalvik/src/main/java/dalvik/system/DexClassLoader.java
DexClassLoader 构造函数 参数 :
在 Android Studio 工程中 , 创建 Module ,
并在其中 , 设置一个测试类 , 之后要使用 DexClassLoader 加载该 DEX 字节码文件 ,
package com.example.dex_demo;
import android.util.Log;
/**
* 测试 DEX 字节码加载并执行
*/
public class DexTest {
public void test(){
Log.i("DexTest", "DexTest : Hello World!!!");
}
}
选择 " 菜单栏 / Build / " 编译程序 , 生成 APK 文件 ;
编译后的 dex_demo-debug.apk 文件 , 在当前位置解压 , 获取其中的 classes.dex 字节码文件 ;
将该 DEX 文件拷贝到 主应用的 assets 目录下 ;