在Android运行时创建一个类

Tia*_*ida 4 java android runtime class

我需要创建一个在 Android 运行时扩展抽象类的类。我真正需要的是生成这样的东西:

Class A extends AbstractClass{

    A(){
         super("A name that is saved on AbstractClass");
         fieldFromAbstractClass =...
    }

    @Override
    public void aMethodFromAbstractClass(){
       //some code....
    }
}
Run Code Online (Sandbox Code Playgroud)

我想在运行时生成它。这可能吗?

Ton*_*ony 5

在“传统”Java 中,您可以在运行时创建和编译类,或者使用 ASM 等字节码生成器来扩充或生成类文件。

但是,您需要记住,Android 不是Java虚拟机。当您创建 APK 时,类文件将转换为由 Android 的 Dalvik 虚拟机处理的专用字节码。

我不知道 Dalvik 特定的运行时字节码生成器,所以我不认为(当前)可以执行您所描述的操作。

编辑

有一个名为Dexmaker 的库可以完成此任务。我从这个相关答案中发现了它。