我有两个Android应用程序彼此共享90%的代码,并且由于政治原因(我认为也是技术原因)需要有单独的程序包名称(因此它们将显示在Google Play中的不同URL下)
我为每个应用程序使用git和两个分支,并在每次发布之前手动同步两个分支。当运行两个分支的diff命令时,我的很多文件都是不同的,实际上唯一不同的是自动生成的文件R的包名,所以对于第一个应用程序我有15个文件
import pkg.name.one.R;
和其他应用
import pkg.name.two.R;
我想以某种方式为这两个类以相同的方式导入R
。
我试着像这样包装R:
打包thescene;
public class RWrapper {
public class R extends pkg.name.one.R {}
}
(这会使RWrapper
成为这两个分支之间关于源或R
的唯一不同文件,但是唉R
是最后一个类(我甚至不是确定这无论如何都会有用)
那么有没有办法以某种方式将R类别名化为允许我用统一的import语句替换import pkg.name.one.R; / import pkg.name.two.R;
的方法?
我也对其他可以解决我的同步问题的建议持开放态度。)
答案 0 :(得分:0)
您是否无法修改RWrapper
以使R
成为静态字段而非类?然后,您的代码将通过R
RWrapper.RClass...
实施例
public class RWrapper
{
public static pkg.name.one.R R;
}
和
public class RWrapper
{
public static pkg.name.two.R R;
}
您可以通过以下方式访问R字段:
RWrapper.R.<blah>
答案 1 :(得分:0)
seggy几乎是正确的,但你需要单独公开每个R.class。如果子模块具有自己的命名空间,那么您可以重用类名R而不需要修改子模块中的任何内容。
package the.submodule.package;
public final class R {
public static the.app.package.R.string string;
public static the.app.package.R.drawable drawable;
public static the.app.package.R.id id;
//public static the.local.appPackage.R.anythingElse anythingElse;
}
注意:我不是在考虑跨项目共享R,但有时会限制时间等。