Лучший подход для бесплатных и платных версий приложения для Android?

Я разработал приложение для Android, и хочу, чтобы оно было доступно как в бесплатной, так и в платной версии. Каков наилучший подход?

Я могу придумать три решения:

  1. Разделите проект на две ветки и обслуживайте обе.
  2. Создайте проект библиотеки и создайте два дополнительных проекта, одну «бесплатную» и одну «платную» версию.
  3. Используйте биллинг в приложении.

В: Какое решение лучше? И почему?

Некоторые вещи, которые следует учитывать:

  • Мое приложение весит около 1,5 МБ (без учета AdMob).
  • В настоящее время я ориентируюсь на Android 2.2 (Froyo).
  • У меня есть несколько серверных API, которым было бы полезно знать, платный клиент или нет.
  • Я стремлюсь избежать взлома моего приложения. Не уверен, что это реальная проблема в наши дни...

person l33t    schedule 01.01.2012    source источник
comment
возможный дубликат Лучший способ заплатить и бесплатная версия приложения для Android   -  person rds    schedule 04.09.2013


Ответы (3)


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

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

(отказ от ответственности: этот пост является личным мнением, основанным на моем собственном опыте и анекдотических свидетельствах, которые я слышал)

person stork    schedule 01.01.2012
comment
Это тип ответа, который я искал. Итак, вы предлагаете решение № 2? - person l33t; 02.01.2012
comment
Это то, на что я бы пошел, да. - person stork; 02.01.2012

Я изо всех сил пытался реализовать это, но понял это. Я считаю, что лучший подход — использовать функцию библиотеки Android и различать строковое значение имени приложения в каждом проекте, простое платное = истинное строковое значение (или файл ключа, если вы хотите более сложное решение).

Точные шаги:

Библиотека

Используйте это, чтобы получить «общую» копию кода, а затем несколько проектов Android, которые ссылаются на него.

Цель:

Бесплатная и платная версия на Google Market

Результаты:

Один Android-проект (библиотека) со ВСЕМ кодом, с двумя дополнительными Android-проектами, которые ссылаются на код, но без реальных классов. strings.xml различает имена приложений (платные и бесплатные или любые другие)`

Создать библиотеку

  • Создайте новый проект и во время шагов по созданию выберите опцию для создания библиотеки
  • Convert existing: right click project->Properties->Android->Check box next to library.
    • Might want to refactor/rename as well, but not needed

Создайте новый проект для использования библиотеки

  • Создать новый проект приложения для Android
  • Откройте свойства этого проекта->Android->Добавить существующую библиотеку в проект
  • Additional Libraries if exist: Dont copy these (jar) files into new project!
    • Properties of new project->Build Path->Configure Build Path->Libraries Tab->Add Jars->Expand Library you're linking to->libs->Select libary (ie libGoogleAnalytic)->OK->Order & Exports tab->Check new library->ok
  • Manifest of new project: Need to RE call out ALL info from library, especially activities, appending FQDN from library
    • ie: android:name="com.blah.appname.library.MainActivity" (basically copy/paste everything from library manifest to new project manifest & adjust package name to reference library instead)
  • Убедитесь, что в новой папке lib проекта по сравнению с проектом библиотеки нет дубликатов библиотек! Если это так, удалите из нового проекта и измените путь сборки на шаг выше.
  • Не нужны НИКАКИЕ классы/java файлы!
  • Заменяйте ресурсы, только если вы хотите их заменить
  • Удалите все файлы в новом проекте в res\drawable\, чтобы мы использовали файлы из библиотеки.
person Kevin    schedule 02.01.2014
comment
Я попробовал это, и это сработало для меня. Большое спасибо за подробные шаги. - person Nipun; 07.04.2014

Ваш третий подход, биллинг в приложении, обеспечивает наибольшую гибкость, но он ужасно сложен (и, следовательно, подвержен ошибкам).

Ваш второй подход, проект общей библиотеки, выглядит лучшим компромиссом.

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

person Bill The Ape    schedule 13.01.2012