Случай
В моем случае мне нужно использовать определенный метод (в классе под названием Navigator), чтобы перенаправить мое приложение на другой экран, но я создаю этот экран только в одном из вариантов. Поэтому, когда я переключаюсь на другой вариант сборки, моя Android Studio отображает ошибку: Неразрешенная ссылка, как и ожидалось.
У меня есть 3 варианта: устройство1, устройство2 и устройство3. Также устройство1 имеет этот уникальный экран (называемый UniqueActivity), и все варианты имеют доступ к классу Navigator.
Я вижу такой вариант использования:
Код: Выделить всё
@TargetFlavor(currentFlavor = BuildConfig.FLAVOR, targetFlavor = "device1")
Поэтому я подумал об аннотации препроцессора, позволяющей игнорировать метод, когда выбранный вариант (вариантом сборки) не соответствует целевому варианту. Я следил за этой статьей.
И вот чего я добился:
Аннотация TargetFlavor:
Код: Выделить всё
@Retention(RetentionPolicy.SOURCE)
@Target(ElementType.METHOD)
public @interface TargetFlavor {
String currentFlavor();
String targetFlavor();
}
Код: Выделить всё
public class TargetFlavorProcessor extends AbstractProcessor {
private Filer filer;
private Messager messager;
private Elements elements;
private Map methodWithFlavor;
@Override
public synchronized void init(ProcessingEnvironment processingEnv) {
super.init(processingEnv);
filer = processingEnv.getFiler();
messager = processingEnv.getMessager();
elements = processingEnv.getElementUtils();
methodWithFlavor = new HashMap();
}
@Override
public boolean process(Set
Подробнее здесь: [url]https://stackoverflow.com/questions/48951674/android-custom-annotation-targetflavor-like-targetapi-but-for-flavors[/url]
Мобильная версия