La mejor manera de generar tanto & # 8220; gratis / demo & # 8221; y aplicaciones comerciales del mismo código fuente?

StackOverflow https://stackoverflow.com/questions/274785

  •  07-07-2019
  •  | 
  •  

Pregunta

Me gustaría ofrecer dos versiones diferentes de mi aplicación para iPhone en App Store: una gratuita que está limitada por la cantidad de elementos que se muestran a través de la aplicación y otra completamente ilimitada.

El código fuente para ambas aplicaciones será exactamente el mismo, la única diferencia sería la base de datos SQLite que almacena los elementos en la aplicación.

Entiendo que ambas versiones de la aplicación necesitarán tener diferentes nombres de paquete e iconos diferentes. Estoy tratando de encontrar una manera de evitar copiar completamente el directorio del código fuente para poder personalizar algunas de estas cosas: base de datos, iconos, cadenas de plumín, etc.

¿Hay una buena manera de hacer esto sin duplicar todo?

¿Fue útil?

Solución

Simplemente cree un segundo objetivo en su proyecto. Una puede ser la aplicación con todas las funciones, que incluye la base de datos completa, y el nuevo objetivo será su compilación de demostración, con la base de datos de demostración. Hacemos esto con crucigramas, y funciona bien. A continuación, puede mantener toda su fuente en un solo lugar, y no preocuparse de que las cosas no estén sincronizadas.

Otros consejos

Haga un uso juicioso de la compilación condicional. No sé en qué idioma está trabajando, pero en la compilación de condicionales C / C ++ se realiza utilizando el preprocesador de macros y ifdefs. Escribirías código como:

#ifdef FULL_APP
  // unlimited size
  #define SIZE -1
#else
  #define SIZE 100
#endif

Cuando crea el programa, proporciona las definiciones de macro apropiadas en la línea de comando del compilador.

gcc program.cc -o program.o -DFULL_APP

Puede usar la compilación condicional y el preprocesador de macros de varias maneras para activar o desactivar varias funciones en el ejecutable o modificar otros aspectos de su programa.

También vale la pena señalar que si un usuario decide actualizar a la versión completa, si no tiene algún mecanismo para transferir los datos existentes, es probable que vea una reacción negativa de sus usuarios. Si el contenido de los datos es pequeño y puede representarse principalmente por texto, sugeriría implementar un esquema de URL para pasarlo.

Cree un nuevo proyecto, luego haga que haga referencia (no cree una copia local) de los mismos archivos de origen que el proyecto original.

¿Hay alguna razón (específica para iPhone) por la que necesita tener diferentes bases de datos SQLite para ambas versiones de su aplicación?

De lo contrario, podría implementar un mecanismo de licencia con claves intercambiables que le permitiera compilar sus bases de códigos individuales con solo un archivo modificado. En tiempo de ejecución, su aplicación verificará ese archivo y permitirá un almacenamiento reducido o ilimitado. Un beneficio adicional (si la tienda de iPhone admite tales cosas) sería que sería muy simple desbloquear la versión completa sin perder datos.

Por supuesto, tal solución podría dañar su negocio si sus clientes son expertos en tecnología y malignos y su código es fácil de descompilar.

He explorado esto y parece que hacer una descarga de una versión de prueba y actualizarlo a través de la web viola los términos de la tienda de aplicaciones. Parece que realmente necesitará dos versiones separadas de la aplicación en la tienda. (haciendo referencia a la entrada de Ben Gottlieb). Entonces, una fuente, dos distribuciones.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top