Android & Eclipse 2 различных версии того же приложения

Привет я - начинающееся использование разработчика андроида окна и затмение IDE для разработки приложений андроида Java. Я опубликовал одну игру, но существует бесплатная версия игры и заплаченной версии. Рынок Google настаивает, чтобы различные версии имели различные имена пакета. До сих пор я осуществлял рефакторинг пакет с 2 различными именами и изменялся, файл ресурсов R импортируют каждый раз, когда я создаю различные версии. Код составляет 99% то же для обеих версий. Существует ли лучший путь?

7
задан nathan 16 May 2010 в 09:12
поделиться

2 ответа

У вас есть различные дискуссии по этой теме здесь и там , но в основном решение похоже на дублирование проекта.

Например (не основано на eclipse):

На этот вопрос сложно ответить, поскольку мы не знаем, в чем разница между бесплатной и платной версиями вашего приложения.

Я собираюсь предположить, что различия могут быть обработаны каким-то глобальным флагом «свободный / несвободный». Под этим я подразумеваю, что один и тот же код будет составлять обе версии приложения, и то, какие части включены или используются, будет зависеть от какого-либо публичного статического элемента данных где-то:

if (SomeClass.IS_PAID_APP) { 
        // add more stuff to menu, etc. 
} 

Если вы можете организовать свое приложение таким образом, то вы нужна только одна кодовая база.
Настройте сборку вашего приложения в одном направлении (платном или бесплатном, на ваш выбор) и с использованием соответствующего пакета в манифесте для этой версии приложения.
Затем добавьте задачу Ant, которая выполняет следующие действия:

  1. Создает древовидную копию каталога вашего проекта во временном месте.
  2. Переключите копию манифеста на новое имя пакета с помощью search-and-replace
  3. Переключите все операторы импорта для версии R вашего старого пакета на новый пакет, снова с помощью функции поиска и замены и еще раз для копии, {{ 1}} не ваш оригинал
  4. Измените IS_PAID_APP (или что-то еще) на противоположное значение (поиск и замена в копии)
  5. Выполняет сборку Ant для копии проекта
  6. Копирует двоичные файлы из этой сборки в каталог bin / основного проекта под другим именем (чтобы не повредить другую копию APK)
  7. Удаляет сделанную копию дерева на шаге №1

Если бы в Java был препроцессор, это было бы несколько проще. Однако основная техника, которую я описал выше, используется уже несколько десятилетий. Это неуклюже, но работает, а это значит, что вам нужно иметь дело только с одним набором исходного кода. Обратите внимание, что задача Ant прекрасно справится с вашим поиском и заменой.

2
ответ дан 7 December 2019 в 16:40
поделиться

Это один из недостатков Android Market, хотя я понимаю, почему они так поступили. . Он просто не был разработан для бесплатных и платных версий вашего приложения (они утверждают, что это политика возврата за 24 часа, но вместо этого используется для пиратства) -:

В любом случае, проще всего написать Сценарий сборки Ant (или любой другой язык сценариев, который вы используете). Выполните поисковую замену имени вашего пакета во всех файлах .xml и .java. Затем выполните сборку своего приложения там. Рефакторинг кода - это больше проблем, чем того стоит ИМХО ...

1
ответ дан 7 December 2019 в 16:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: