<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<body link="#355491" alink="#4262a1" vlink="#355491" style="background: #e2e2e2; margin: 0; padding: 20px;">
<div>
        <table cellpadding="0" bgcolor="#FFFFFF" border="0" cellspacing="0" style="border: 1px solid #dadada; margin-bottom: 30px; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                <tbody>
                        <tr>
                                <td>
                                        <table border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" style="border: solid 2px #ccc; background: #dadada; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                                                <tbody>
                                                        <tr>
                                                                <td bgcolor="#000000" valign="middle" height="58px" style="border-bottom: 1px solid #ccc; padding: 20px; -moz-border-radius-topleft: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 5px; -webkit-border-top-left-radius: 5px;">
                                                                        <h1 style="color: #333333; font: bold 22px Arial, Helvetica, sans-serif; margin: 0; display: block !important;">
                                                                        <!-- To have a header image/logo replace the name below with your img tag -->
                                                                        <!-- Email clients will render the images when the message is read so any image -->
                                                                        <!-- must be made available on a public server, so that all recipients can load the image. -->
                                                                        <a href="http://community.jboss.org/index.jspa" style="text-decoration: none; color: #E1E1E1">Community</a></h1>
                                                                </td>
                                                        </tr>
                                                        <tr>
                                                                <td bgcolor="#FFFFFF" style="font: normal 12px Arial, Helvetica, sans-serif; color:#333333; padding: 20px; -moz-border-radius-bottomleft: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 5px; -webkit-border-bottom-left-radius: 5px;"><h3 style="margin: 10px 0 5px; font-size: 17px; font-weight: normal;">
Saving proxy classes and using them in Android
</h3>
<span style="margin-bottom: 10px;">
reply from <a href="http://community.jboss.org/people/EricJava">Eric H</a> in <i>Javassist</i> - <a href="http://community.jboss.org/message/534561#534561">View the full discussion</a>
</span>
<hr style="margin: 20px 0; border: none; background-color: #dadada; height: 1px;">
<div class="jive-rendered-content"><p>I answer my own question.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>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.  Also it has more flexibility.  The class can be final, doesn't need a no-args constructor, etc.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>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.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>The hard part about ASM were two things:</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><ul><li>It's a bit of an API to deal with.</li><li>The new code I insert had to be Java assembly</li></ul><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>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.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>Anyway, both are impressive tools, but ASM was the right one for this job.</p></div>
<div style="background-color: #f4f4f4; padding: 10px; margin-top: 20px;">
<p style="margin: 0;">Reply to this message by <a href="http://community.jboss.org/message/534561#534561">going to Community</a></p>
        <p style="margin: 0;">Start a new discussion in Javassist at <a href="http://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2062">Community</a></p>
</div></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</div>
</body>
</html>