我们确实有 2 个类似的应用程序项目。第一个是针对我国的,第二个是针对欧盟的。它们是 %90 相同的可能更多。我们确实希望将这两个项目合并为一个,并使用构建变体在它们之间切换。那可能吗?如果是,我该怎么做?
主要项目
@OnClick(R.id.image_view)
public void onClicked(View view) {
if (isXEnabled) {
ImageView.setImageResource(R.drawable.inactive);
ImageView.setContentDescription(getString(R.string.passive));
presenter.sendCommand();
isEnabled = false;
} else {
ImageView.setImageResource(R.drawable.active);
ImageView.setContentDescription(getString(R.string.active));
presenter.disableFeature();
isEnabled = true;
}
}
欧盟项目
@OnClick(R.id.image_view)
public void onClicked(View view) {
if (isXEnabled) {
ImageView.setImageResource(R.drawable.EuInactive);
ImageView.setContentDescription(getString(R.string.EUpassive));
presenter.sendCommand();
isEnabled = false;
} else {
ImageView.setImageResource(R.drawable.active);
ImageView.setContentDescription(getString(R.string.EUactive));
presenter.disableFeature();
isEnabled = true;
}
}
例如,某些可绘制对象在 EU Project 上是不同的
- 或者 -
主要项目
@OnClick(R.id.image_view)
public void onClicked(View view) {
if (isXEnabled) {
ImageView.setImageResource(R.drawable.inactive);
ImageView.setContentDescription(getString(R.string.passive));
presenter.sendCommand();
isEnabled = false;
DoSomething();
} else {
ImageView.setImageResource(R.drawable.active);
ImageView.setContentDescription(getString(R.string.active));
presenter.disableFeature();
isEnabled = true;
}
}
欧盟项目
@OnClick(R.id.image_view)
public void onClicked(View view) {
if (isXEnabled) {
ImageView.setImageResource(R.drawable.inactive);
ImageView.setContentDescription(getString(R.string.passive));
presenter.sendCommand();
isEnabled = false;
DoSomethingElse();
} else {
ImageView.setImageResource(R.drawable.active);
ImageView.setContentDescription(getString(R.string.active));
presenter.disableFeature();
isEnabled = true;
}
}
在此示例中,我们确实添加了不同的行,其他一切都相似。
这种差异有近千个,完全相同的类有近五百个,新的类有两百个。
总之,如何在一个项目中使用构建变体来管理这两个项目?
编辑 2:我已经尝试了这些步骤。
- 实施维度
- 实施风味
- 为 eu 项目创建 res、asset、java 文件
- 在 gradle 中为 eu 项目创建了 sourceSet
现在构建变体看起来像这个 mainDevDebug,EuDevDebug,......等等 main...... 工作正常,但我有一个错误 Eu..... 那些
重建或运行应用程序时出现错误消息:
Could not determine the dependencies of task ':app:compileEuTestDebugJavaWithJavac'.
> Could not resolve all task dependencies for configuration ':app:EuTestDebugCompileClasspath'.
> Could not resolve project :com.xx.core.main.core.
Required by:
project :app
> No matching configuration of project :com.xx.core.main.core was found. The consumer was configured to find an API of a component, as well as attribute 'com.android.build.api.attributes.BuildTypeAttr' with value 'debug', attribute 'project' with value 'Eu', attribute 'default' with value 'Test', attribute 'org.jetbrains.kotlin.platform.type' with value 'androidJvm' but:
- None of the consumable configurations have attributes.