我们最初只有一个项目(我们称它为Project A
),但是随着时间的流逝,有必要使用客户品牌(Project B
)来制作相同的应用程序。与原始项目的唯一区别是颜色,可绘制对象和某些类中的代码。
我决定在Git中复制该分支,并实现Project B
的更改。结果,现在我有2个应用程序的代码重复率约为95%。主要问题在于,由于无法合并这两个分支,因此在相同的应用时间对代码进行更改非常昂贵。它们具有不同的软件包,并且Android上的软件包名称与磁盘上文件的路径匹配。因此,所有文件仅位于不同目录中。
我提请注意Product Flavors。这解决了“如何在一个git分支中支持2个项目”的问题,但是尚不清楚如何有效地更改文件的通用代码,而这些文件之间的差异很小(每个类中的某些行)。
在这种情况下,我应该只进行一次更改?也许您之前遇到过这样的问题。
最佳答案
您已经回答了第一个问题,即使用产品调味剂。对于第二个问题,您还将使用这些产品 flavor ,答案是简单地创建一个基类abstract
,并从基类中扩展出两个具有相同名称的具体类,每个类都具有自己的 flavor 。
我举一个例子:
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();
}
和 flavor 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
}
关于android - 如何有效地支持代码中稍有不同的多个Android项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38123852/