Мое приложение имеет два варианта, и каждый из них имеет свои собственные зависимости, и я ДОЛЖЕН импортировать только спецификацию аромата c зависимость
flavorDimensions 'x'
productFlavors {
A {
dimension 'x'
}
B {
dimension 'x'
}
}
[...]
dependencies {
AImplementation 'com.A.library:1.0.0'
BImplementation 'com.B.library:1.0.0'
}
. Таким образом, при его создании не включается библиотека "B", когда выбрав вариант «A», однако это приводит к java ошибкам компиляции, потому что у меня есть классы (~ 100 упаковщиков / маршрутизаторов), которые имеют ссылки на классы и методы из библиотеки B, которые мне нужно комментировать / удалять, поскольку они никогда не будут быть использованным / invoked.
Моя идея состоит в том, чтобы создать задачу Gradle для go через классы оболочки / маршрутизатора и удалить все операции импорта, которые начинаются с "com. $ {flav} .library", изменить все аргументы и возвращать типы (которые начинаются с com. $ {flav}) в Object, и комментировать строки кода, которые находятся внутри методов, которые вызывают ошибки компиляции типа «Класс не найден» или «Отсутствуют ссылки»?.
Пример: если я хочу создать APK для аромата "B", я хочу go из этого:
import com.third.party.library.ThirdParty;
import com.myproject.X;
public final class SomeClass extends ThirdPary {
public Something(com.A.library.ClassZ param0, com.B.library.ClassZ param1) {
super(param0, null);
if (param0 == null) {
setParam0(pram1);
}
}
public static final Object getInstance(String param0, Boolean param1) {
if (X.isB()) {
return com.B.library.Something.getInstance(param0, param1);
} else {
return com.A.library.Something.getInstance(param0, param1);
}
}
public com.A.library.Somthing getOldInstance() {
return (com.A.library.Something) Something.getInstance()
}
}
до этого:
import com.third.party.library.ThirdParty;
import com.myproject.X;
public final class SomeClass extends ThirdPary {
public Something(Object param0, com.B.library.ClassZ param1) {
super(param0, null);
if (param0 == null) {
setParam0(pram1);
}
}
public static final Object getInstance(String param0, Boolean param1) {
if (X.isB()) {
return com.B.library.Something.getInstance(param0, param1);
} else {
//return com.A.library.Something.getInstance(param0, param1);
}
}
public Object getOldInstance() {
return (Object) Something.getInstance()
}
}
таким образом, я можно избежать Ошибки компиляции и генерирование бесплатной APK-зависимости.