I am sorry if the question title is a bit cryptic. I simply could not come up with a better one.
I have a project where I wanted to play around a bit with the package name in the AndroidManifest. Please don't ask why I did it or why I did not simply use build.gradle's applicationId.
The thing is, in order not to have to constantly correct the import for R.java everywhere when modifying the package name, I created a proxy class for R.java that looks like this:
import static com.package.main.R.*;
public class RProxy {
public static final class R{
public static anim anim;
public static attr attr;
public static bool bool;
public static color color;
public static drawable drawable;
public static dimen dimen;
public static id id;
public static integer integer;
public static layout layout;
public static menu menu;
public static plurals plurals;
public static raw raw;
public static string string;
public static style style;
public static styleable styleable;
}
}
I now simply changed the R import in every class to RProxy, and every usage of R to RProxy.R. I now only have to change the R import once, in RProxy. The whole thing is compiling and running.
Now, here are my questions:
- I am now getting a few warnings (one per RProxy.R usage, to be exact) saying:
Static member com.package.main.R.id.firstId accessed via instance reference.
I understand why I get them, but I don't know how to do the proxying in another way. How could I get rid of these? - Should I avoid this kind of hack? Why?
- Would there have been a better way to do that kind of Proxying?
Please note my main interest in getting an answer is mainly educational purpose (good old curiousity), but that does not mean I won't highly appreciate any answer!