Хотя вопрос был задан некоторое время назад, я решил опубликовать свой ответ, потому что решил (в определенной степени) немного похожую проблему.
Специфика моей задачи требует, чтобы два приложения с различным набором функций были собраны из одной базовой библиотеки (и неиспользуемые вещи не должны быть связаны). Выбор набора функций осуществляется с помощью флагов public static final boolean
. Проблема заключается в том, что я хочу убедиться, что в каждом приложении он построен с соответствующим флагом, установленным в базовой библиотеке. А в случае, если включены неправильные функции, приложение не должно компилироваться, что приводит к ошибке времени компиляции.
Единственное решение, которое я нашел, - это объявить в библиотеке окончательные переменные вместе с флагами: public static final int functionSet1 = 0;
и т. Д.
В пакете приложения я добавил фиктивный класс с проверкой
ConditionalBuild.functionSet1 = 1;
Из всех переменных functionSetX только одна сделана не финальной при конкретной сборке. Таким образом, только одно приложение может пройти процесс сборки без ошибки. Есть ли лучший способ добиться этого? Пожалуйста, дайте мне знать в комментариях.