Tengo una aplicación paga en el mercado de Android, sin embargo, quiero lanzar una versión gratuita con publicidad.
La forma más fácil en que pensé hacer esto fue configurar una rama en mi repositorio de subversión que tenga el código adicional para agregar los anuncios. Sin embargo, cuando fui a enviar esto al mercado de Android, requieren nombres de paquete únicos. Esta solución ya no me funciona porque tendría que cambiar el paquete de cada archivo de clase, lo que dificultaría mucho la fusión del tronco y la rama.
¿Cuál es la mejor manera en que puedo mantener estos dos proyectos juntos, compartiendo parches, pero con un paquete diferente?
version-control
android
svn
Malfist
fuente
fuente
Respuestas:
¿Has considerado las directivas del compilador ?
Ejemplo:
Puede mantener exactamente la misma base de código y apuntar a las dos compilaciones utilizando dos scripts de compilación separados o uno parametrizable.
Para hacerlo con Java, lea esto y esto . Y tal vez esto .
fuente
Solo su paquete de solicitud debe ser único. Ver aquí . Ese es el paquete declarado en su archivo de manifiesto. Puede tener la mayor parte de su código
com.mydomain.myapp
y solo tener una actividad principal diferentecom.mydomain.myapp.free
.fuente
Si realmente quiere hacerlo por separado, la mejor manera es configurarlo como dos partes del mismo repositorio. De esa manera, al menos puede combinar cambios en las diferentes ramas. Si desea mantener las cosas completamente separadas, entonces estará haciendo muchos archivos de parches schlepping.
He hecho esto y, francamente, no es una gran estrategia en la práctica. Mucho mejor, especialmente en entornos compilados, es tener un proceso de compilación separado de forma gratuita versus de pago, por lo que hay una base de código en lugar de dos. Si hay dos bases de código cosas se separan.
fuente
El control de versiones es una forma pobre de administrar cosas como esta. Terminará con una pesadilla de mantenimiento: dos aplicaciones separadas que deben ser casi idénticas.
¿Has considerado una solución de proyectos múltiples? (Caveot: en realidad no he hecho esto, pero parece factible, y creo que Android lo permitirá. Lo intentaré más tarde y veré con seguridad). Compile todo el código de su aplicación en un frasco de proyecto principal . Luego, cree dos aplicaciones de Android separadas, una para su versión paga y otra para la versión gratuita. Esto resolverá su problema de nomenclatura de paquetes. Estas aplicaciones simplemente delegarán en el archivo jar principal para casi todo, excepto que su versión de anuncio incluirá el código para admitir los anuncios.
También puede encontrar interesante esta discusión sobre un tema similar .
fuente
Construir su aplicación utilizando un
feature toggle
le permitiría alcanzar su objetivo, pero es posible que deba modificar mucho código.Al definir 2 (recomendaría 3) entorno de contenedor de características en un archivo .ini como:
De esta manera, tiene una versión que es uniforme y requiere solo una rama en su fuente de control de versiones
En sus scripts específicos, debe verificar si la función está autorizada; de lo contrario, no la mostrará.
fuente