transfuse icon indicating copy to clipboard operation
transfuse copied to clipboard

Support for Library Rs

Open johncarl81 opened this issue 8 years ago • 8 comments

Android libraries use R classes without public static final (http://tools.android.com/tips/non-constant-fields):

public final class R {
    public static final class anim {
        public static int abc_fade_in=0x7f040000;
        public static int abc_fade_out=0x7f040001;
...

This means you can't reference these fields from an annotation as there are not considered constants. The previous alternative was to use tags, which looses compile time checking. This PR gives an alternative way...

This PR adds a secondary annotation processor to generate a R class with public static final analogies for library public final non-static. Transfuse, in turn, recognizes these analogies and swaps in the original R library identifier. The only requirement is to annotate your source with the Bridge annotation:

@Bridge(R.class)
public class ...

Then you may use RBridge instead of R in any Transfuse annotation:

@Layout(RBridge.layout.main)
@View(RBridge.view.button)

johncarl81 avatar Apr 24 '16 18:04 johncarl81

❤️

dbachelder avatar Jun 22 '16 14:06 dbachelder

@johncarl81 thoughts on merging to master?

dbachelder avatar Jul 11 '16 20:07 dbachelder

I have a couple changes I made recently to be able to publish this on maven central. I have a couple other tweaks to make, mainly to accommodate other libraries that use the base. Then it's time for prime time.

johncarl81 avatar Jul 11 '16 21:07 johncarl81

great.. do those changes change anything about the usage as I know it right now?

dbachelder avatar Jul 11 '16 21:07 dbachelder

They may affect how you reference the rbridge library.

johncarl81 avatar Jul 11 '16 22:07 johncarl81

Ok @dbachelder, could you review the latest changes?

johncarl81 avatar Jul 12 '16 01:07 johncarl81

@johncarl81 I like that you've moved it into TF proper.. would you mind pushing this up as the snapshot release and I'll try it one more time before we merge it?

dbachelder avatar Jul 12 '16 02:07 dbachelder

Sure, done.

johncarl81 avatar Jul 12 '16 02:07 johncarl81