2011-03-26 6 views
14

Tengo una aplicación para Android que viene en dos formas: una versión de prueba y una versión "pro" de pago. Las dos versiones conviven en Android Market y tienen diferentes nombres de paquetes (llamémosles com.app.trial y com.app.pro). Comparten la misma base de código. Cuando tengo que cambiar entre compilaciones de prueba y pro en Eclispe, debo pasar no menos de 20 minutos cada vez que edito el código para hacerlo construir la versión correcta. Mi procedimiento es el siguiente:Conmutación de versiones de prueba y prueba con aplicaciones de Android en Eclipse: ¿cómo hacer que sea menos doloroso?

  1. Renombrar el nombre del paquete en AndroidManifest.xml (también cambiar el nombre de la aplicación nombre de la versión, y versionCode).

  2. Haga clic en el nombre del paquete principal "com.app.pro" (si pro fue la última versión y ahora quiero hacer una versión de prueba) y seleccione Refactor-> Cambiar nombre (marque 'Actualizar referencias' y 'Cambiar nombre de subpaquetes ') y deja que Eclipse cambie el nombre.

  3. Después de esto viene la parte difícil: en mi código muchos archivos importan el "viejo" nombre del paquete, "com.app.pro" en lugar de ser cambiado automáticamente a "com.app.trial". En algunos casos, Eclipse agrega esas referencias durante el cambio de nombre, sin razones aparentes (no hay referencias a este paquete específico dentro de un archivo Java dado). Tengo que editar manualmente todas las instancias.

Mi pregunta es:

¿Cómo puedo hacer este procedimiento consume menos tiempo? También he estado usando NetBeans, donde hay un soporte útil para #ifdefs (también conocido como Habilidades) que realmente hace que cambiar entre compilaciones sea muy fácil. Desafortunadamente, Eclipse no tiene soporte (al menos, no es compatible con el buil-in) para #ifdefs.

Cualquier sugerencia sería muy apreciada.

P.S. Para la referencia estoy usando Eclipse Ganymede versión 3.4.2 pero también probé una versión más nueva, hace lo mismo.

+0

he publicado un paso por la respuesta de paso en otro hilo aquí: [El mantenimiento de las versiones libres y pro de una aplicación] [1] [1]: http://stackoverflow.com/questions/2529062/maintaining-both-free-and-pro-versions-of-an-application – ProgMasta

Respuesta

22

Una gran solución para esto es dividir sus aplicaciones en tres proyectos:

  • Una library project, que contendrá todo el código común
    • realidad, creando dos versiones (Lite y pagados) de una aplicación es uno de los escenarios comunes esta página está hablando ;-)
  • Un proyecto para la versión de prueba,
  • y un proyecto para la versión pro.

Cada ensayo y la versión Pro:

  • referencia el proyecto de biblioteca (que contiene casi todo el código)
  • definir lo que es específico para el juicio o pro versión (como manifiesto, algunas cadenas, algunos códigos adicionales, ...)

Con eso, la construcción de la prueba o la versión Pro es tan simple como la construcción de un proyecto, o la otra: no hay necesidad de cambiar nada!


Un par de enlaces que podría ayudar:

+0

Es una opción, pero estaba buscando sugerencias sobre cómo hacer Eclipse cambie el nombre de las declaraciones de importación cuando realice la refactorización. Esto es lo que esperaba que sucediera, pero no tuve suerte. – antonio

+0

Bueno, una vez que se establece el proyecto de biblioteca, no hay necesidad de refacturar nada cada vez que desee construir uno de los proyectos de aplicaciones; en el peor de los casos, tendrá que buscar y reemplazar una vez cuando configure el proyecto de la biblioteca * (Entonces, un poco de dolor una vez, tal vez te llevará media hora, arriba) * ;; pero, después de eso, solo construye cada proyecto que haga referencia a la biblioteca ;-) * (Estoy haciendo esto para un proyecto mío, y funciona bastante bien: construir cada proyecto de aplicación es cuestión de un par de clics, y no tiene que cambiarle el nombre a nada) * –

Cuestiones relacionadas