相关疑难解决方法(0)

动态生成Dalvik字节码到运行的Dalvik/Android应用程序

关于在运行时动态生成和加载java字节码到运行的Dalvik VM,已经多次询问(和回答)这个问题,但有没有办法在运行时将dex文件/字节码加载到应用程序中?

谢谢

android dalvik

25
推荐指数
2
解决办法
8737
查看次数

在Android 5.0上动态加载DEX文件

在Android 5.0之前,我能够使用DexClassLoader和调用loadClass()方法动态加载DEX文件,但是使用最新的Android版本,我得到了一个ClassNotFoundException.

这是我在做的事情:

  1. 生成DEX文件.

    ../android-sdk/android-sdk-linux_86/build-tools/21.1.1/dx --dex --output=bin/output.dex  bin/output.jar
    
    Run Code Online (Sandbox Code Playgroud)
  2. 创建一个DexClassLoader.

    DexClassLoader cl = new DexClassLoader(
    dexFile.getAbsolutePath(),
    odexFile.getAbsolutePath(),
    null,
    mContext.getClassLoader());
    
    Run Code Online (Sandbox Code Playgroud)
  3. 呼叫 cl.loadClass("myMethod");

我知道ART使用dex2oat来生成一个由ART加载的ELF文件但是在步骤2中我生成了一个ODEX文件,因此我不需要在ART中运行以在运行时加载DEX文件,任何人都可以帮助我 ?

android classloader dex android-runtime dex2oat

15
推荐指数
1
解决办法
6947
查看次数

标签 统计

android ×2

android-runtime ×1

classloader ×1

dalvik ×1

dex ×1

dex2oat ×1