2012-03-14 8 views
6

Tengo una aplicación de Android mavenizada y el cliente quiere soporte para el skinning en tiempo de compilación.Aplicación Skinning para Android con perfiles de construcción Maven

Por ejemplo: mvn instalación limpia desarrollador -P, mvn instalación limpia -P Customer1, mvn instalación limpia -P Customer2

En otras palabras, diferentes necesidades de los clientes poco diferente conjunto de imágenes, diferentes cadenas (appName, copyright, etc.) y también, algunos de los elementos en los diseños deben ocultarse o mostrarse (perfil de Desarrollador), por lo que los diseños también son diferentes.

Mi primer pensamiento fue tener carpetas como res-customer1, res-customer2 en paralelo con el directorio de res estándar y hacer el intercambio en la definición de perfil en pom.xml, también cambiarle el nombre a res, pero eso no parece trabajo. Siempre obtengo una carpeta de res original en la compilación y en este caso, se duplica el error.

¿Esto significa que el intercambio debe tener lugar dentro de la res? No especifiqué resourceDirectory en la configuración de android maven plugin.

He estado buscando en Google mucho, pero hasta ahora, no encontré a nadie con el mismo problema. ¿Cómo resolverlo? ¿Hay algún patrón general para eso?

Muchas gracias de antemano

+1

¿Ha intentado realmente ify resourceDirectory en la configuración de android maven en cada perfil? por ejemplo, $ {project.basedir}/res-custom1. Esto debería funcionar como esperabas. – yorkw

+0

Estoy trabajando en eso, parece que tienes razón, amigo mío. Volveré con una respuesta definitiva, pero muchas muchas gracias. – MartinC

+0

OK, funciona, hiciste mi día, yorkw :) Muchas gracias. – MartinC

Respuesta

1

Si desea utilizar diferentes bienes o recursos para diferentes perfiles BUID y si aún desea combinar múltiples tales guías acerca de cada generación de otra manera, puede seguir esta gran entrada de blog: especificación

https://ebuddytechblog.wordpress.com/2013/04/08/branded-android-builds-using-maven/

+0

Gracias, voy a echar un vistazo – MartinC

+0

@Blackhex Link ya no parece válido: ¡Advertencia! No se encontró actualización de mapeo de dominio para este dominio. Inicie sesión y vaya a la página de Mejoras de dominios de su blog para usar este dominio. – NightSkyDev

+0

Enlace actualizado, gracias por notificar. – Blackhex

6

En base a la respuesta de yorkw, esta solución funciona para mí:

Para cada perfil, resourceDirectory necesita ser añadido a la configuración del plugin Maven androide.

Por ejemplo:

<resourceDirectory>${project.basedir}/res-customer1</resourceDirectory> <resourceDirectory>${project.basedir}/res-customer2</resourceDirectory>

etc ...

+0

¿Es posible tener directorios múltiples de recursos y activos que se fusionarán automáticamente como en Gradle? – Blackhex

+0

¡Lo es! Vea mi respuesta a esta pregunta. – Blackhex

Cuestiones relacionadas