ByteBuddy 如何创建另一个在 Android 中创建的 ByteBuddy 的子类?

ByteBuddy how to create a subclass of another ByteBuddy created Class in Android?

我正在为 android 编写 java 代码,使用 byte-buddy:1.10.17byte-buddy-android:1.10.17 动态创建 classes。我想动态创建一个 class,它将是另一个动态创建的 class 的子 class。 这是我想做的示例代码

AndroidClassLoadingStrategy loadingStrategy = new AndroidClassLoadingStrategy.Wrapping(context.getCacheDir());

DynamicType.Builder builder = new ByteBuddy().subclass(Object.class).name("TestParentClass");

Class testParentClass = builder.make().load(Test.class.getClassLoader(), loadingStrategy).getLoaded();

builder = new ByteBuddy().subclass(testParentClass).name("TestChildClass");

Class testChildClass = builder.make().load(Test.class.getClassLoader(), loadingStrategy).getLoaded();

但是我在创建子 class 时得到 Caused by: java.lang.ClassNotFoundException: Didn't find class "TestParentClass"

我也检查过,但根本没用。

不要使用测试的class-loader。这将在您的 class 路径中查找 class 文件。动态 class TestParentClass 将有 none。相反,从 TestParentClass 获取 class-loader:

Class testChildClass = builder.make().load(testParentClass.getClassLoader(), loadingStrategy).getLoaded();