Slide 1

Slide 1 text

Android Build Engineering @ Airbnb FELIPE LIMA / @FELIPECSL / NOV 10, 2016 / CODEPATH

Slide 2

Slide 2 text

Team scaling

Slide 3

Slide 3 text

• Tripled in 1 year • Migrated to a monorepo • More code, slower builds Team Scaling

Slide 4

Slide 4 text

React Native

Slide 5

Slide 5 text

React Native • Development Environment • Seamless build integration • Production crashes • Learning curve

Slide 6

Slide 6 text

Build Engineering

Slide 7

Slide 7 text

Build Engineering • Debug builds with 200K+ methods • Almost 10 min. clean builds • Poor parallelization • Multidex issues

Slide 8

Slide 8 text

Buck

Slide 9

Slide 9 text

• Mature: Created by and actively maintained by Facebook. • Speed: Focused on performance. Highly concurrent. • Caching: Aggressive caching, supports remote cache server. • Simple: Rely on small and self contained modules. Enter Buck A new hope for Android

Slide 10

Slide 10 text

Challenges • Caching: Hard to debug. Hidden changes invalidate cache keys. • Modularity: Obscure issues with annotation processors, harder to figure out code dependencies. • Configuration: Verbose, hard to parse and understand. • Dependency resolution: No automatic dependency download. Needs to be available locally. • Adoption: Requires many changes to the codebase.

Slide 11

Slide 11 text

Adoption • OkBuck: A lifesaver. Uses Gradle's project model to generate BUCK configuration files. • Traction: Recently being adopted by many companies like Airbnb, Uber and Lyft. • Supported Features: Most popular libraries supported (Retrolambda, ButterKnife, Sqldelight, etc).

Slide 12

Slide 12 text

Questions?

Slide 13

Slide 13 text

Thanks!