2012-03-16 5 views
1

Существует множество примеров, показывающих, как получить имя пакета в коде во время выполнения.Условная компиляция: получение и тестирование имени пакета во время компиляции

В моем случае мне нужно проверить имя пакета на время компиляции.

Вот моя ситуация: у меня есть два Android-проекта (бесплатные и профи), которые используют проект библиотеки. В бесплатной версии есть пункт меню «Получить про версию», которого нет в другой версии. Мое меню код обработки выглядит следующим образом:

if (item.getItemId()==R.id.getProVersion) { 
    //... 
} 

Proguard жалуется, что R.id.getProversion не существует при построении про пакет. Поэтому мне нужно проверить, какой проект строится, чтобы исключить компиляцию этой части кода.

Есть ли способ узнать имя пакета во время компиляции?
Существуют ли альтернативные решения этой проблемы? Оптимизированы решения, ориентированные на Android или Java.

ответ

0

Вы можете поместить пункт меню в библиотеке проекта, а затем использовать проверки имени пакета времени выполнения, чтобы фактически решить, следует ли отображать сообщение или нет.

+0

Не то, что я надеялся .. Но что я сделал! – tos

+0

Что я делаю в своем коде, так это то, что у меня есть базовая активность в Библиотеке, а затем распространяю ее на бесплатные и про-программы, переопределяя метод «shouldDisplayAd». Но это работает только для основной деятельности ... – miniBill

+0

Это действительно возможность. Однако в моем текущем проекте папка src предоставляется как для профи, так и для бесплатных подпроектов. Все в библиотеке. Но я также работал над проектом, в котором каталоги не были пустыми. – tos

0

Вы можете сделать это, написав простую аннотацию, которая автоматически пропускает этот код. Myabe это перебор, но это также хороший способ, чтобы попасть в предобработки ...

Это кажется хорошим (ПОЦЕЛУЙ) учебник по теме: http://blog.christoffer.me/2011/08/how-to-enforce-static-methods-on-class.html

+0

Интересно. Мне нужна официальная поддержка условной компиляции для java на Android. Ваше решение немного переборщило для одной переменной. Я могу использовать его для более сложных ситуаций. Тем временем я пошел по маршруту, предложенному miniBill: создав меню и сделав его невидимым. Нет, лучше, но мне нужно двигаться дальше. – tos

Смежные вопросы