Android Build Engineering @ Airbnb

7fd4ba468da56bb5330a6352c1b54f52?s=47 felipecsl
November 12, 2016

Android Build Engineering @ Airbnb

7fd4ba468da56bb5330a6352c1b54f52?s=128

felipecsl

November 12, 2016
Tweet

Transcript

  1. Android Build Engineering @ Airbnb FELIPE LIMA / @FELIPECSL /

    NOV 10, 2016 / CODEPATH
  2. Team scaling

  3. • Tripled in 1 year • Migrated to a monorepo

    • More code, slower builds Team Scaling
  4. React Native

  5. React Native • Development Environment • Seamless build integration •

    Production crashes • Learning curve
  6. Build Engineering

  7. Build Engineering • Debug builds with 200K+ methods • Almost

    10 min. clean builds • Poor parallelization • Multidex issues
  8. Buck

  9. • 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
  10. 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.
  11. 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).
  12. Questions?

  13. Thanks!