Gestionar diferentes proyectos de Android en el mismo repository de GIT

Tengo un problema bastante organizacional en mi proyecto: estoy construyendo una aplicación de Android usando Eclipse (lo sé, desactualizado, complemento ADT … pero eso no es la causa del problema). El problema es que la aplicación en la que estoy trabajando debe organizarse como personalizable, es decir, un código, con pequeñas diferencias para diferentes aplicaciones para diferentes clientes. Por ejemplo, una twig contiene la versión de la aplicación para el cliente A en el package: com.company. Un mismo código, la versión para otra empresa, está en el espacio de nombre del package com.B.weanetworkingifferentcompany

Tengo que usar diferentes espacios de nombres, ya que esas 2 aplicaciones serán aplicaciones distintivas en el mercado, cada una con su propio sistema GCM independiente.

El problema es que si hago un pequeño cambio en una class y trato de fusionar ese cambio con la base de código para esas 2 twigs, estoy obteniendo un problema de "todo el proyecto está en conflicto" porque, naturalmente, todo el tree de packages tiene un nombre diferente.

¿Tienes alguna idea sobre cómo superar este problema? El principio principal que tengo que seguir es que debería usar el mismo código para build varias (aparentemente) diferentes aplicaciones.

La solución es simple.

  1. Migre su proyecto a Android Studio.

  2. Configure su proyecto para build con Gradle. Esto requerirá la configuration de directorys src del proyecto, especifique sus signingConfigs. Tal vez otros detalles de acuerdo a las dependencies de su proyecto.

  3. Configura diferentes sabores de compilation.

Definitivamente recomendaría este libro para hacer esto. Gradle para Android

Pude migrar mi base de código de eclipse a Android Studio y configurar sabores de productos. Obtenga información sobre la fusión del Código fuente. Completé esa tarea en 3 días con un proyecto de más de 40k LOC.

No dude en solicitar detalles cuando llegue allí.

Buena suerte.

¿Ves cómo hay un directory principal, greenTheme, blueTheme? Cada directory puede tener su contenido en AndroidManifest, carpeta res, carpeta java. De esta forma, todo tu código reside en un proyecto. El objective para usted sería migrar ambos proyectos a directorys separados como este. A continuación, coloque las classs Java correspondientes en cada carpeta java respectiva.

Gradle es lo suficientemente inteligente como para saber qué combinar en la carpeta principal desde allí. Ese es otro tema, pero siempre que especifiques los sabores del producto correctamente, debería ser posible en el time que establecí.

La última cosa interesante es que esta configuration solo requiere un flujo de trabajo de compilation para generar varios apk.

Muestra