Intereting Posts
Сохранение видеозаписи в режиме реального времени на SD-карте с помощью Local Socket в Android – Видео не воспроизводится Постоянно получать … DeviceMonitor] Не удалось запустить мониторинг Векторные чертежи, которые автоматически преобразуются в pngs ScrollView – как прокручивать вниз при разработке макета в Eclipse? Перехватывать HTTP-запросы, отправленные из приложения Android. Android Telegram App -> java.lang.UnsatisfiedLinkError: не реализована реализация для void В чем разница между настройками «target» в файле «project.properties» и тегом «android: targetSdkVersion» в манифесте? Почему Intent.createChooser () нуждается в BroadcastReceiver и как реализовать? Поддерживаемые размеры поддерживаемых камер Android «Неизвестное приложение ABI:», в то время как «debug as native application» Как я могу удерживать одну кнопку нажатой после нажатия на нее? Кнопка возврата ActionBarActivity не выскочит из задней части Android: как проверить, запущена ли работа? AndroidStudio – Зависимости модулей в Gradle ActionBarActivity не может разрешить символ

Как поддерживать платную и бесплатную версию приложения

Я создал бесплатную версию игрового приложения, которое теперь находится на рынке с именем com.mycompany.myfreegame. Теперь я хочу сделать платную версию. Несомненно, будут исправления и исправления ошибок для обеих версий, требуемых на долгие годы, поэтому я хочу инкапсулировать кодировку бесплатной и оплаченной информации как можно компактнее, чтобы я мог по существу исправлять ошибки в обеих версиях одновременно.

Если бы все различия между этими двумя версиями были обработаны во время выполнения, я мог бы установить один флаг в исходном коде, и это будет конец проблемы. К сожалению, есть еще два вопроса,

  1. Название пакета должно быть разным между двумя версиями.
  2. Некоторые xml должны быть разными. Например, бесплатной версии нужны линейные макеты для размещения рекламы, а платная версия – нет.

Каков самый простой способ достичь этой цели?

Solutions Collecting From Web of "Как поддерживать платную и бесплатную версию приложения"

Я думаю, что первый подход, который я попробовал, – использовать 3 проекта в Eclipse: один для любой версии игры и проект библиотеки со всем общим кодом. Проект библиотеки будет содержать весь код для вашего основного игрового процесса, а проекты, зависящие от версии, управляют загрузкой различных макетов, размещением рекламы в бесплатной версии и добавлением уровней / функций / шляп в платную версию.

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

Я думаю, что вы ищете библиотечный проект http://developer.android.com/guide/developing/projects/index.html#LibraryProjects

С этой веб-страницы:

If you are creating an application that exists in both free and paid versions. You move the part of the application that is common to both versions into a library project. The two dependent projects, with their different package names, will reference the library project and provide only the difference between the two application versions.

Другой вопрос, очень похожий на этот, кажется, имеет достойное обсуждение и ответ: несколько приложений с общей кодовой базой

Изменить: Вот ссылка о том, как реализовать проект библиотеки. http://developer.android.com/guide/developing/projects/projects-eclipse.html

Что касается разных версий, которые немного отличаются друг от друга, может быть реализован проект библиотеки. Сначала создается проект библиотеки, затем родитель (проект, который использует библиотеку) построен последним, и они объединяются вместе. Оба проекта могут определять одни и те же идентификаторы ресурсов и последний построенный проект (родительский проект), получает приоритет (перезаписывает). По существу, вы можете переопределить строки / макеты (возможно, больше, не уверены?) В родительском / вызывающем приложении.

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

Код в общих библиотеках Файл Strings.xml:

 <string name="AppName">My Application (Free)</string> 

Код в родительском приложении Файл Strings.xml:

 <string name="AppName">My Application Premium</string> 

Я поеду с Мейвеном . Вы можете определить родительский проект с тремя подпроектами, например:

  • общий
  • оплаченный
  • Свободно

Maven позволяет иметь разные конфигурационные файлы, имея одну и ту же базу кода.

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

Более того, это лишь одно из тысяч преимуществ maven!

EDIT: Я только что узнал, у вас есть Android-плагин для maven, с классными функциями и

Может быть, лучше всего использовать Android Studio + gradle. Этот случай позволяет создавать как платные, так и бесплатные версии с одной командой в консоли. Более подробная информация находится в этом сообщении: https://stackoverflow.com/a/17286142/1705370

Я думаю, вы ищете нечто похожее на это:

Несколько файлов приложений .pk для Android приложений из одного исходного кода

В принципе, самый простой способ здесь состоит в том, чтобы иметь два разных файла манифеста и два разных основных действия и переключить компиляцию с помощью Ant, хотя последняя является необязательной.

Надеюсь, поможет.