如何让R.java在2个android应用程序中有不同的值?

时间:2010-09-11 08:06:00

标签: android

我正在这里编写一个支持插件的Android应用程序。 我有2个应用程序(2个apk),一个是主程序,另一个是插件。

现在我希望插件在主程序的Activity中构建它自己的接口。但我发现2个应用程序中的R.java具有相同的值:

插件中的R.java:

public final class R {
    public static final class attr {
    }
    public static final class drawable {
        public static final int icon=0x7f020000;
    }
    public static final class id {
        public static final int button1=0x7f050000;
        public static final int button2=0x7f050001;
    }
    public static final class layout {
        public static final int widget=0x7f030000;
    }
    public static final class string {
        public static final int app_name=0x7f040000;
        public static final int button1text=0x7f040001;
        public static final int button2text=0x7f040002;
    }
}

主程序的R.java:

public final class R {
    public static final class attr {
    }
    public static final class drawable {
        public static final int icon=0x7f020000;
    }
    public static final class id {
        public static final int mainWidgetLayout=0x7f050000;
    }
    public static final class layout {
        public static final int main=0x7f030000;
    }
    public static final class string {
        public static final int app_name=0x7f040001;
        public static final int hello=0x7f040000;
    }
}

正如您所看到的,这两个R.java中有很多相同的值,这会造成混乱。在插件中,如果我想通过R.java中定义的资源构造接口,它可能会引用主程序资源中的相同值。

那么,如何处理呢?是否有可能使2个应用程序中的2 R.java具有不同的值? 非常感谢。任何建议都表示赞赏。

1 个答案:

答案 0 :(得分:-1)

我自己并没有这样做,但following thread可能会引起人们的兴趣。 特别是那个说

的部分
  

每个资源标识符由32位组成,共8个顶部位   该   资源所属的包。平台资源为0x01   和0x7F是应用程序资源。想法是使用其余的   扩展包的253个值。

因此,您可以使用aapt -x生成不同的资源标识符(无需参数即可启动aapt以获取选项列表)。