Android – пользовательская аннотация TargetFlavor, такая как TargetApi, но для ароматовJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Android – пользовательская аннотация TargetFlavor, такая как TargetApi, но для ароматов

Сообщение Anonymous »

В настоящее время я работаю над созданием пользовательской аннотации, которая выполняет ту же работу, что и @TargetApi(), но с моими вариантами.

Случай

В моем случае мне нужно использовать определенный метод (в классе под названием 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();
}
TargetFlavorProcessor:

Код: Выделить всё

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]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»