代理R.java

时间:2014-07-02 15:16:13

标签: java android r.java-file

如果问题标题有点神秘,我很抱歉。我简直无法想出一个更好的。

我有一个项目,我想在AndroidManifest中玩一下包名。请不要问为什么我这样做或为什么我不是简单地使用build.gradle的applicationId。

问题是,为了不必在修改包名时不断纠正R.java的导入,我为R.java创建了一个如下所示的代理类:

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;
    }
}

我现在只需将每个类中的R import更改为RProxy,并将R的每次使用更改为RProxy.R。我现在只需要在RProxy中更改一次R import。 整个过程都在编译和运行。

现在,我的问题是:

  1. 我现在收到一些警告(确切地说,每个RProxy.R使用一次):Static member com.package.main.R.id.firstId accessed via instance reference.我理解为什么我会得到它们,但我不知道如何进行代理其他方式。我怎么能摆脱这些?
  2. 我应该避免这种黑客攻击吗?为什么?
  3. 有没有更好的方法来进行这种代理?
  4. 请注意我对获得答案的主要兴趣主要是教育目的(好古老的好奇心),但这并不意味着我不会高兴地欣赏任何答案!

0 个答案:

没有答案