studio - Buck vs Gradle, pro y contras para los sistemas de compilación de Android
flavordimensions (4)
A largo plazo, el nuevo sistema de compilación de Gradle será el estándar, y se ve muy bien. Sin embargo, parece que todavía no está listo para usar en proyectos que no sean de trival. Por ejemplo, parece que todavía no es compatible con las dependencias apklib.
Esto es comprensible, y se refleja en el hecho de que la versión actual es 0.3. Espero verla evolucionar.
Para un proyecto que debe ser construido hoy, usaría Maven. En realidad, estoy en el proceso de trasladar la compilación de un cliente de Eclipse, solo a Maven en este momento, para que puedan tener un proceso de compilación repetible, una buena gestión de la dependencia e IC. La nueva construcción de Gradle parece que será más flexible, pero en este momento Maven maneja apklibs. Como Gradle puede usar dependencias de Maven, espero que podamos pasar de Maven a Gradle fácilmente en el futuro.
No sé nada de Buck. Sin embargo, eso en sí mismo es una bandera roja. Dudo en utilizar un sistema de construcción del que pocas personas saben algo. Eso no quiere decir que no sea bueno, puede ser genial. Pero usarlo ahora es probablemente una apuesta.
Actualmente estoy usando Ant para construir proyectos de Android, pero simplemente no se reduce a proyectos más grandes y mantener diferentes entregables se está convirtiendo en un dolor.
Dos alternativas que estoy viendo son Buck de Facebook ( http://facebook.github.io/buck/ ) y Gradle que Google respalda con el estudio de Android ( http://tools.android.com/tech-docs/new- build-system / user-guide ).
Además de probarlos y leer su cobertura, me gustaría preguntarle a la gente de Stackoverflow por sus recomendaciones. Preferiblemente si ha utilizado alguna de las herramientas por un tiempo, con puntos de bonificación para Buck ya que no recibió tanta cobertura.
Los puntos importantes son
- velocidad de compilación, específicamente para compilaciones de desarrollo
- múltiples entregas de la misma base de código
- facilidad de uso
Estoy abierto a otras alternativas también. ¿Qué sugieres y por qué?
Como destaco en la documentación de Buck : "Buck es un sistema de compilación para Android que fomenta la creación de pequeños módulos reutilizables que constan de código y recursos".
Por diseño, Buck lo alienta a crear pequeños módulos para que pueda componer fácilmente una nueva aplicación a partir de sus bloques de construcción existentes. Esto significa que mantener múltiples entregables es sencillo: elimina el texto estándar sin que sea necesario que organice su repositorio en una estructura predefinida. También puede crear pasos de compilación ad-hoc para satisfacer sus necesidades con Buck a través de macros y genrules. (Se está trabajando en un sistema de extensión más formalizado).
También nos preocupamos mucho por la velocidad, particularmente la velocidad de construcciones incrementales. Debido a que Buck tiene un fuerte concepto de dependencias, a menudo podemos evitar la reconstrucción de artefactos intermedios. Otros sistemas de compilación también intentan hacer esto (como Ant), pero a menudo sacrifican la corrección como resultado. Nosotros no.
Reconocemos que el soporte de IDE es importante. Ciertamente, la colaboración de Google con Gradle les da una ventaja allí. Sin embargo, Buck tiene un comando para generar un proyecto IntelliJ a partir del gráfico de dependencia definido en los archivos de compilación Buck, y hemos comenzado a trabajar en nuestro propio plugin IntelliJ, por lo que también nos preocupamos profundamente.
Finalmente, tenga en cuenta que Buck se usa para crear Facebook, Facebook Messenger e Instagram para Android. Buck no se va a ir. Además, el código para las tres aplicaciones (y versiones reducidas de las aplicaciones, para ciclos de desarrollo aún más rápidos) vive en un repositorio de Git en Facebook, por lo que los que trabajamos en Buck internamente somos sensibles a las necesidades de grandes bases de código que admiten múltiples entregas .
Agregaría las siguientes ventajas de Buck:
- Exopackage , es decir, compilación de apk incremental; simplemente revisa la tabla con el tiempo de compilación en esa página
- Caché de red Si tienes varios desarrolladores trabajando con una aplicación, no necesitarás reconstruir componentes que ya han sido creados por otros desarrolladores.
Aquí hay un complemento de Gradle, OkBuck, que puede permitirle comenzar a usar BUCK base en su actual sistema de compilación Android Studio + Gradle con solo 10 líneas de configuración. Echale un vistazo.
OkBuck puede permitirle construir su proyecto tanto con gradle como con buck, con todas las ventajas de gradle y buck.