#директива #android #java #компиляция
Здравствуйте! Мне нужно скомпилировать два разных приложения из одного исходного кода. Эти приложения отличаются только package name и ресурсами. Я хотел использовать аналоги #ifdef #define , но оказалось, что их попросту нет... Конкретнее - мне нужно что бы в одном и том же файле исходников в случае компиляции приложения использовался файл ресурсов(R) одного приложения, а для другого приложения - другой файл.
Ответы
Ответ 1
Все очень даже реально. Есть такой проект - antenna, он формально реализовывает препроцессор. Почитать как сделать и что скачать, можно на хабре. В нескольких проектах испытывал, достаточно нормально работает.Ответ 2
Вам нужно добавить тег Java может кто и поможет более точно. Я сомневаюсь что это невыполнимая задача (уж если в плюсах такое есть...). Погуглите системы сборки для Java проектов (к сожалению не силен в Java технологиях).Ответ 3
Попробуй создать Android Library. Выносишь туда ресурсы и код, которые повторяются и используешь хоть в гуглеоне приложений.Ответ 4
Известные грабли. Проблема решается в 2 этапа: Вместо #ifdef/#ifndef надо использовать public static final boolean flag=true/false;. Это конечно же не совсем директивы препроцессора, но в плане удешевления кода лепту свою вносит, поскольку в финальном бинарнике компилятор все равно отбросит неработающие ветки. Нужно иметь несколько манифестов, каждый из которых имеет собственный лончер активити. Если хочется совсем уже красоты, то можно вокруг этого обернуть ant скрипт, чтобы автоматизировать переключение между ветками. На стэке я уже отвечал на аналогичный вопросОтвет 5
Вряд ли так получится, создай 2 разных проекта с разными ресурсами. Если очень хочется, скинь все ресурсы в одну папку и просто подставляй кодом нужные картинки в зависимости от параметра компиляции.
Комментариев нет:
Отправить комментарий