我们最初只有一个项目(让我们称之为Project A
),但随着时间的推移,有必要使用客户端品牌(Project B
)创建相同的应用程序。与原始项目的唯一区别是颜色,drawable和某些类中的代码。
我决定在Git中复制分支并实现Project B
的更改。结果,现在我有2个代码重复的应用程序大约95%。主要问题是,对于相同的应用程序时间进行代码更改是非常昂贵的,因为这两个分支无法合并。它们具有不同的包,Android上的包名称与磁盘上文件的路径相匹配。因此,所有文件都只是在不同的目录中。
我提请注意Product Flavors。这解决了"如何在一个git分支中支持2个项目的问题"但是不清楚如何有效地对具有小差异的文件的公共代码进行更改(每个类中的一些行) 。
在这种情况下,我应该只进行一次更改?也许,您之前遇到过这样的问题。
答案 0 :(得分:0)
您已经回答了第一个使用Product Flavors的问题。对于第二个问题,您还将使用这些产品风格,答案是简单地创建一个基类abstract
类,并且具有两个具有相同名称的具体类 。基地一个,每一个都有自己的味道。
我给你举个例子:
package com.application.main;
public abstract class BaseMainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myDifferingMethod();
}
public abstract void myDifferingMethod();
}
然后,您创建覆盖该方法的具体类:
风味A:
package com.application.main;
public class MainActivity extends BaseMainActivity {
@Override
public void myDifferingMethod() {
System.out.println("im on A product flavor");
doStuff();
}
和风味B:
package com.application.main;
public class MainActivity extends BaseMainActivity {
@Override
public void myDifferingMethod() {
System.out.println("im on B product flavor");
// don't do nothing
}