Cómo mantener una versión gratuita y pagada de una aplicación

He construido una versión gratuita de una aplicación de juego que ahora está en el mercado con un nombre como com.mycompany.myfreegame. Ahora quiero hacer una versión de pago. No habrá duda de ajustes y correcciones de errores a ambas versiones requeridas para los próximos años, así que quiero encapsular la codificación de la información libre vs pagado de manera compacta de una manera posible para que pueda esencialmente arreglar los errores en ambas versiones simultáneamente.

Si la totalidad de las diferencias entre las dos versiones se maneja en tiempo de ejecución, entonces podría establecer un solo indicador en el código fuente y que sería el final del problema. Desafortunadamente hay otras dos cosas a considerar,

  1. El nombre del paquete debe ser diferente entre las dos versiones.
  2. Algún xml necesita ser diferente. Por ejemplo, la versión gratuita necesita diseños lineales para mantener anuncios, la versión paga no.

¿Cuál es la forma más sencilla de lograr este objetivo?

5 Solutions collect form web for “Cómo mantener una versión gratuita y pagada de una aplicación”

Creo que el primer enfoque que intentaría es usar 3 proyectos en Eclipse: uno para cualquiera de las versiones del juego y un proyecto de biblioteca con todo el código compartido. El proyecto de la biblioteca sería el lugar donde se aplicará todo el código para su juego principal, y los proyectos específicos de la versión se encargarán de cargar diferentes diseños, poner anuncios en la versión gratuita y agregar niveles / características / sombreros a la versión de pago.

Usted puede ser capaz de lograr su objetivo de una sola base de código con una bandera del compilador usando una tarea hormiga, pero eso es más allá de mí.

Creo que lo que buscas es un proyecto de biblioteca http://developer.android.com/guide/developing/projects/index.html#LibraryProjects

Desde esa página web:

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.

Otra pregunta, muy similar a ésta, parece tener una discusión decente y una respuesta: Varias aplicaciones con una base de código compartida

Editar: Aquí hay un enlace sobre cómo implementar un proyecto de biblioteca. http://developer.android.com/guide/developing/projects/projects-eclipse.html

En cuanto a las diferentes versiones que son ligeramente diferentes, un proyecto de biblioteca puede acomodar. El proyecto de la biblioteca se construye primero, luego el padre (el proyecto que utiliza la biblioteca) se construye por último y se fusionan entre sí. Ambos proyectos pueden definir los mismos identificadores de recursos y el proyecto construido en último lugar (proyecto principal), obtiene prioridad (sobrescribe). Así que esencialmente, puede anular las cadenas / diseños (posiblemente más, ¿no está seguro?) En la aplicación principal / de llamada.

Por ejemplo: Digamos que tiene dos proyectos, gratuitos y pagados. Puede crear una cadena con una implementación predeterminada (versión gratuita) y anularla en su versión de pago (aplicación principal).

Código en bibliotecas compartidas Archivo Strings.xml:

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

Código en la aplicación primaria Strings.xml file:

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

Yo iría con Maven . Puede definir un proyecto principal con tres subproyectos, digamos:

  • Común
  • Pagado
  • Gratis

Maven permite tener diferentes archivos de configuración, mientras que tiene la misma base de código.

Por ejemplo, actualmente tengo un proyecto donde se utilizan dos bases de datos, por lo que todos los archivos de configuración de la aplicación permanecen en un proyecto común, donde los archivos de configuración de la base de datos y las clases permanecen en cada carpeta del proyecto. Cuando hago una construcción en el padre, cada proyecto del niño se construye, las pruebas de unidad pasaron, etc …

Por otra parte, esto es sólo una de las mil ventajas de maven!

EDIT: Acabo de descubrir, tienes un plugin de Android para maven, con características interesantes también

Puede ser la mejor manera ahora es usar Android Studio + gradle. Este caso permite construir versiones pagadas y gratuitas con un comando en la consola. Más detalles están en este post: https://stackoverflow.com/a/17286142/1705370

Pienso que usted está buscando algo similar a esto:

Múltiples paquetes de aplicaciones Android .APK de código fuente único

Básicamente, el enfoque más fácil aquí es tener dos archivos de manifiesto diferentes y dos actividades principales diferentes y cambiar la compilación usando Ant, aunque esta última es opcional.

Espero eso ayude.

  • ¿Cómo puedo implementar Google Play Licensing para una aplicación de Android?
  • Obtener la altura de la pantalla en Android
  • Análisis de archivos XML grandes utilizando el analizador SAX (salte algunas líneas / etiquetas)
  • ¿Por qué android.osBundle una clase final?
  • Escaneo de código QR desde un archivo de imagen
  • TextView en android sólo muestra dos líneas de texto en cualquier orientación
  • Animar el color de la barra de estado en DrawerLayout - Diseño del material
  • Appium no puede obtener datos de atributo "content-desc"
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.