-
1. Re: Saving proxy classes and using them in Android
ericjava Mar 30, 2010 2:54 AM (in response to ericjava)I answer my own question.
It looks like Javassist isn't the right tool for this. It needs to mess with classloaders, an area where Android is quite different from standard Java.
I got it done with ASM. ASM was perfect for this. It lets me modify the class itself, rather than creating a proxy for it. That's (slightly) better for performance, and also makes it very easy to use them with the rest of the Android packaging tools.Also it has more flexibility. The class can be final, doesn't need a no-args constructor, etc.
The hard part about ASM were two things:
- It's a bit of an API to deal with.
- The new code I insert had to be Java assembly
But there's a trick that made it easier to get the assembly code. There's a ASMifier tool that generates ASM API calls to generate a given class file. So you just write the code you want, run ASMifier on it, and cut and paste the assembly generator calls. But doing anything more than small amounts of code would be a big pain IMO.
Anyway, both are impressive tools, but ASM was the right one for this job.